0
0
mirror of https://github.com/mpv-player/mpv.git synced 2024-09-20 12:02:23 +02:00

fix compilation for win32 dll codec support for intel osx

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@21306 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
nplourde 2006-11-27 02:44:06 +00:00
parent d4e86e6a11
commit fc59977ac9
7 changed files with 43 additions and 16 deletions

View File

@ -1924,6 +1924,11 @@ static char help_text[]=
"[VO_XV] See 'mplayer -vo help' for other (non-xv) video out drivers.\n"\ "[VO_XV] See 'mplayer -vo help' for other (non-xv) video out drivers.\n"\
"[VO_XV] Try -vo x11.\n" "[VO_XV] Try -vo x11.\n"
// loader/ldt_keeper.c
#define MSGTR_LOADER_DYLD_Warning "WARNING: Attempting to use DLL codecs but environment variable DYLD_BIND_AT_LAUNCH not set.\nThis will likely crash.\n"
// stream/stream_radio.c // stream/stream_radio.c
#define MSGTR_RADIO_ChannelNamesDetected "[radio] Radio channel names detected.\n" #define MSGTR_RADIO_ChannelNamesDetected "[radio] Radio channel names detected.\n"

View File

@ -8,7 +8,12 @@ CFLAGS= -Idshow -DMPLAYER -D__WINE__ -DNOAVIFILE_HEADERS
SRCS= driver.c afl.c vfl.c SRCS= driver.c afl.c vfl.c
ifneq ($(TARGET_WIN32),yes) ifneq ($(TARGET_WIN32),yes)
SRCS+= ldt_keeper.c pe_image.c module.c ext.c win32.c \ SRCS+= ldt_keeper.c pe_image.c module.c ext.c win32.c \
pe_resource.c resource.c registry.c elfdll.c wrapper.S stubs.s pe_resource.c resource.c registry.c elfdll.c stubs.S
endif
# QTX emulation is not supported in Darwin
ifneq ($(TARGET_OS),Darwin)
SRCS+= wrapper.S
endif endif
SRCS+= dshow/DS_AudioDecoder.c \ SRCS+= dshow/DS_AudioDecoder.c \

View File

@ -29,6 +29,8 @@
#include <stdio.h> #include <stdio.h>
#include <unistd.h> #include <unistd.h>
#include "osdep/mmap_anon.h" #include "osdep/mmap_anon.h"
#include "mp_msg.h"
#include "help_mp.h"
#ifdef __linux__ #ifdef __linux__
#include <asm/unistd.h> #include <asm/unistd.h>
#include <asm/ldt.h> #include <asm/ldt.h>
@ -103,8 +105,9 @@ struct modify_ldt_ldt_s {
#define LDT_SEL(idx) ((idx) << 3 | 1 << 2 | 3) #define LDT_SEL(idx) ((idx) << 3 | 1 << 2 | 3)
/* i got this value from wine sources, it's the first free LDT entry */ /* i got this value from wine sources, it's the first free LDT entry */
#if defined(__FreeBSD__) && defined(LDT_AUTO_ALLOC) #if (defined(__APPLE__) || defined(__FreeBSD__)) && defined(LDT_AUTO_ALLOC)
#define TEB_SEL_IDX LDT_AUTO_ALLOC #define TEB_SEL_IDX LDT_AUTO_ALLOC
#define USE_LDT_AA
#endif #endif
#ifndef TEB_SEL_IDX #ifndef TEB_SEL_IDX
@ -168,7 +171,7 @@ static int LDT_Modify( int func, struct modify_ldt_ldt_s *ptr,
#endif #endif
#endif #endif
#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) #if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__APPLE__)
static void LDT_EntryToBytes( unsigned long *buffer, const struct modify_ldt_ldt_s *content ) static void LDT_EntryToBytes( unsigned long *buffer, const struct modify_ldt_ldt_s *content )
{ {
*buffer++ = ((content->base_addr & 0x0000ffff) << 16) | *buffer++ = ((content->base_addr & 0x0000ffff) << 16) |
@ -195,6 +198,11 @@ ldt_fs_t* Setup_LDT_Keeper(void)
if (!ldt_fs) if (!ldt_fs)
return NULL; return NULL;
#ifdef __APPLE__
if (getenv("DYLD_BIND_AT_LAUNCH") == NULL)
mp_msg(MSGT_LOADER, MSGL_WARN, MSGTR_LOADER_DYLD_Warning);
#endif /* __APPLE__ */
fs_seg= fs_seg=
ldt_fs->fs_seg = mmap_anon(NULL, getpagesize(), PROT_READ | PROT_WRITE, MAP_PRIVATE, 0); ldt_fs->fs_seg = mmap_anon(NULL, getpagesize(), PROT_READ | PROT_WRITE, MAP_PRIVATE, 0);
if (ldt_fs->fs_seg == (void*)-1) if (ldt_fs->fs_seg == (void*)-1)
@ -223,12 +231,12 @@ ldt_fs_t* Setup_LDT_Keeper(void)
} }
#endif /*linux*/ #endif /*linux*/
#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) #if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__APPLE__)
{ {
unsigned long d[2]; unsigned long d[2];
LDT_EntryToBytes( d, &array ); LDT_EntryToBytes( d, &array );
#if defined(__FreeBSD__) && defined(LDT_AUTO_ALLOC) #ifdef USE_LDT_AA
ret = i386_set_ldt(LDT_AUTO_ALLOC, (union descriptor *)d, 1); ret = i386_set_ldt(LDT_AUTO_ALLOC, (union descriptor *)d, 1);
array.entry_number = ret; array.entry_number = ret;
fs_ldt = ret; fs_ldt = ret;
@ -245,7 +253,7 @@ ldt_fs_t* Setup_LDT_Keeper(void)
#endif #endif
} }
} }
#endif /* __NetBSD__ || __FreeBSD__ || __OpenBSD__ || __DragonFly__ */ #endif /* __NetBSD__ || __FreeBSD__ || __OpenBSD__ || __DragonFly__ || __APPLE__ */
#if defined(__svr4__) #if defined(__svr4__)
{ {

View File

@ -10,7 +10,9 @@
*/ */
// define for quicktime calls debugging and/or MacOS-level emulation: // define for quicktime calls debugging and/or MacOS-level emulation:
#ifndef __APPLE__
#define EMU_QTX_API #define EMU_QTX_API
#endif /* __APPLE__ */
// define for quicktime debugging (verbose logging): // define for quicktime debugging (verbose logging):
//#define DEBUG_QTX_API //#define DEBUG_QTX_API

View File

@ -1,8 +1,13 @@
#if defined(__APPLE__) || defined(__OpenBSD__)
# define SYM(x) _ ## x
#else
# define SYM(x) x
#endif
.data .data
.LC0: .string "Called unk_%s\n" .LC0: .asciz "Called unk_%s\n"
.balign 4 .p2align 4
.globl unk_exp1 .globl SYM(unk_exp1)
unk_exp1: SYM(unk_exp1):
pushl %ebp pushl %ebp
movl %esp,%ebp movl %esp,%ebp
subl $4,%esp subl $4,%esp
@ -14,16 +19,16 @@ unk_exp1:
subl %eax,%edx subl %eax,%edx
leal 0(,%edx,2),%eax leal 0(,%edx,2),%eax
movl %eax,%edx movl %eax,%edx
addl $export_names,%edx addl $SYM(export_names),%edx
pushl %edx pushl %edx
pushl $.LC0 pushl $.LC0
call printf call SYM(printf)
addl $8,%esp addl $8,%esp
xorl %eax,%eax xorl %eax,%eax
leave leave
ret ret
.globl exp_EH_prolog .globl SYM(exp_EH_prolog)
exp_EH_prolog: SYM(exp_EH_prolog):
pushl $0xff pushl $0xff
pushl %eax pushl %eax
pushl %fs:0 pushl %fs:0

View File

@ -1,9 +1,9 @@
#ifdef __WINE_PSHPACK_H #ifdef __WINE_PSHPACK_H
#undef __WINE_PSHPACK_H #undef __WINE_PSHPACK_H
#if defined(__GNUC__) || defined(__SUNPRO_C) #if (defined(__GNUC__) || defined(__SUNPRO_C)) && !defined(__APPLE__)
#pragma pack() #pragma pack()
#elif defined(__SUNPRO_CC) #elif defined(__SUNPRO_CC) || defined(__APPLE__)
#warning "Assumes default alignment is 4" #warning "Assumes default alignment is 4"
#pragma pack(4) #pragma pack(4)
#elif !defined(RC_INVOKED) #elif !defined(RC_INVOKED)

View File

@ -101,6 +101,8 @@ extern int verbose;
#define MSGT_ASS 43 // libass messages #define MSGT_ASS 43 // libass messages
#define MSGT_LOADER 44 // dll loader messages
#define MSGT_MAX 64 #define MSGT_MAX 64
void mp_msg_init(void); void mp_msg_init(void);