From 86dc660588a615baefb1799d78a501c95a931d77 Mon Sep 17 00:00:00 2001 From: Paulo Cesar Pereira de Andrade Date: Tue, 23 Dec 2008 18:07:54 -0200 Subject: [PATCH] Improve sdksyms.c automatic generation (Fix #19245). Since it is already parsing cpp output, create a dependency file in the same process. This will cause sdksyms.c to be regenerated whenever a sdk header is modified. This also uses the gmake 'sinclude' directive (don't fail if included file doesn't exist). This should not cause any problems given that gmake only constructs are used in several other Makefiles. --- hw/xfree86/loader/Makefile.am | 6 ++++-- hw/xfree86/loader/sdksyms.sh | 13 +++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/hw/xfree86/loader/Makefile.am b/hw/xfree86/loader/Makefile.am index 8732a490a..b16f12ba2 100644 --- a/hw/xfree86/loader/Makefile.am +++ b/hw/xfree86/loader/Makefile.am @@ -21,7 +21,9 @@ libloader_la_SOURCES = \ os.c \ sdksyms.c -CLEANFILES = sdksyms.c +CLEANFILES = sdksyms.c sdksyms.dep -sdksyms.c: sdksyms.sh +sdksyms.dep sdksyms.c: sdksyms.sh CPP='$(CPP)' AWK='$(AWK)' $(srcdir)/sdksyms.sh $(top_srcdir) $(AM_CFLAGS) $(CFLAGS) $(INCLUDES) + +sinclude sdksyms.dep diff --git a/hw/xfree86/loader/sdksyms.sh b/hw/xfree86/loader/sdksyms.sh index 05760106a..be0b0ee6f 100755 --- a/hw/xfree86/loader/sdksyms.sh +++ b/hw/xfree86/loader/sdksyms.sh @@ -333,6 +333,8 @@ BEGIN { print(" */"); printf("/* topdir=%s */\n", topdir); print("_X_HIDDEN void *xorg_symbols[] = {"); + + printf("sdksyms.c:") > "sdksyms.dep"; } /^# [0-9]+ "/ { # Process text after a include in a relative path or when the @@ -340,6 +342,15 @@ BEGIN { # Note that indexing starts at 1; 0 means no match, and there # is a starting ". sdk = $3 !~ /^"\// || index($3, topdir) == 2; + + if (sdk && $3 ~ /\.h"$/) { + # remove quotes + gsub(/"/, "", $3); + if (! headers[$3]) { + printf(" \\\n %s", $3) >> "sdksyms.dep"; + headers[$3] = 1; + } + } } /^extern[ ]/ { @@ -394,6 +405,8 @@ BEGIN { END { print("};"); + + print("") >> "sdksyms.dep"; }' > _sdksyms.c STATUS=$?