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" );
+}