make/linux/makefiles/adlc.make

changeset 910
284d0af00d53
parent 631
d1605aabd0a1
child 1014
0fbdb4381b99
child 1038
dbbe28fc66b5
     1.1 --- a/make/linux/makefiles/adlc.make	Mon Dec 08 17:15:02 2008 -0800
     1.2 +++ b/make/linux/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  # CFLAGS_WARN holds compiler options to suppress/enable warnings.
    1.16  # Suppress warnings (for now)
    1.17 @@ -125,7 +127,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 @@ -140,6 +150,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 @@ -149,9 +161,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 @@ -174,7 +185,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 $<

mercurial