native mode support for winebuild

Marcus Meissner marcus at jet.franken.de
Wed Feb 4 17:51:46 CST 2004


Hi,

This adds NT native mode dll generation.

Ciao, Marcus

Changelog:
	Added native mode dll generation.
	

Index: tools/winebuild/build.h
===================================================================
RCS file: /home/wine/wine/tools/winebuild/build.h,v
retrieving revision 1.47
diff -u -r1.47 build.h
--- tools/winebuild/build.h	3 Oct 2003 03:35:20 -0000	1.47
+++ tools/winebuild/build.h	4 Feb 2004 23:29:32 -0000
@@ -52,6 +52,7 @@
 
 typedef enum
 {
+    SPEC_MODE_NATIVE,
     SPEC_MODE_DLL,
     SPEC_MODE_GUIEXE,
     SPEC_MODE_CUIEXE,
Index: tools/winebuild/import.c
===================================================================
RCS file: /home/wine/wine/tools/winebuild/import.c,v
retrieving revision 1.55
diff -u -r1.55 import.c
--- tools/winebuild/import.c	28 Nov 2003 23:17:28 -0000	1.55
+++ tools/winebuild/import.c	4 Feb 2004 23:29:32 -0000
@@ -568,6 +568,7 @@
     /* add symbols that will be contained in the spec file itself */
     switch (SpecMode)
     {
+    case SPEC_MODE_NATIVE:
     case SPEC_MODE_DLL:
         break;
     case SPEC_MODE_GUIEXE:
Index: tools/winebuild/main.c
===================================================================
RCS file: /home/wine/wine/tools/winebuild/main.c,v
retrieving revision 1.49
diff -u -r1.49 main.c
--- tools/winebuild/main.c	3 Oct 2003 03:35:20 -0000	1.49
+++ tools/winebuild/main.c	4 Feb 2004 23:29:33 -0000
@@ -285,6 +285,7 @@
             else if (!strcmp( optarg, "cui" )) SpecMode = SPEC_MODE_CUIEXE;
             else if (!strcmp( optarg, "guiw" )) SpecMode = SPEC_MODE_GUIEXE_UNICODE;
             else if (!strcmp( optarg, "cuiw" )) SpecMode = SPEC_MODE_CUIEXE_UNICODE;
+            else if (!strcmp( optarg, "native" )) SpecMode = SPEC_MODE_NATIVE;
             else usage(1);
             break;
         case 'o':
Index: tools/winebuild/spec32.c
===================================================================
RCS file: /home/wine/wine/tools/winebuild/spec32.c,v
retrieving revision 1.74
diff -u -r1.74 spec32.c
--- tools/winebuild/spec32.c	15 Jan 2004 04:58:17 -0000	1.74
+++ tools/winebuild/spec32.c	4 Feb 2004 23:29:33 -0000
@@ -581,6 +581,26 @@
     characteristics = subsystem = 0;
     switch(SpecMode)
     {
+    case SPEC_MODE_NATIVE:
+        if (init_func) fprintf( outfile, "extern void %s();\n", init_func );
+        else
+        {
+            fprintf( outfile, "#ifdef __GNUC__\n" );
+            fprintf( outfile, "# ifdef __APPLE__\n" );
+            fprintf( outfile, "extern void DriverInit() __attribute__((weak_import));\n" );
+            fprintf( outfile, "# else\n" );
+            fprintf( outfile, "extern void DriverInit() __attribute__((weak));\n" );
+            fprintf( outfile, "# endif\n" );
+            fprintf( outfile, "#else\n" );
+            fprintf( outfile, "extern void DriverInit();\n" );
+            fprintf( outfile, "static void __asm__dummy_driverinit(void)" );
+            fprintf( outfile, " { asm(\".weak " __ASM_NAME("DriverInit") "\"); }\n" );
+            fprintf( outfile, "#endif\n" );
+	    init_func = "DriverInit";
+        }
+        characteristics = 0;
+        subsystem = IMAGE_SUBSYSTEM_NATIVE;
+        break;
     case SPEC_MODE_DLL:
         if (init_func)
             fprintf( outfile, "extern int __stdcall %s( void*, unsigned int, void* );\n\n", init_func );



More information about the wine-patches mailing list