Alexandre Julliard : makefiles: Generate explicit build rules for C source files from makedep.

Alexandre Julliard julliard at winehq.org
Mon Oct 28 15:13:04 CDT 2013


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

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Mon Oct 28 11:16:11 2013 +0100

makefiles: Generate explicit build rules for C source files from makedep.

---

 Make.rules.in         |    1 +
 libs/wine/Makefile.in |   25 ++++++++++---------------
 tools/makedep.c       |   23 ++++++++++++++++++++---
 3 files changed, 31 insertions(+), 18 deletions(-)

diff --git a/Make.rules.in b/Make.rules.in
index 94c2e83..2c0f965 100644
--- a/Make.rules.in
+++ b/Make.rules.in
@@ -33,6 +33,7 @@ OBJS = $(C_SRCS:.c=.o) $(BISON_SRCS:.y=.tab.o) $(LEX_SRCS:.l=.yy.o) $(IDL_GEN_C_
        $(IDL_R_SRCS:.idl=_r.res) $(IDL_TLB_RES) $(RC_SRCS:.rc=.res) $(MC_SRCS:.mc=.res) $(EXTRA_OBJS)
 
 CROSSOBJS = $(OBJS:.o=.cross.o)
+ALLCROSSCFLAGS = $(INCLUDES) $(DEFS) -DWINE_CROSSTEST $(CPPFLAGS) $(CFLAGS)
 
 # Implicit rules
 
diff --git a/libs/wine/Makefile.in b/libs/wine/Makefile.in
index 24635c1..b958484 100644
--- a/libs/wine/Makefile.in
+++ b/libs/wine/Makefile.in
@@ -1,6 +1,13 @@
 DLLFLAGS  = @DLLFLAGS@
 EXTRALIBS = $(LIBPORT) @LIBDL@ @COREFOUNDATIONLIB@ @CORESERVICESLIB@
-EXTRADEFS = -DWINE_UNICODE_API=""
+EXTRADEFS = -DWINE_UNICODE_API="" \
+	-DBINDIR='"$(bindir)"' \
+	-DDLLDIR='"$(dlldir)"' \
+	-DDLLPREFIX='"$(DLLPREFIX)"' \
+	-DLIB_TO_BINDIR=\"`$(RELPATH) $(libdir) $(bindir)`\" \
+	-DLIB_TO_DLLDIR=\"`$(RELPATH) $(libdir) $(dlldir)`\" \
+	-DBIN_TO_DLLDIR=\"`$(RELPATH) $(bindir) $(dlldir)`\" \
+	-DBIN_TO_DATADIR=\"`$(RELPATH) $(bindir) $(datadir)/wine`\"
 STATICLIB = libwine_static.a
 
 VERSION   = 1.0
@@ -103,23 +110,11 @@ EXTRA_OBJS = version.o
 
 @MAKE_RULES@
 
-# Special defines needed for config.c
-
-CONFIGDIRS = \
-	-DBINDIR='"$(bindir)"' \
-	-DDLLDIR='"$(dlldir)"' \
-	-DDLLPREFIX='"$(DLLPREFIX)"' \
-	-DLIB_TO_BINDIR=\"`$(RELPATH) $(libdir) $(bindir)`\" \
-	-DLIB_TO_DLLDIR=\"`$(RELPATH) $(libdir) $(dlldir)`\" \
-	-DBIN_TO_DLLDIR=\"`$(RELPATH) $(bindir) $(dlldir)`\" \
-	-DBIN_TO_DATADIR=\"`$(RELPATH) $(bindir) $(datadir)/wine`\"
-
-config.o: config.c $(RELPATH)
-	$(CC) -c $(ALLCFLAGS) -o $@ $(srcdir)/config.c $(CONFIGDIRS)
-
 version.c: dummy
 	version=`(GIT_DIR=$(top_srcdir)/.git git describe HEAD 2>/dev/null || echo "wine- at PACKAGE_VERSION@") | sed -n -e '$$s/\(.*\)/const char wine_build[] = "\1";/p'` && (echo $$version | cmp -s - $@) || echo $$version >$@ || ($(RM) $@ && exit 1)
 
+$(OBJS): $(RELPATH)
+
 $(RELPATH):
 	@cd $(TOOLSDIR)/tools && $(MAKE) relpath$(TOOLSEXT)
 
diff --git a/tools/makedep.c b/tools/makedep.c
index 982d827..466066e 100644
--- a/tools/makedep.c
+++ b/tools/makedep.c
@@ -981,14 +981,18 @@ static void output_sources(void)
             else output( "%s.tab.c: %s\n", obj, source->filename );
 
             output( "\t$(BISON) $(BISONFLAGS) -p %s_ -o $@ %s\n", obj, source->filename );
-            column += output( "%s.tab.o: %s.tab.c", obj, obj );
+            output( "%s.tab.o: %s.tab.c\n", obj, obj );
+            output( "\t$(CC) -c $(ALLCFLAGS) -o $@ %s.tab.c\n", obj );
+            column += output( "%s.tab.o:", obj );
             free( header );
         }
         else if (!strcmp( ext, "l" ))  /* lex file */
         {
             output( "%s.yy.c: %s\n", obj, source->filename );
             output( "\t$(FLEX) $(LEXFLAGS) -o$@ %s\n", source->filename );
-            column += output( "%s.yy.o: %s.yy.c", obj, obj );
+            output( "%s.yy.o: %s.yy.c\n", obj, obj );
+            output( "\t$(CC) -c $(ALLCFLAGS) -o $@ %s.yy.c\n", obj );
+            column += output( "%s.yy.o:", obj );
         }
         else if (!strcmp( ext, "rc" ))  /* resource file */
         {
@@ -1069,8 +1073,21 @@ static void output_sources(void)
         {
             struct object_extension *ext;
             LIST_FOR_EACH_ENTRY( ext, &object_extensions, struct object_extension, entry )
+            {
+                if (strstr( ext->extension, "cross" ))
+                {
+                    output( "%s.%s: %s\n", obj, ext->extension, source->filename );
+                    output( "\t$(CROSSCC) -c $(ALLCROSSCFLAGS) -o $@ %s\n", source->filename );
+                }
+                else
+                {
+                    output( "%s.%s: %s\n", obj, ext->extension, source->filename );
+                    output( "\t$(CC) -c $(ALLCFLAGS) -o $@ %s\n", source->filename );
+                }
+            }
+            LIST_FOR_EACH_ENTRY( ext, &object_extensions, struct object_extension, entry )
                 column += output( "%s.%s ", obj, ext->extension );
-            column += output( ": %s", source->filename );
+            column += output( ":" );
         }
         free( obj );
 




More information about the wine-cvs mailing list