diff --git a/aclocal.m4 b/aclocal.m4 index b30e41e0b5c..a603833f1df 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -215,7 +215,13 @@ dnl dnl Usage: WINE_CONFIG_LIB(name) dnl AC_DEFUN([WINE_CONFIG_LIB], -[WINE_CONFIG_MAKEFILE([dlls/$1/Makefile],[dlls/Makeimplib.rules],[dlls],[ALL_IMPLIB_DIRS])]) +[ALL_STATIC_LIBS="$ALL_STATIC_LIBS \\ + $1/lib$1.a" +ALL_IMPORTLIB_RULES="$ALL_IMPORTLIB_RULES +$1/lib$1.a: $1 +$1/lib$1.cross.a: dummy + @cd $1 && \$(MAKE) lib$1.cross.a" +WINE_CONFIG_MAKEFILE([dlls/$1/Makefile],[dlls/Makeimplib.rules],[dlls],[ALL_IMPLIB_DIRS])]) dnl **** Add a message to the list displayed at the end **** dnl diff --git a/configure b/configure index 9eabf3ce12b..75828ceb7b8 100755 --- a/configure +++ b/configure @@ -601,6 +601,8 @@ ALL_PROGRAM_BIN_INSTALL_DIRS ALL_PROGRAM_INSTALL_DIRS ALL_PROGRAM_DIRS ALL_TEST_DIRS +ALL_IMPORTLIB_RULES +ALL_STATIC_LIBS ALL_IMPLIB_DIRS ALL_DLL_DIRS ALL_TOP_DIRS @@ -13604,6 +13606,10 @@ ALL_DLL_DIRS="" ALL_IMPLIB_DIRS="" +ALL_STATIC_LIBS="" + +ALL_IMPORTLIB_RULES="" + ALL_TEST_DIRS="" ALL_PROGRAM_DIRS="" @@ -13713,6 +13719,12 @@ ALL_MAKEFILE_DEPENDS="$ALL_MAKEFILE_DEPENDS dlls/actxprxy/Makefile: dlls/actxprxy/Makefile.in dlls/Makedll.rules" ac_config_files="$ac_config_files dlls/actxprxy/Makefile" +ALL_STATIC_LIBS="$ALL_STATIC_LIBS \\ + adsiid/libadsiid.a" +ALL_IMPORTLIB_RULES="$ALL_IMPORTLIB_RULES +adsiid/libadsiid.a: adsiid +adsiid/libadsiid.cross.a: dummy + @cd adsiid && \$(MAKE) libadsiid.cross.a" ALL_MAKEFILES="$ALL_MAKEFILES \\ dlls/adsiid/Makefile" test "x$enable_adsiid" != xno && ALL_IMPLIB_DIRS="$ALL_IMPLIB_DIRS \\ @@ -14697,6 +14709,12 @@ ALL_MAKEFILE_DEPENDS="$ALL_MAKEFILE_DEPENDS dlls/dxdiagn/tests/Makefile: dlls/dxdiagn/tests/Makefile.in dlls/Maketest.rules" ac_config_files="$ac_config_files dlls/dxdiagn/tests/Makefile" +ALL_STATIC_LIBS="$ALL_STATIC_LIBS \\ + dxerr8/libdxerr8.a" +ALL_IMPORTLIB_RULES="$ALL_IMPORTLIB_RULES +dxerr8/libdxerr8.a: dxerr8 +dxerr8/libdxerr8.cross.a: dummy + @cd dxerr8 && \$(MAKE) libdxerr8.cross.a" ALL_MAKEFILES="$ALL_MAKEFILES \\ dlls/dxerr8/Makefile" test "x$enable_dxerr8" != xno && ALL_IMPLIB_DIRS="$ALL_IMPLIB_DIRS \\ @@ -14705,6 +14723,12 @@ ALL_MAKEFILE_DEPENDS="$ALL_MAKEFILE_DEPENDS dlls/dxerr8/Makefile: dlls/dxerr8/Makefile.in dlls/Makeimplib.rules" ac_config_files="$ac_config_files dlls/dxerr8/Makefile" +ALL_STATIC_LIBS="$ALL_STATIC_LIBS \\ + dxerr9/libdxerr9.a" +ALL_IMPORTLIB_RULES="$ALL_IMPORTLIB_RULES +dxerr9/libdxerr9.a: dxerr9 +dxerr9/libdxerr9.cross.a: dummy + @cd dxerr9 && \$(MAKE) libdxerr9.cross.a" ALL_MAKEFILES="$ALL_MAKEFILES \\ dlls/dxerr9/Makefile" test "x$enable_dxerr9" != xno && ALL_IMPLIB_DIRS="$ALL_IMPLIB_DIRS \\ @@ -14729,6 +14753,12 @@ ALL_MAKEFILE_DEPENDS="$ALL_MAKEFILE_DEPENDS dlls/dxgi/tests/Makefile: dlls/dxgi/tests/Makefile.in dlls/Maketest.rules" ac_config_files="$ac_config_files dlls/dxgi/tests/Makefile" +ALL_STATIC_LIBS="$ALL_STATIC_LIBS \\ + dxguid/libdxguid.a" +ALL_IMPORTLIB_RULES="$ALL_IMPORTLIB_RULES +dxguid/libdxguid.a: dxguid +dxguid/libdxguid.cross.a: dummy + @cd dxguid && \$(MAKE) libdxguid.cross.a" ALL_MAKEFILES="$ALL_MAKEFILES \\ dlls/dxguid/Makefile" test "x$enable_dxguid" != xno && ALL_IMPLIB_DIRS="$ALL_IMPLIB_DIRS \\ @@ -16601,6 +16631,12 @@ ALL_MAKEFILE_DEPENDS="$ALL_MAKEFILE_DEPENDS dlls/stress.dll16/Makefile: dlls/stress.dll16/Makefile.in dlls/Makedll.rules" ac_config_files="$ac_config_files dlls/stress.dll16/Makefile" +ALL_STATIC_LIBS="$ALL_STATIC_LIBS \\ + strmiids/libstrmiids.a" +ALL_IMPORTLIB_RULES="$ALL_IMPORTLIB_RULES +strmiids/libstrmiids.a: strmiids +strmiids/libstrmiids.cross.a: dummy + @cd strmiids && \$(MAKE) libstrmiids.cross.a" ALL_MAKEFILES="$ALL_MAKEFILES \\ dlls/strmiids/Makefile" test "x$enable_strmiids" != xno && ALL_IMPLIB_DIRS="$ALL_IMPLIB_DIRS \\ @@ -16793,6 +16829,12 @@ ALL_MAKEFILE_DEPENDS="$ALL_MAKEFILE_DEPENDS dlls/usp10/tests/Makefile: dlls/usp10/tests/Makefile.in dlls/Maketest.rules" ac_config_files="$ac_config_files dlls/usp10/tests/Makefile" +ALL_STATIC_LIBS="$ALL_STATIC_LIBS \\ + uuid/libuuid.a" +ALL_IMPORTLIB_RULES="$ALL_IMPORTLIB_RULES +uuid/libuuid.a: uuid +uuid/libuuid.cross.a: dummy + @cd uuid && \$(MAKE) libuuid.cross.a" ALL_MAKEFILES="$ALL_MAKEFILES \\ dlls/uuid/Makefile" test "x$enable_uuid" != xno && ALL_IMPLIB_DIRS="$ALL_IMPLIB_DIRS \\ @@ -17001,6 +17043,12 @@ ALL_MAKEFILE_DEPENDS="$ALL_MAKEFILE_DEPENDS dlls/winecoreaudio.drv/Makefile: dlls/winecoreaudio.drv/Makefile.in dlls/Makedll.rules" ac_config_files="$ac_config_files dlls/winecoreaudio.drv/Makefile" +ALL_STATIC_LIBS="$ALL_STATIC_LIBS \\ + winecrt0/libwinecrt0.a" +ALL_IMPORTLIB_RULES="$ALL_IMPORTLIB_RULES +winecrt0/libwinecrt0.a: winecrt0 +winecrt0/libwinecrt0.cross.a: dummy + @cd winecrt0 && \$(MAKE) libwinecrt0.cross.a" ALL_MAKEFILES="$ALL_MAKEFILES \\ dlls/winecrt0/Makefile" test "x$enable_winecrt0" != xno && ALL_IMPLIB_DIRS="$ALL_IMPLIB_DIRS \\ diff --git a/configure.ac b/configure.ac index 4e9d26391c9..158aafb9325 100644 --- a/configure.ac +++ b/configure.ac @@ -2091,6 +2091,8 @@ AC_SUBST(ALL_MAKEFILE_DEPENDS,["# Makefile dependencies"]) AC_SUBST(ALL_TOP_DIRS,"") AC_SUBST(ALL_DLL_DIRS,"") AC_SUBST(ALL_IMPLIB_DIRS,"") +AC_SUBST(ALL_STATIC_LIBS,"") +AC_SUBST(ALL_IMPORTLIB_RULES,"") AC_SUBST(ALL_TEST_DIRS,"") AC_SUBST(ALL_PROGRAM_DIRS,"") AC_SUBST(ALL_PROGRAM_INSTALL_DIRS,"") diff --git a/dlls/Makefile.in b/dlls/Makefile.in index 20dcb2282b7..361e5fb04f7 100644 --- a/dlls/Makefile.in +++ b/dlls/Makefile.in @@ -31,15 +31,9 @@ IMPORT_SYMLINKS = \ libwinspool.$(IMPLIBEXT) \ libxinput.$(IMPLIBEXT) -IMPORT_LIBS = \ +STATIC_LIBS = @ALL_STATIC_LIBS@ +IMPORT_LIBS = $(STATIC_LIBS) \ $(IMPORT_SYMLINKS) \ - adsiid/libadsiid.a \ - dxerr8/libdxerr8.a \ - dxerr9/libdxerr9.a \ - dxguid/libdxguid.a \ - strmiids/libstrmiids.a \ - uuid/libuuid.a \ - winecrt0/libwinecrt0.a \ aclui/libaclui.$(IMPLIBEXT) \ activeds/libactiveds.$(IMPLIBEXT) \ advapi32/libadvapi32.$(IMPLIBEXT) \ @@ -184,17 +178,10 @@ IMPORT_LIBS = \ wtsapi32/libwtsapi32.$(IMPLIBEXT) \ xinput1_3/libxinput.$(IMPLIBEXT) -CROSS_IMPLIBS = \ +CROSS_IMPLIBS = $(STATIC_LIBS:.a=.cross.a) \ libd3dx9.cross.a \ libwinspool.cross.a \ libxinput.cross.a \ - adsiid/libadsiid.cross.a \ - dxerr8/libdxerr8.cross.a \ - dxerr9/libdxerr9.cross.a \ - dxguid/libdxguid.cross.a \ - strmiids/libstrmiids.cross.a \ - uuid/libuuid.cross.a \ - winecrt0/libwinecrt0.cross.a \ aclui/libaclui.cross.a \ activeds/libactiveds.cross.a \ advapi32/libadvapi32.cross.a \ @@ -812,36 +799,7 @@ libxinput.def: xinput1_3/libxinput.def $(BUILDSUBDIRS): $(IMPORT_LIBS) $(INSTALLSUBDIRS:%=%/__install__) $(INSTALLSUBDIRS:%=%/__install-lib__): $(IMPORT_LIBS) -# Map library name to the corresponding directory - -adsiid/libadsiid.a: adsiid -adsiid/libadsiid.cross.a: dummy - @cd adsiid && $(MAKE) libadsiid.cross.a - -dxerr8/libdxerr8.a: dxerr8 -dxerr8/libdxerr8.cross.a: dummy - @cd dxerr8 && $(MAKE) libdxerr8.cross.a - -dxerr9/libdxerr9.a: dxerr9 -dxerr9/libdxerr9.cross.a: dummy - @cd dxerr9 && $(MAKE) libdxerr9.cross.a - -dxguid/libdxguid.a: dxguid -dxguid/libdxguid.cross.a: dummy - @cd dxguid && $(MAKE) libdxguid.cross.a - -strmiids/libstrmiids.a: strmiids -strmiids/libstrmiids.cross.a: dummy - @cd strmiids && $(MAKE) libstrmiids.cross.a - -uuid/libuuid.a: uuid -uuid/libuuid.cross.a: dummy - @cd uuid && $(MAKE) libuuid.cross.a - -winecrt0/libwinecrt0.a: winecrt0 -winecrt0/libwinecrt0.cross.a: dummy - @cd winecrt0 && $(MAKE) libwinecrt0.cross.a - +@ALL_IMPORTLIB_RULES@ # Misc rules diff --git a/tools/make_makefiles b/tools/make_makefiles index 9b5dc432522..029994e158c 100755 --- a/tools/make_makefiles +++ b/tools/make_makefiles @@ -509,27 +509,20 @@ sub update_dlls(@) $text .= sprintf " \\\n\tlib%s.\$(IMPLIBEXT)", $importlibs{$mod}; } - $text .= "\n\nIMPORT_LIBS = \\\n\t\$(IMPORT_SYMLINKS)"; - foreach my $mod (sort keys %staticlib_dirs) - { - $text .= sprintf " \\\n\t%s/lib%s.a", $staticlib_dirs{$mod}, $mod; - } + $text .= "\n\nSTATIC_LIBS = \@ALL_STATIC_LIBS\@\n"; + $text .= "IMPORT_LIBS = \$(STATIC_LIBS) \\\n\t\$(IMPORT_SYMLINKS)"; foreach my $mod (sort keys %importlibs) { $text .= " \\\n\t$directories{$mod}/lib$importlibs{$mod}.\$(IMPLIBEXT)"; next unless defined $static_implibs{$mod}; $text .= " \\\n\t$directories{$mod}/lib$importlibs{$mod}.\$(STATIC_IMPLIBEXT)"; } - $text .= "\n\nCROSS_IMPLIBS ="; + $text .= "\n\nCROSS_IMPLIBS = \$(STATIC_LIBS:.a=.cross.a)"; foreach my $mod (sort @lib_symlinks) { next if $mod =~ /16$/; $text .= sprintf " \\\n\tlib%s.cross.a", $importlibs{$mod}; } - foreach my $mod (sort keys %staticlib_dirs) - { - $text .= sprintf " \\\n\t%s/lib%s.cross.a", $staticlib_dirs{$mod}, $mod; - } foreach my $mod (sort keys %importlibs) { next if $mod =~ /16$/; @@ -576,18 +569,7 @@ sub update_dlls(@) $text .= "\$(BUILDSUBDIRS): \$(IMPORT_LIBS)\n"; $text .= "\$(INSTALLSUBDIRS:%=%/__install__) \$(INSTALLSUBDIRS:%=%/__install-lib__): \$(IMPORT_LIBS)\n\n"; - - # output the inter-dll dependencies and rules - - $text .= "# Map library name to the corresponding directory\n\n"; - - foreach my $mod (sort keys %staticlib_dirs) - { - my $dir = $staticlib_dirs{$mod}; - $text .= sprintf "%s/lib%s.a: %s\n", $staticlib_dirs{$mod}, $mod, $staticlib_dirs{$mod}; - $text .= sprintf "%s/lib%s.cross.a: dummy\n", $dir, $mod; - $text .= sprintf "\t\@cd %s && \$(MAKE) lib%s.cross.a\n\n", $dir, $mod; - } + $text .= "\@ALL_IMPORTLIB_RULES\@\n"; $text .= "\n# Misc rules\n"; replace_in_file( "dlls/Makefile.in",