Mercurial > mplayer.hg
changeset 8012:a53966ed8afb
including source and precompiled .spec for libwine support
author | arpi |
---|---|
date | Thu, 31 Oct 2002 23:37:38 +0000 |
parents | d14d0530ddcd |
children | bd100a3d486f |
files | Makefile mplayer_wine.spec mplayer_wine.spec.c |
diffstat | 3 files changed, 185 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/Makefile Thu Oct 31 23:26:35 2002 +0000 +++ b/Makefile Thu Oct 31 23:37:38 2002 +0000 @@ -190,7 +190,7 @@ mplayer_wine.so: $(MPLAYER_DEP) ./darwinfixlib.sh $(MPLAYER_DEP) - $(CC) $(CFLAGS) -shared -Wl,-Bsymbolic -o mplayer_wine.so mplayer_wine.spec.o $(OBJS_MPLAYER) libvo/libvo.a libao2/libao2.a $(VIDIX_LIBS) $(GUI_LIBS) $(COMMON_LIBS) $(GTK_LIBS) $(VO_LIBS) $(AO_LIBS) $(EXTRA_LIB) $(LIRC_LIB) $(STATIC_LIB) -lwine $(ARCH_LIB) -lm + $(CC) $(CFLAGS) -shared -Wl,-Bsymbolic -o mplayer_wine.so mplayer_wine.spec.c $(OBJS_MPLAYER) libvo/libvo.a libao2/libao2.a $(VIDIX_LIBS) $(GUI_LIBS) $(COMMON_LIBS) $(GTK_LIBS) $(VO_LIBS) $(AO_LIBS) $(EXTRA_LIB) $(LIRC_LIB) $(STATIC_LIB) -lwine $(ARCH_LIB) -lm $(PRG_FIBMAP): fibmap_mplayer.o $(CC) -o $(PRG_FIBMAP) fibmap_mplayer.o
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mplayer_wine.spec Thu Oct 31 23:37:38 2002 +0000 @@ -0,0 +1,6 @@ +name mplayer_wine +mode cuiexe +type win32 + +import kernel32.dll +import ntdll.dll
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mplayer_wine.spec.c Thu Oct 31 23:37:38 2002 +0000 @@ -0,0 +1,178 @@ +/* File generated automatically from mplayer_wine.spec; do not edit! */ +/* This file can be copied, modified and distributed without restriction. */ + +extern char pe_header[]; +asm(".section .text\n\t" + ".align 4096\n" + "pe_header:\t.fill 4096,1,0\n\t"); +static const char dllname[] = "mplayer_wine"; + +extern int __wine_spec_exports[]; + +#define __stdcall __attribute__((__stdcall__)) + + +static struct { + struct { + void *OriginalFirstThunk; + unsigned int TimeDateStamp; + unsigned int ForwarderChain; + const char *Name; + void *FirstThunk; + } imp[3]; + const char *data[8]; +} imports = { + { + { 0, 0, 0, "kernel32.dll", &imports.data[0] }, + { 0, 0, 0, "ntdll.dll", &imports.data[5] }, + { 0, 0, 0, 0, 0 }, + }, + { + /* kernel32.dll */ + "\0\0ExitProcess", + "\0\0FreeLibrary", + "\0\0GetProcAddress", + "\0\0LoadLibraryA", + 0, + /* ntdll.dll */ + "\0\0RtlRaiseException", + "\0\0__wine_get_main_args", + 0, + } +}; + +#ifndef __GNUC__ +static void __asm__dummy_import(void) { +#endif + +asm(".data\n\t.align 8\n" + "\t.type ExitProcess,@function\n" + "\t.globl ExitProcess\n" + "ExitProcess:\n\tjmp *(imports+60)\n\tmovl %esi,%esi\n" + "\t.type FreeLibrary,@function\n" + "\t.globl FreeLibrary\n" + "FreeLibrary:\n\tjmp *(imports+64)\n\tmovl %esi,%esi\n" + "\t.type GetProcAddress,@function\n" + "\t.globl GetProcAddress\n" + "GetProcAddress:\n\tjmp *(imports+68)\n\tmovl %esi,%esi\n" + "\t.type LoadLibraryA,@function\n" + "\t.globl LoadLibraryA\n" + "LoadLibraryA:\n\tjmp *(imports+72)\n\tmovl %esi,%esi\n" + "\t.type RtlRaiseException,@function\n" + "\t.globl RtlRaiseException\n" + "RtlRaiseException:\n\tjmp *(imports+80)\n\tmovl %esi,%esi\n" + "\t.type __wine_get_main_args,@function\n" + "\t.globl __wine_get_main_args\n" + "__wine_get_main_args:\n\tjmp *(imports+84)\n\tmovl %esi,%esi\n" +".previous"); +#ifndef __GNUC__ +} +#endif + + +int _ARGC; +char **_ARGV; +extern void __stdcall ExitProcess(int); +static void __wine_exe_main(void) +{ + extern int main( int argc, char *argv[] ); + extern int __wine_get_main_args( char ***argv ); + _ARGC = __wine_get_main_args( &_ARGV ); + ExitProcess( main( _ARGC, _ARGV ) ); +} + +static const struct image_nt_headers +{ + int Signature; + struct file_header { + short Machine; + short NumberOfSections; + int TimeDateStamp; + void *PointerToSymbolTable; + int NumberOfSymbols; + short SizeOfOptionalHeader; + short Characteristics; + } FileHeader; + struct opt_header { + short Magic; + char MajorLinkerVersion, MinorLinkerVersion; + int SizeOfCode; + int SizeOfInitializedData; + int SizeOfUninitializedData; + void *AddressOfEntryPoint; + void *BaseOfCode; + void *BaseOfData; + void *ImageBase; + int SectionAlignment; + int FileAlignment; + short MajorOperatingSystemVersion; + short MinorOperatingSystemVersion; + short MajorImageVersion; + short MinorImageVersion; + short MajorSubsystemVersion; + short MinorSubsystemVersion; + int Win32VersionValue; + int SizeOfImage; + int SizeOfHeaders; + int CheckSum; + short Subsystem; + short DllCharacteristics; + int SizeOfStackReserve; + int SizeOfStackCommit; + int SizeOfHeapReserve; + int SizeOfHeapCommit; + int LoaderFlags; + int NumberOfRvaAndSizes; + struct { const void *VirtualAddress; int Size; } DataDirectory[16]; + } OptionalHeader; +} nt_header = { + 0x4550, + { 0x014c, + 0, 0, 0, 0, + sizeof(nt_header.OptionalHeader), + 0x0000 }, + { 0x010b, + 0, 0, + 0, 0, 0, + __wine_exe_main, + 0, 0, + pe_header, + 4096, + 4096, + 1, 0, + 0, 0, + 4, 0, + 0, + 4096, + 4096, + 0, + 0x0003, + 0, + 0, 0, + 0, 0, + 0, + 16, + { + { 0, 0 }, + { &imports, sizeof(imports) }, + { 0, 0 }, + } + } +}; + +#ifndef __GNUC__ +static void __asm__dummy_dll_init(void) { +#endif /* defined(__GNUC__) */ +asm("\t.section .init ,\"ax\"\n" + "\tcall __wine_spec_mplayer_wine_init\n" + "\t.previous\n"); +#ifndef __GNUC__ +} +#endif /* defined(__GNUC__) */ + +void __wine_spec_mplayer_wine_init(void) +{ + extern void __wine_dll_register( const struct image_nt_headers *, const char * ); + extern void *__wine_dbg_register( char * const *, int ); + __wine_dll_register( &nt_header, "mplayer_wine.exe" ); +}