Alexandre Julliard : makefiles: Generate the static library rules from configure.

Alexandre Julliard julliard at winehq.org
Wed Jan 27 12:27:21 CST 2010


Module: wine
Branch: master
Commit: b6c275b1b4f2d4d942e7bd011172081f367c25cc
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=b6c275b1b4f2d4d942e7bd011172081f367c25cc

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Tue Jan 26 20:40:12 2010 +0100

makefiles: Generate the static library rules from configure.

---

 aclocal.m4           |    8 +++++++-
 configure            |   48 ++++++++++++++++++++++++++++++++++++++++++++++++
 configure.ac         |    2 ++
 dlls/Makefile.in     |   50 ++++----------------------------------------------
 tools/make_makefiles |   26 ++++----------------------
 5 files changed, 65 insertions(+), 69 deletions(-)

diff --git a/aclocal.m4 b/aclocal.m4
index b30e41e..a603833 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 9eabf3c..75828ce 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 4e9d263..158aafb 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 20dcb22..361e5fb 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
-
+ at ALL_IMPORTLIB_RULES@
 
 # Misc rules
 
diff --git a/tools/make_makefiles b/tools/make_makefiles
index 9b5dc43..029994e 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",




More information about the wine-cvs mailing list