summaryrefslogtreecommitdiff
path: root/Rules
diff options
context:
space:
mode:
Diffstat (limited to 'Rules')
-rw-r--r--Rules44
1 files changed, 44 insertions, 0 deletions
diff --git a/Rules b/Rules
index b401c3136c..9c61b8418a 100644
--- a/Rules
+++ b/Rules
@@ -200,3 +200,47 @@ $(common-objpfx)dummy$o: $(common-objpfx)dummy.c $(before-compile);
endef
object-suffixes-left := $(object-suffixes)
include $(o-iterator)
+
+# There's no good place to put this - here will do.
+# The dependencies are wrong if it's run from the top level.
+ifeq ($(filter %posix, $(sysdirs)),)
+L_tmpnam = 1
+TMP_MAX = 0
+L_ctermid = 1
+L_cuserid = 1
+else
+L_tmpnam = 19
+TMP_MAX = 238328
+L_ctermid = 9
+L_cuserid = 9
+endif
+
+$(common-objpfx)bits/stdio_%.h $(common-objpfx)bits/stdio_%.d: \
+ $(..)stdio-common/stdio_%.h.in
+ $(make-target-directory)
+ echo '#include "$(..)posix/bits/posix1_lim.h"' | \
+ SUNPRO_DEPENDENCIES='$(@:.h=.d)T MARKER' \
+ $(CC) $(+includes) -E -dM -xc - -o $(@:.d=.h)T
+ sed -e 's!MARKER!$(@:.h=.d) $(@:.d=.h)!' \
+ -e 's!$(common-objpfx)!$$(common-objpfx)!g' \
+ $(@:.h=.d)T > $(@:.h=.d)t && \
+ mv -f $(@:.h=.d)t $(@:.h=.d)
+ fopen_max=`sed -n 's/^#define OPEN_MAX //p' $(@:.d=.h)T`; \
+ filename_max=`sed -n 's/^#define PATH_MAX //p' $(@:.d=.h)T`; \
+ fopen_max=$${fopen_max:-16}; \
+ filename_max=$${filename_max:-1024}; \
+ sed -e "s/@FOPEN_MAX@/$$fopen_max/" \
+ -e "s/@FILENAME_MAX@/$$filename_max/" \
+ -e "s/@L_tmpnam@/$(L_tmpnam)/" \
+ -e "s/@TMP_MAX@/$(TMP_MAX)/" \
+ -e "s/@L_ctermid@/$(L_ctermid)/" \
+ -e "s/@L_cuserid@/$(L_cuserid)/" \
+ $< > $(@:.d=.h).new && \
+ mv -f $(@:.d=.h).new $(@:.d=.h); \
+# Remove these last so that they can be examined if something went wrong.
+ rm -f $(@:.d=.h)T $(@:.h=.d)T
+# Get dependencies.
+ifndef no_deps
+-include $(common-objpfx)bits/stdio_lim.d
+endif
+common-generated += bits/stdio_lim.h bits/stdio_lim.d