Commit b1928795 authored by Alexandre Julliard's avatar Alexandre Julliard

makefiles: Automatically output appropriate target flags.

parent e9afeb2a
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
DEFS = -D__WINESRC__ $(EXTRADEFS) DEFS = -D__WINESRC__ $(EXTRADEFS)
ALLCFLAGS = $(DEFS) $(EXTRACFLAGS) $(CPPFLAGS) $(CFLAGS) $(MODCFLAGS) ALLCFLAGS = $(DEFS) $(EXTRACFLAGS) $(CPPFLAGS) $(CFLAGS) $(MODCFLAGS)
IDLFLAGS = $(DEFS) $(EXTRAIDLFLAGS) IDLFLAGS = $(DEFS) $(EXTRAIDLFLAGS)
RCFLAGS = --nostdinc $(PORCFLAGS) $(TARGETFLAGS) $(DEFS) $(EXTRARCFLAGS) RCFLAGS = --nostdinc $(PORCFLAGS) $(DEFS)
OBJS = $(C_SRCS:.c=.o) $(BISON_SRCS:.y=.tab.o) $(LEX_SRCS:.l=.yy.o) $(OBJC_SRCS:.m=.o) \ OBJS = $(C_SRCS:.c=.o) $(BISON_SRCS:.y=.tab.o) $(LEX_SRCS:.l=.yy.o) $(OBJC_SRCS:.m=.o) \
$(RC_SRCS:.rc=.res) $(MC_SRCS:.mc=.res) $(EXTRA_OBJS) $(RC_SRCS:.rc=.res) $(MC_SRCS:.mc=.res) $(EXTRA_OBJS)
......
...@@ -65,8 +65,8 @@ LIBPORT = $(top_builddir)/libs/port/libwine_port.a ...@@ -65,8 +65,8 @@ LIBPORT = $(top_builddir)/libs/port/libwine_port.a
LIBWPP = $(top_builddir)/libs/wpp/libwpp.a LIBWPP = $(top_builddir)/libs/wpp/libwpp.a
LIBWINE = -L$(top_builddir)/libs/wine -lwine LIBWINE = -L$(top_builddir)/libs/wine -lwine
LIBWINE_STATIC = $(top_builddir)/libs/wine/libwine_static.a LIBWINE_STATIC = $(top_builddir)/libs/wine/libwine_static.a
WINEGCC = $(TOOLSDIR)/tools/winegcc/winegcc $(TARGETFLAGS) -B$(TOOLSDIR)/tools/winebuild --sysroot=$(top_builddir) @UNWINDFLAGS@ WINEGCC = $(TOOLSDIR)/tools/winegcc/winegcc -B$(TOOLSDIR)/tools/winebuild --sysroot=$(top_builddir) @UNWINDFLAGS@
CROSSWINEGCC = $(TOOLSDIR)/tools/winegcc/winegcc $(CROSSTARGET:%=-b %) -B$(TOOLSDIR)/tools/winebuild --sysroot=$(top_builddir) --lib-suffix=.cross.a CROSSWINEGCC = $(TOOLSDIR)/tools/winegcc/winegcc -B$(TOOLSDIR)/tools/winebuild --sysroot=$(top_builddir) --lib-suffix=.cross.a
SED_CMD = LC_ALL=C sed -e 's,@bindir\@,$(bindir),g' -e 's,@dlldir\@,$(dlldir),g' -e 's,@PACKAGE_STRING\@,@PACKAGE_STRING@,g' -e 's,@PACKAGE_VERSION\@,@PACKAGE_VERSION@,g' SED_CMD = LC_ALL=C sed -e 's,@bindir\@,$(bindir),g' -e 's,@dlldir\@,$(dlldir),g' -e 's,@PACKAGE_STRING\@,@PACKAGE_STRING@,g' -e 's,@PACKAGE_VERSION\@,@PACKAGE_VERSION@,g'
LDRPATH_INSTALL = @LDRPATH_INSTALL@ LDRPATH_INSTALL = @LDRPATH_INSTALL@
LDRPATH_LOCAL = @LDRPATH_LOCAL@ LDRPATH_LOCAL = @LDRPATH_LOCAL@
......
...@@ -2,7 +2,6 @@ MODULE = display.drv16 ...@@ -2,7 +2,6 @@ MODULE = display.drv16
IMPORTS = user32 IMPORTS = user32
EXTRADLLFLAGS = -m16 EXTRADLLFLAGS = -m16
EXTRARCFLAGS = -m16
C_SRCS = display.c C_SRCS = display.c
......
...@@ -2,7 +2,6 @@ MODULE = gdi.exe16 ...@@ -2,7 +2,6 @@ MODULE = gdi.exe16
IMPORTS = user32 advapi32 gdi32 IMPORTS = user32 advapi32 gdi32
EXTRADLLFLAGS = -m16 -Wb,--main-module,gdi32.dll,--heap,65520 EXTRADLLFLAGS = -m16 -Wb,--main-module,gdi32.dll,--heap,65520
EXTRARCFLAGS = -m16
C_SRCS = \ C_SRCS = \
bidi.c \ bidi.c \
......
...@@ -3,7 +3,6 @@ IMPORTLIB = kernel ...@@ -3,7 +3,6 @@ IMPORTLIB = kernel
IMPORTS = winecrt0 kernel32 ntdll IMPORTS = winecrt0 kernel32 ntdll
DELAYIMPORTS = ddraw dsound user32 DELAYIMPORTS = ddraw dsound user32
EXTRADLLFLAGS = -m16 -nodefaultlibs -Wb,--dll-name,kernel EXTRADLLFLAGS = -m16 -nodefaultlibs -Wb,--dll-name,kernel
EXTRARCFLAGS = -m16
C_SRCS = \ C_SRCS = \
atom.c \ atom.c \
......
...@@ -2,7 +2,6 @@ MODULE = mouse.drv16 ...@@ -2,7 +2,6 @@ MODULE = mouse.drv16
IMPORTS = user32 IMPORTS = user32
EXTRADLLFLAGS = -m16 EXTRADLLFLAGS = -m16
EXTRARCFLAGS = -m16
C_SRCS = mouse.c C_SRCS = mouse.c
......
MODULE = ole2nls.dll16 MODULE = ole2nls.dll16
EXTRADLLFLAGS = -m16 -Wb,--main-module,ole32.dll EXTRADLLFLAGS = -m16 -Wb,--main-module,ole32.dll
EXTRARCFLAGS = -m16
C_SRCS = ole2nls.c C_SRCS = ole2nls.c
......
...@@ -2,7 +2,6 @@ MODULE = shell.dll16 ...@@ -2,7 +2,6 @@ MODULE = shell.dll16
IMPORTS = shell32 user32 gdi32 advapi32 IMPORTS = shell32 user32 gdi32 advapi32
EXTRADLLFLAGS = -m16 -Wb,--main-module,shell32.dll EXTRADLLFLAGS = -m16 -Wb,--main-module,shell32.dll
EXTRARCFLAGS = -m16
C_SRCS = shell.c C_SRCS = shell.c
......
MODULE = user.exe16 MODULE = user.exe16
IMPORTS = mpr user32 gdi32 IMPORTS = mpr user32 gdi32
EXTRADLLFLAGS = -m16 -Wb,--main-module,user32.dll,--heap,65520 EXTRADLLFLAGS = -m16 -Wb,--main-module,user32.dll,--heap,65520
EXTRARCFLAGS = -m16
C_SRCS = \ C_SRCS = \
bidi.c \ bidi.c \
......
...@@ -1361,7 +1361,7 @@ static void output_include( struct incl_file *pFile, struct incl_file *owner ) ...@@ -1361,7 +1361,7 @@ static void output_include( struct incl_file *pFile, struct incl_file *owner )
static struct strarray output_sources(void) static struct strarray output_sources(void)
{ {
struct incl_file *source; struct incl_file *source;
int i; int i, is_win16 = 0;
const char *dllext = ".so"; const char *dllext = ".so";
struct strarray object_files = empty_strarray; struct strarray object_files = empty_strarray;
struct strarray crossobj_files = empty_strarray; struct strarray crossobj_files = empty_strarray;
...@@ -1379,7 +1379,9 @@ static struct strarray output_sources(void) ...@@ -1379,7 +1379,9 @@ static struct strarray output_sources(void)
struct strarray dllflags = get_expanded_make_var_array( "DLLFLAGS" ); struct strarray dllflags = get_expanded_make_var_array( "DLLFLAGS" );
struct strarray imports = get_expanded_make_var_array( "IMPORTS" ); struct strarray imports = get_expanded_make_var_array( "IMPORTS" );
struct strarray all_targets = get_expanded_make_var_array( "PROGRAMS" ); struct strarray all_targets = get_expanded_make_var_array( "PROGRAMS" );
struct strarray targetflags = get_expanded_make_var_array( "TARGETFLAGS" );
struct strarray delayimports = get_expanded_make_var_array( "DELAYIMPORTS" ); struct strarray delayimports = get_expanded_make_var_array( "DELAYIMPORTS" );
struct strarray extradllflags = get_expanded_make_var_array( "EXTRADLLFLAGS" );
char *module = get_expanded_make_variable( "MODULE" ); char *module = get_expanded_make_variable( "MODULE" );
char *exeext = get_expanded_make_variable( "EXEEXT" ); char *exeext = get_expanded_make_variable( "EXEEXT" );
char *testdll = get_expanded_make_variable( "TESTDLL" ); char *testdll = get_expanded_make_variable( "TESTDLL" );
...@@ -1389,6 +1391,7 @@ static struct strarray output_sources(void) ...@@ -1389,6 +1391,7 @@ static struct strarray output_sources(void)
if (exeext && !strcmp( exeext, ".exe" )) dllext = ""; if (exeext && !strcmp( exeext, ".exe" )) dllext = "";
if (module && strendswith( module, ".a" )) staticlib = module; if (module && strendswith( module, ".a" )) staticlib = module;
for (i = 0; i < extradllflags.count; i++) if (!strcmp( extradllflags.str[i], "-m16" )) is_win16 = 1;
strarray_add( &includes, "-I." ); strarray_add( &includes, "-I." );
if (src_dir) strarray_add( &includes, strmake( "-I%s", src_dir )); if (src_dir) strarray_add( &includes, strmake( "-I%s", src_dir ));
...@@ -1457,6 +1460,8 @@ static struct strarray output_sources(void) ...@@ -1457,6 +1460,8 @@ static struct strarray output_sources(void)
output( "%s.res: $(WRC) $(ALL_MO_FILES) %s\n", obj, sourcedep ); output( "%s.res: $(WRC) $(ALL_MO_FILES) %s\n", obj, sourcedep );
output( "\t$(WRC) -o $@ %s", source->filename ); output( "\t$(WRC) -o $@ %s", source->filename );
output_filenames( includes ); output_filenames( includes );
if (is_win16) output_filename( "-m16" );
else output_filenames( targetflags );
output_filename( "$(RCFLAGS)" ); output_filename( "$(RCFLAGS)" );
output( "\n" ); output( "\n" );
output( "%s.res rsrc.pot:", obj ); output( "%s.res rsrc.pot:", obj );
...@@ -1467,6 +1472,8 @@ static struct strarray output_sources(void) ...@@ -1467,6 +1472,8 @@ static struct strarray output_sources(void)
output( "%s.res: $(WRC) %s\n", obj, sourcedep ); output( "%s.res: $(WRC) %s\n", obj, sourcedep );
output( "\t$(WRC) -o $@ %s", source->filename ); output( "\t$(WRC) -o $@ %s", source->filename );
output_filenames( includes ); output_filenames( includes );
if (is_win16) output_filename( "-m16" );
else output_filenames( targetflags );
output_filename( "$(RCFLAGS)" ); output_filename( "$(RCFLAGS)" );
output( "\n" ); output( "\n" );
output( "%s.res:", obj ); output( "%s.res:", obj );
...@@ -1502,7 +1509,7 @@ static struct strarray output_sources(void) ...@@ -1502,7 +1509,7 @@ static struct strarray output_sources(void)
output( ": $(WIDL)\n" ); output( ": $(WIDL)\n" );
output( "\t$(WIDL) -o $@ %s", source->filename ); output( "\t$(WIDL) -o $@ %s", source->filename );
output_filenames( includes ); output_filenames( includes );
output_filename( "$(TARGETFLAGS)" ); output_filenames( targetflags );
output_filename( "$(IDLFLAGS)" ); output_filename( "$(IDLFLAGS)" );
output( "\n" ); output( "\n" );
output_filenames( targets ); output_filenames( targets );
...@@ -1621,6 +1628,8 @@ static struct strarray output_sources(void) ...@@ -1621,6 +1628,8 @@ static struct strarray output_sources(void)
output( "\n" ); output( "\n" );
output( "\t$(WRC) -O pot -o $@" ); output( "\t$(WRC) -O pot -o $@" );
output_filenames( includes ); output_filenames( includes );
if (is_win16) output_filename( "-m16" );
else output_filenames( targetflags );
output_filename( "$(RCFLAGS)" ); output_filename( "$(RCFLAGS)" );
output_filenames( po_files ); output_filenames( po_files );
output( "\n" ); output( "\n" );
...@@ -1648,7 +1657,6 @@ static struct strarray output_sources(void) ...@@ -1648,7 +1657,6 @@ static struct strarray output_sources(void)
if (module && !staticlib) if (module && !staticlib)
{ {
int is_win16 = strendswith( module, "16" );
char *importlib = get_expanded_make_variable( "IMPORTLIB" ); char *importlib = get_expanded_make_variable( "IMPORTLIB" );
struct strarray all_libs = empty_strarray; struct strarray all_libs = empty_strarray;
char *spec_file = appmode ? NULL : replace_extension( module, ".dll", ".spec" ); char *spec_file = appmode ? NULL : replace_extension( module, ".dll", ".spec" );
...@@ -1681,10 +1689,11 @@ static struct strarray output_sources(void) ...@@ -1681,10 +1689,11 @@ static struct strarray output_sources(void)
output_filenames( res_files ); output_filenames( res_files );
output( "\n" ); output( "\n" );
output( "\t$(WINEGCC) -o $@" ); output( "\t$(WINEGCC) -o $@" );
output_filenames( targetflags );
if (spec_file) if (spec_file)
{ {
output( " -shared %s", spec_file ); output( " -shared %s", spec_file );
output_filenames( get_expanded_make_var_array( "EXTRADLLFLAGS" )); output_filenames( extradllflags );
} }
else output_filename( appmode ); else output_filename( appmode );
output_filenames( object_files ); output_filenames( object_files );
...@@ -1700,7 +1709,7 @@ static struct strarray output_sources(void) ...@@ -1700,7 +1709,7 @@ static struct strarray output_sources(void)
strarray_add( &clean_files, strmake( "lib%s.def", importlib )); strarray_add( &clean_files, strmake( "lib%s.def", importlib ));
output( "lib%s.def: %s\n", importlib, spec_file ); output( "lib%s.def: %s\n", importlib, spec_file );
output( "\t$(WINEBUILD) -w --def -o $@ --export %s", spec_file ); output( "\t$(WINEBUILD) -w --def -o $@ --export %s", spec_file );
output_filenames( get_expanded_make_var_array( "TARGETFLAGS" )); output_filenames( targetflags );
if (is_win16) output_filename( "-m16" ); if (is_win16) output_filename( "-m16" );
output( "\n" ); output( "\n" );
if (implib_objs.count) if (implib_objs.count)
...@@ -1723,7 +1732,7 @@ static struct strarray output_sources(void) ...@@ -1723,7 +1732,7 @@ static struct strarray output_sources(void)
output_filenames( implib_objs ); output_filenames( implib_objs );
output( "\n" ); output( "\n" );
output( "\t$(WINEBUILD) -w --implib -o $@ --export %s", spec_file ); output( "\t$(WINEBUILD) -w --implib -o $@ --export %s", spec_file );
output_filenames( get_expanded_make_var_array( "TARGETFLAGS" )); output_filenames( targetflags );
output_filenames( implib_objs ); output_filenames( implib_objs );
output( "\n" ); output( "\n" );
} }
...@@ -1816,6 +1825,7 @@ static struct strarray output_sources(void) ...@@ -1816,6 +1825,7 @@ static struct strarray output_sources(void)
strarray_add( &clean_files, strmake( "%s%s", stripped, dllext )); strarray_add( &clean_files, strmake( "%s%s", stripped, dllext ));
output( "%s%s:\n", testmodule, dllext ); output( "%s%s:\n", testmodule, dllext );
output( "\t$(WINEGCC) -o $@" ); output( "\t$(WINEGCC) -o $@" );
output_filenames( targetflags );
if (appmode) output_filename( appmode ); if (appmode) output_filename( appmode );
output_filenames( object_files ); output_filenames( object_files );
output_filenames( res_files ); output_filenames( res_files );
...@@ -1823,7 +1833,9 @@ static struct strarray output_sources(void) ...@@ -1823,7 +1833,9 @@ static struct strarray output_sources(void)
output_filename( "$(LDFLAGS)" ); output_filename( "$(LDFLAGS)" );
output( "\n" ); output( "\n" );
output( "%s%s:\n", stripped, dllext ); output( "%s%s:\n", stripped, dllext );
output( "\t$(WINEGCC) -s -o $@ -Wb,-F,%s", testmodule ); output( "\t$(WINEGCC) -s -o $@" );
output_filenames( targetflags );
output_filename( strmake( "-Wb,-F,%s", testmodule ));
if (appmode) output_filename( appmode ); if (appmode) output_filename( appmode );
output_filenames( object_files ); output_filenames( object_files );
output_filenames( res_files ); output_filenames( res_files );
...@@ -1840,7 +1852,7 @@ static struct strarray output_sources(void) ...@@ -1840,7 +1852,7 @@ static struct strarray output_sources(void)
char *testres = replace_extension( testdll, ".dll", "_test.res" ); char *testres = replace_extension( testdll, ".dll", "_test.res" );
output( "all: %s/programs/winetest/%s\n", top_obj_dir, testres ); output( "all: %s/programs/winetest/%s\n", top_obj_dir, testres );
output( "%s/programs/winetest/%s: %s%s\n", top_obj_dir, testres, stripped, dllext ); output( "%s/programs/winetest/%s: %s%s\n", top_obj_dir, testres, stripped, dllext );
output( "\techo \"%s TESTRES \\\"%s%s\\\"\" | $(WRC) $(RCFLAGS) -o $@\n", output( "\techo \"%s TESTRES \\\"%s%s\\\"\" | $(WRC) -o $@\n",
testmodule, stripped, dllext ); testmodule, stripped, dllext );
} }
...@@ -1854,7 +1866,7 @@ static struct strarray output_sources(void) ...@@ -1854,7 +1866,7 @@ static struct strarray output_sources(void)
output_filenames( crossobj_files ); output_filenames( crossobj_files );
output_filenames( res_files ); output_filenames( res_files );
output( "\n" ); output( "\n" );
output( "\t$(CROSSWINEGCC) -o $@" ); output( "\t$(CROSSWINEGCC) -o $@ -b %s", crosstarget );
output_filenames( crossobj_files ); output_filenames( crossobj_files );
output_filenames( res_files ); output_filenames( res_files );
output_filenames( all_libs ); output_filenames( all_libs );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment