- Fix building on Linux.

svn path=/trunk/; revision=12346
This commit is contained in:
Filip Navara 2004-12-26 18:55:26 +00:00
parent 11d39be5b5
commit fe67fad88a
15 changed files with 296 additions and 66 deletions

View file

@ -8,7 +8,7 @@ OBJECTS = bin2res.o mkstemps.o
CLEAN_FILES = *.o bin2res$(EXE_POSTFIX) CLEAN_FILES = *.o bin2res$(EXE_POSTFIX)
HOST_CFLAGS = -I$(PATH_TO_TOP)/include/wine -I$(PATH_TO_TOP)/include -D__REACTOS__ -Wall -Werror HOST_CFLAGS = -I$(PATH_TO_TOP)/include/wine -D__REACTOS__ -Wall -Werror
bin2res.o: bin2res.c bin2res.o: bin2res.c
$(HOST_CC) -g $(HOST_CFLAGS) -c bin2res.c -o bin2res.o $(HOST_CC) -g $(HOST_CFLAGS) -c bin2res.c -o bin2res.o

View file

@ -21,7 +21,6 @@
*/ */
#include "config.h" #include "config.h"
#include "wine/port.h"
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
@ -32,6 +31,11 @@
#ifdef HAVE_SYS_PARAM_H #ifdef HAVE_SYS_PARAM_H
# include <sys/param.h> # include <sys/param.h>
#endif #endif
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
extern int mkstemps(char *template, int suffix_len);
static const char* help = static const char* help =
"Usage: bin2res [OPTIONS] <rsrc.rc>\n" "Usage: bin2res [OPTIONS] <rsrc.rc>\n"

View file

@ -17,7 +17,6 @@
Boston, MA 02111-1307, USA. */ Boston, MA 02111-1307, USA. */
#include "config.h" #include "config.h"
#include "wine/port.h"
#include <sys/types.h> #include <sys/types.h>
#include <stdlib.h> #include <stdlib.h>

View file

@ -22,7 +22,7 @@ OBJECTS = \
CLEAN_FILES = *.o $(TARGET) CLEAN_FILES = *.o $(TARGET)
HOST_CFLAGS = -D__USE_W32API -I$(PATH_TO_TOP)/include -I$(PATH_TO_TOP)/include/wine -I$(W32API_PATH)/include HOST_CFLAGS = -D__USE_W32API -I$(PATH_TO_TOP)/include/wine
%.o: %.c %.o: %.c
$(HOST_CC) $(HOST_CFLAGS) -c $< -o $@ $(HOST_CC) $(HOST_CFLAGS) -c $< -o $@

View file

@ -20,7 +20,6 @@
*/ */
#include "config.h" #include "config.h"
#include "wine/port.h"
#include <ctype.h> #include <ctype.h>
#include <fcntl.h> #include <fcntl.h>
@ -31,8 +30,7 @@
# include <unistd.h> # include <unistd.h>
#endif #endif
#include "windef.h" #include "winglue.h"
#include "winbase.h"
#include "build.h" #include "build.h"
struct import struct import

View file

@ -23,7 +23,6 @@
*/ */
#include "config.h" #include "config.h"
#include "wine/port.h"
#include <assert.h> #include <assert.h>
#include <stdio.h> #include <stdio.h>
@ -35,8 +34,7 @@
# include <getopt.h> # include <getopt.h>
#endif #endif
#include "windef.h" #include "winglue.h"
#include "winbase.h"
#include "build.h" #include "build.h"
int UsePIC = 0; int UsePIC = 0;

View file

@ -17,7 +17,6 @@
Boston, MA 02111-1307, USA. */ Boston, MA 02111-1307, USA. */
#include "config.h" #include "config.h"
#include "wine/port.h"
#include <sys/types.h> #include <sys/types.h>
#include <stdlib.h> #include <stdlib.h>

View file

@ -23,7 +23,6 @@
*/ */
#include "config.h" #include "config.h"
#include "wine/port.h"
#include <assert.h> #include <assert.h>
#include <ctype.h> #include <ctype.h>
@ -32,8 +31,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include "windef.h" #include "winglue.h"
#include "winbase.h"
#include "build.h" #include "build.h"
int current_line = 0; int current_line = 0;

View file

@ -23,7 +23,6 @@
*/ */
#include "config.h" #include "config.h"
#include "wine/port.h"
#include <ctype.h> #include <ctype.h>

View file

@ -19,7 +19,6 @@
*/ */
#include "config.h" #include "config.h"
#include "wine/port.h"
#include <ctype.h> #include <ctype.h>
#include <stdlib.h> #include <stdlib.h>
@ -37,8 +36,7 @@
#include <sys/mman.h> #include <sys/mman.h>
#endif #endif
#include "windef.h" #include "winglue.h"
#include "winbase.h"
#include "build.h" #include "build.h"
#define ALIGNMENT 2 /* alignment for resource data */ #define ALIGNMENT 2 /* alignment for resource data */

View file

@ -19,7 +19,6 @@
*/ */
#include "config.h" #include "config.h"
#include "wine/port.h"
#include <ctype.h> #include <ctype.h>
#include <stdlib.h> #include <stdlib.h>
@ -37,8 +36,7 @@
#include <sys/mman.h> #include <sys/mman.h>
#endif #endif
#include "windef.h" #include "winglue.h"
#include "winbase.h"
#include "build.h" #include "build.h"
/* Unicode string or integer id */ /* Unicode string or integer id */

View file

@ -23,7 +23,6 @@
*/ */
#include "config.h" #include "config.h"
#include "wine/port.h"
#include <assert.h> #include <assert.h>
#include <ctype.h> #include <ctype.h>

View file

@ -23,19 +23,14 @@
*/ */
#include "config.h" #include "config.h"
#include "wine/port.h"
#include <assert.h> #include <assert.h>
#include <ctype.h> #include <ctype.h>
#include <stdarg.h> #include <stdarg.h>
#include <string.h> #include <string.h>
#ifdef WIN32
#include "windef.h"
#include "winbase.h"
#else
#include "winglue.h" #include "winglue.h"
#endif
#define EXCEPTION_WINE_STUB 0x80000100 /* stub entry point called */ #define EXCEPTION_WINE_STUB 0x80000100 /* stub entry point called */
#define EH_NONCONTINUABLE 0x01 #define EH_NONCONTINUABLE 0x01

View file

@ -19,7 +19,6 @@
*/ */
#include "config.h" #include "config.h"
#include "wine/port.h"
#if !defined(WIN32) #if !defined(WIN32)
#undef strdup #undef strdup

View file

@ -1,11 +1,104 @@
Index: main.c --- build.h Thu Mar 25 07:35:37 2004
=================================================================== +++ build.h Sun Dec 26 19:03:46 2004
RCS file: /home/wine/wine/tools/winebuild/main.c,v @@ -185,6 +185,7 @@
retrieving revision 1.55 extern void BuildSpec32File( FILE *outfile, DLLSPEC *spec );
diff -u -r1.55 main.c extern void BuildDef32File( FILE *outfile, DLLSPEC *spec );
--- main.c 25 Mar 2004 00:40:52 -0000 1.55 extern void BuildDebugFile( FILE *outfile, const char *srcdir, char **argv );
+++ main.c 23 Sep 2004 20:38:14 -0000 +extern void BuildPedllFile( FILE *outfile, DLLSPEC *spec );
@@ -412,9 +412,7 @@
extern int parse_spec_file( FILE *file, DLLSPEC *spec );
extern int parse_def_file( FILE *file, DLLSPEC *spec );
--- import.c Thu Jul 29 07:35:19 2004
+++ import.c Sun Dec 26 19:05:00 2004
@@ -20,7 +20,6 @@
*/
#include "config.h"
-#include "wine/port.h"
#include <ctype.h>
#include <fcntl.h>
@@ -31,8 +30,7 @@
# include <unistd.h>
#endif
-#include "windef.h"
-#include "winbase.h"
+#include "winglue.h"
#include "build.h"
struct import
--- main.c Thu Mar 25 07:35:37 2004
+++ main.c Sun Dec 26 19:05:06 2004
@@ -23,7 +23,6 @@
*/
#include "config.h"
-#include "wine/port.h"
#include <assert.h>
#include <stdio.h>
@@ -35,8 +34,7 @@
# include <getopt.h>
#endif
-#include "windef.h"
-#include "winbase.h"
+#include "winglue.h"
#include "build.h"
int UsePIC = 0;
@@ -74,7 +72,8 @@
MODE_DEF,
MODE_DEBUG,
MODE_RELAY16,
- MODE_RELAY32
+ MODE_RELAY32,
+ MODE_PEDLL
};
static enum exec_mode_values exec_mode = MODE_NONE;
@@ -159,7 +158,8 @@
" --exe=NAME Build a .c file for the named executable\n"
" --debug [FILES] Build a .c file with the debug channels declarations\n"
" --relay16 Build the 16-bit relay assembly routines\n"
-" --relay32 Build the 32-bit relay assembly routines\n\n"
+" --relay32 Build the 32-bit relay assembly routines\n"
+" --pedll Build a .c file for PE dll\n\n"
"The mode options are mutually exclusive; you must specify one and only one.\n\n";
enum long_options_values
@@ -171,7 +171,8 @@
LONG_OPT_RELAY16,
LONG_OPT_RELAY32,
LONG_OPT_SUBSYSTEM,
- LONG_OPT_VERSION
+ LONG_OPT_VERSION,
+ LONG_OPT_PEDLL
};
static const char short_options[] = "C:D:F:H:I:K:L:M:N:d:e:f:hi:kl:m:o:r:w";
@@ -186,6 +187,7 @@
{ "relay32", 0, 0, LONG_OPT_RELAY32 },
{ "subsystem",1, 0, LONG_OPT_SUBSYSTEM },
{ "version", 0, 0, LONG_OPT_VERSION },
+ { "pedll", 1, 0, LONG_OPT_PEDLL },
/* aliases for short options */
{ "source-dir", 1, 0, 'C' },
{ "delay-lib", 1, 0, 'd' },
@@ -341,6 +343,11 @@
case LONG_OPT_VERSION:
printf( "winebuild version " PACKAGE_VERSION "\n" );
exit(0);
+ case LONG_OPT_PEDLL:
+ set_exec_mode( MODE_PEDLL );
+ spec_file_name = xstrdup( optarg );
+ set_dll_file_name( optarg, spec );
+ break;
case '?':
usage(1);
break;
@@ -412,9 +419,7 @@
switch (spec->type) switch (spec->type)
{ {
case SPEC_WIN16: case SPEC_WIN16:
@ -16,7 +109,7 @@ diff -u -r1.55 main.c
break; break;
case SPEC_WIN32: case SPEC_WIN32:
read_undef_symbols( argv ); read_undef_symbols( argv );
@@ -439,12 +437,10 @@ @@ -439,12 +444,15 @@
BuildDebugFile( output_file, current_src_dir, argv ); BuildDebugFile( output_file, current_src_dir, argv );
break; break;
case MODE_RELAY16: case MODE_RELAY16:
@ -25,39 +118,170 @@ diff -u -r1.55 main.c
+ fatal_error( "Win16 relays are not supported in ReactOS version of winebuild\n" ); + fatal_error( "Win16 relays are not supported in ReactOS version of winebuild\n" );
break; break;
case MODE_RELAY32: case MODE_RELAY32:
- if (argv[0]) fatal_error( "file argument '%s' not allowed in this mode\n", argv[0] );
- BuildRelays32( output_file );
+ fatal_error( "Win32 relays are not supported in ReactOS version of winebuild\n" ); + fatal_error( "Win32 relays are not supported in ReactOS version of winebuild\n" );
+ break;
+ case MODE_PEDLL:
if (argv[0]) fatal_error( "file argument '%s' not allowed in this mode\n", argv[0] );
- BuildRelays32( output_file );
+ if (!parse_input_file( spec )) break;
+ BuildPedllFile( output_file, spec );
break; break;
default: default:
usage(1); usage(1);
Index: spec32.c --- parser.c Sat Aug 28 07:35:50 2004
=================================================================== +++ parser.c Sun Dec 26 19:05:14 2004
RCS file: /home/wine/wine/tools/winebuild/spec32.c,v @@ -23,7 +23,6 @@
retrieving revision 1.83 */
diff -u -r1.83 spec32.c
--- spec32.c 15 Jul 2004 18:58:42 -0000 1.83 #include "config.h"
+++ spec32.c 23 Sep 2004 20:38:15 -0000 -#include "wine/port.h"
@@ -30,9 +30,15 @@
#include <assert.h>
#include <ctype.h>
@@ -32,8 +31,7 @@
#include <stdlib.h>
#include <string.h>
-#include "windef.h"
-#include "winbase.h"
+#include "winglue.h"
#include "build.h"
int current_line = 0;
--- relay.c Wed May 19 07:35:43 2004
+++ relay.c Sun Dec 26 19:04:48 2004
@@ -23,7 +23,6 @@
*/
#include "config.h"
-#include "wine/port.h"
#include <ctype.h>
--- res16.c Thu Feb 12 06:50:19 2004
+++ res16.c Sun Dec 26 19:05:20 2004
@@ -19,7 +19,6 @@
*/
#include "config.h"
-#include "wine/port.h"
#include <ctype.h>
#include <stdlib.h>
@@ -37,8 +36,7 @@
#include <sys/mman.h>
#endif
-#include "windef.h"
-#include "winbase.h"
+#include "winglue.h"
#include "build.h"
#define ALIGNMENT 2 /* alignment for resource data */
--- res32.c Wed Sep 8 07:35:21 2004
+++ res32.c Sun Dec 26 19:05:26 2004
@@ -19,7 +19,6 @@
*/
#include "config.h"
-#include "wine/port.h"
#include <ctype.h>
#include <stdlib.h>
@@ -37,8 +36,7 @@
#include <sys/mman.h>
#endif
-#include "windef.h"
-#include "winbase.h"
+#include "winglue.h"
#include "build.h"
/* Unicode string or integer id */
--- spec16.c Wed May 19 07:35:43 2004
+++ spec16.c Sun Dec 26 19:04:48 2004
@@ -23,7 +23,6 @@
*/
#include "config.h"
-#include "wine/port.h"
#include <assert.h>
#include <ctype.h>
--- spec32.c Fri Jul 16 07:35:18 2004
+++ spec32.c Sun Dec 26 19:05:36 2004
@@ -23,16 +23,17 @@
*/
#include "config.h"
-#include "wine/port.h"
#include <assert.h>
#include <ctype.h>
#include <stdarg.h> #include <stdarg.h>
#include <string.h> #include <string.h>
+#ifdef WIN32 -#include "windef.h"
#include "windef.h" -#include "winbase.h"
#include "winbase.h"
-#include "wine/exception.h" -#include "wine/exception.h"
+#else
+#include "winglue.h" +#include "winglue.h"
+#endif +
+#define EXCEPTION_WINE_STUB 0x80000100 /* stub entry point called */ +#define EXCEPTION_WINE_STUB 0x80000100 /* stub entry point called */
+#define EH_NONCONTINUABLE 0x01 +#define EH_NONCONTINUABLE 0x01
+ +
#include "build.h" #include "build.h"
@@ -886,7 +892,10 @@ @@ -845,12 +846,10 @@
int is_data = 0;
if (!odp) continue;
- if (odp->flags & FLAG_REGISTER) continue;
- if (odp->type == TYPE_STUB) continue;
-
if (odp->name) name = odp->name;
+ else if (odp->type == TYPE_STUB) name = make_internal_name( odp, spec, "stub" );
else if (odp->export_name) name = odp->export_name;
- else continue;
+ else name = make_internal_name( odp, spec, "noname_export" );
fprintf(outfile, " %s", name);
@@ -880,13 +879,42 @@
}
break;
}
+ case TYPE_STUB:
+ {
+ if (!kill_at)
+ {
+ const char *check = name + strlen(name);
+ while (name != check &&
+ '0' <= check[-1] && check[-1] <= '9')
+ {
+ check--;
+ }
+ if (name != check && check != name + strlen(name) &&
+ '@' == check[-1])
+ {
+ fprintf(outfile, "%s", check - 1);
+ }
+ }
+ if (NULL != odp->name)
+ {
+ fprintf(outfile, "=%s", make_internal_name( odp, spec, "stub" ));
+ }
+ break;
+ }
default:
assert(0);
}
fprintf( outfile, " @%d", odp->ordinal ); fprintf( outfile, " @%d", odp->ordinal );
+#if 0 /* MinGW binutils cannot handle this correctly */
if (!odp->name) fprintf( outfile, " NONAME" ); if (!odp->name) fprintf( outfile, " NONAME" );
+#else
+ if (!odp->name && (odp->type == TYPE_STUB || odp->export_name)) fprintf( outfile, " NONAME" );
+#endif
if (is_data) fprintf( outfile, " DATA" ); if (is_data) fprintf( outfile, " DATA" );
+#if 0 +#if 0
+ /* MinGW binutils cannot handle this correctly */ + /* MinGW binutils cannot handle this correctly */
@ -66,21 +290,43 @@ diff -u -r1.83 spec32.c
fprintf( outfile, "\n" ); fprintf( outfile, "\n" );
} }
} }
Index: utils.c @@ -984,4 +1012,25 @@
=================================================================== "}\n", prefix );
RCS file: /home/wine/wine/tools/winebuild/utils.c,v
retrieving revision 1.20
diff -u -r1.20 utils.c
--- utils.c 25 Mar 2004 00:40:52 -0000 1.20
+++ utils.c 23 Sep 2004 20:38:15 -0000
@@ -21,6 +21,10 @@
#include "config.h"
#include "wine/port.h"
free( prefix );
+}
+
+
+/*******************************************************************
+ * BuildPedllFile
+ *
+ * Build a PE DLL C file from a spec file.
+ */
+void BuildPedllFile( FILE *outfile, DLLSPEC *spec )
+{
+ int nr_exports;
+
+ nr_exports = spec->base <= spec->limit ? spec->limit - spec->base + 1 : 0;
+ output_standard_file_header( outfile );
+
+ if (nr_exports)
+ {
+ /* Output the stub functions */
+
+ output_stub_funcs( outfile, spec );
+ }
}
--- winebuild/utils.c Thu Mar 25 07:35:37 2004
+++ winebuild/utils.c Sun Dec 26 19:04:48 2004
@@ -19,7 +19,10 @@
*/
#include "config.h"
-#include "wine/port.h"
+
+#if !defined(WIN32) +#if !defined(WIN32)
+#undef strdup +#undef strdup
+#endif +#endif
+
#include <ctype.h> #include <ctype.h>
#include <stdarg.h> #include <stdarg.h>
#include <stdio.h>