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