summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaulo Cesar Pereira de Andrade <pcpa@mandriva.com.br>2008-12-23 18:07:54 -0200
committerPaulo Cesar Pereira de Andrade <pcpa@mandriva.com.br>2008-12-23 18:07:54 -0200
commit86dc660588a615baefb1799d78a501c95a931d77 (patch)
treed7d562a75abfed33133392d4fac374bdcb489d08
parent477c32708718f4470ac2e786b2446d7a44e45b9c (diff)
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.
-rw-r--r--hw/xfree86/loader/Makefile.am6
-rwxr-xr-xhw/xfree86/loader/sdksyms.sh13
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=$?