1.1 --- a/make/solaris/makefiles/adlc.make Mon Dec 08 17:15:02 2008 -0800 1.2 +++ b/make/solaris/makefiles/adlc.make Tue Dec 09 12:41:26 2008 -0800 1.3 @@ -54,9 +54,11 @@ 1.4 Src_Dirs_I = ${Src_Dirs} $(GENERATED) 1.5 INCLUDES += $(Src_Dirs_I:%=-I%) 1.6 1.7 +# set flags for adlc compilation 1.8 +CPPFLAGS = $(SYSDEFS) $(INCLUDES) 1.9 + 1.10 # Force assertions on. 1.11 -SYSDEFS += -DASSERT 1.12 -CPPFLAGS = $(SYSDEFS) $(INCLUDES) 1.13 +CPPFLAGS += -DASSERT 1.14 1.15 ifndef USE_GCC 1.16 # We need libCstd.so for adlc 1.17 @@ -141,7 +143,15 @@ 1.18 # Note that product files are updated via "mv", which is atomic. 1.19 TEMPDIR := $(OUTDIR)/mktmp$(shell echo $$$$) 1.20 1.21 -ADLCFLAGS = -q -T 1.22 +# Pass -D flags into ADLC. 1.23 +ADLCFLAGS += $(SYSDEFS) 1.24 + 1.25 +# Note "+="; it is a hook so flags.make can add more flags, like -g or -DFOO. 1.26 +ADLCFLAGS += -q -T 1.27 + 1.28 +# Normally, debugging is done directly on the ad_<arch>*.cpp files. 1.29 +# But -g will put #line directives in those files pointing back to <arch>.ad. 1.30 +#ADLCFLAGS += -g 1.31 1.32 ifdef LP64 1.33 ADLCFLAGS += -D_LP64 1.34 @@ -156,6 +166,8 @@ 1.35 # 1.36 ADLC_UPDATER_DIRECTORY = $(GAMMADIR)/make/$(OS) 1.37 ADLC_UPDATER = adlc_updater 1.38 +$(ADLC_UPDATER): $(ADLC_UPDATER_DIRECTORY)/$(ADLC_UPDATER) 1.39 + $(QUIETLY) cp $< $@; chmod +x $@ 1.40 1.41 # This action refreshes all generated adlc files simultaneously. 1.42 # The way it works is this: 1.43 @@ -165,9 +177,8 @@ 1.44 # 4) call $(ADLC_UPDATER) on each generated adlc file. It will selectively update changed or missing files. 1.45 # 5) If we actually updated any files, echo a notice. 1.46 # 1.47 -refresh_adfiles: $(EXEC) $(SOURCE.AD) 1.48 +refresh_adfiles: $(EXEC) $(SOURCE.AD) $(ADLC_UPDATER) 1.49 @rm -rf $(TEMPDIR); mkdir $(TEMPDIR) 1.50 - $(QUIETLY) [ -f $(ADLC_UPDATER) ] || ( cp $(ADLC_UPDATER_DIRECTORY)/$(ADLC_UPDATER) . ; chmod +x $(ADLC_UPDATER) ) 1.51 $(QUIETLY) $(EXEC) $(ADLCFLAGS) $(SOURCE.AD) \ 1.52 -c$(TEMPDIR)/ad_$(Platform_arch_model).cpp -h$(TEMPDIR)/ad_$(Platform_arch_model).hpp -a$(TEMPDIR)/dfa_$(Platform_arch_model).cpp -v$(TEMPDIR)/adGlobals_$(Platform_arch_model).hpp \ 1.53 || { rm -rf $(TEMPDIR); exit 1; } 1.54 @@ -190,7 +201,15 @@ 1.55 # ######################################################################### 1.56 1.57 $(SOURCE.AD): $(SOURCES.AD) 1.58 - $(QUIETLY) cat $(SOURCES.AD) > $(SOURCE.AD) 1.59 + $(QUIETLY) $(PROCESS_AD_FILES) $(SOURCES.AD) > $(SOURCE.AD) 1.60 + 1.61 +#PROCESS_AD_FILES = cat 1.62 +# Pass through #line directives, in case user enables -g option above: 1.63 +PROCESS_AD_FILES = awk '{ \ 1.64 + if (CUR_FN != FILENAME) { CUR_FN=FILENAME; NR_BASE=NR-1; need_lineno=1 } \ 1.65 + if (need_lineno && $$0 !~ /\/\//) \ 1.66 + { print "\n\n\#line " (NR-NR_BASE) " \"" FILENAME "\""; need_lineno=0 }; \ 1.67 + print }' 1.68 1.69 $(OUTDIR)/%.o: %.cpp 1.70 @echo Compiling $<