hotspot/make/solaris/makefiles/adlc.make
changeset 1662 76a93a5fb765
parent 670 ddf3e9583f2f
child 2129 e810a33b5c67
child 2105 347008ce7984
equal deleted inserted replaced
1661:7cb0f0d385f3 1662:76a93a5fb765
    52 
    52 
    53 # set INCLUDES for C preprocessor
    53 # set INCLUDES for C preprocessor
    54 Src_Dirs_I = ${Src_Dirs} $(GENERATED)
    54 Src_Dirs_I = ${Src_Dirs} $(GENERATED)
    55 INCLUDES += $(Src_Dirs_I:%=-I%)
    55 INCLUDES += $(Src_Dirs_I:%=-I%)
    56 
    56 
       
    57 # set flags for adlc compilation
       
    58 CPPFLAGS = $(SYSDEFS) $(INCLUDES)
       
    59 
    57 # Force assertions on.
    60 # Force assertions on.
    58 SYSDEFS += -DASSERT
    61 CPPFLAGS += -DASSERT
    59 CPPFLAGS = $(SYSDEFS) $(INCLUDES)
       
    60 
    62 
    61 ifndef USE_GCC
    63 ifndef USE_GCC
    62   # We need libCstd.so for adlc 
    64   # We need libCstd.so for adlc 
    63   CFLAGS += -library=Cstd -g
    65   CFLAGS += -library=Cstd -g
    64   LFLAGS += -library=Cstd -g
    66   LFLAGS += -library=Cstd -g
   139 
   141 
   140 # Get a unique temporary directory name, so multiple makes can run in parallel.
   142 # Get a unique temporary directory name, so multiple makes can run in parallel.
   141 # Note that product files are updated via "mv", which is atomic.
   143 # Note that product files are updated via "mv", which is atomic.
   142 TEMPDIR := $(OUTDIR)/mktmp$(shell echo $$$$)
   144 TEMPDIR := $(OUTDIR)/mktmp$(shell echo $$$$)
   143 
   145 
   144 ADLCFLAGS = -q -T
   146 # Pass -D flags into ADLC.
       
   147 ADLCFLAGS += $(SYSDEFS)
       
   148 
       
   149 # Note "+="; it is a hook so flags.make can add more flags, like -g or -DFOO.
       
   150 ADLCFLAGS += -q -T
       
   151 
       
   152 # Normally, debugging is done directly on the ad_<arch>*.cpp files.
       
   153 # But -g will put #line directives in those files pointing back to <arch>.ad.
       
   154 #ADLCFLAGS += -g
   145 
   155 
   146 ifdef LP64
   156 ifdef LP64
   147 ADLCFLAGS += -D_LP64
   157 ADLCFLAGS += -D_LP64
   148 else
   158 else
   149 ADLCFLAGS += -U_LP64
   159 ADLCFLAGS += -U_LP64
   154 # used to selectively update generated adlc files. This should
   164 # used to selectively update generated adlc files. This should
   155 # provide a nice compilation speed improvement.
   165 # provide a nice compilation speed improvement.
   156 #
   166 #
   157 ADLC_UPDATER_DIRECTORY = $(GAMMADIR)/make/$(OS)
   167 ADLC_UPDATER_DIRECTORY = $(GAMMADIR)/make/$(OS)
   158 ADLC_UPDATER = adlc_updater
   168 ADLC_UPDATER = adlc_updater
       
   169 $(ADLC_UPDATER): $(ADLC_UPDATER_DIRECTORY)/$(ADLC_UPDATER)
       
   170 	$(QUIETLY) cp $< $@; chmod +x $@
   159 
   171 
   160 # This action refreshes all generated adlc files simultaneously.
   172 # This action refreshes all generated adlc files simultaneously.
   161 # The way it works is this:
   173 # The way it works is this:
   162 # 1) create a scratch directory to work in.
   174 # 1) create a scratch directory to work in.
   163 # 2) if the current working directory does not have $(ADLC_UPDATER), copy it.
   175 # 2) if the current working directory does not have $(ADLC_UPDATER), copy it.
   164 # 3) run the compiled adlc executable. This will create new adlc files in the scratch directory.
   176 # 3) run the compiled adlc executable. This will create new adlc files in the scratch directory.
   165 # 4) call $(ADLC_UPDATER) on each generated adlc file. It will selectively update changed or missing files.
   177 # 4) call $(ADLC_UPDATER) on each generated adlc file. It will selectively update changed or missing files.
   166 # 5) If we actually updated any files, echo a notice.
   178 # 5) If we actually updated any files, echo a notice.
   167 #
   179 #
   168 refresh_adfiles: $(EXEC) $(SOURCE.AD)
   180 refresh_adfiles: $(EXEC) $(SOURCE.AD) $(ADLC_UPDATER)
   169 	@rm -rf $(TEMPDIR); mkdir $(TEMPDIR)
   181 	@rm -rf $(TEMPDIR); mkdir $(TEMPDIR)
   170 	$(QUIETLY) [ -f $(ADLC_UPDATER) ] || ( cp $(ADLC_UPDATER_DIRECTORY)/$(ADLC_UPDATER) . ; chmod +x $(ADLC_UPDATER) )
       
   171 	$(QUIETLY) $(EXEC) $(ADLCFLAGS) $(SOURCE.AD) \
   182 	$(QUIETLY) $(EXEC) $(ADLCFLAGS) $(SOURCE.AD) \
   172  -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 \
   183  -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 \
   173 	    || { rm -rf $(TEMPDIR); exit 1; }
   184 	    || { rm -rf $(TEMPDIR); exit 1; }
   174 	$(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model).cpp $(TEMPDIR) $(OUTDIR)
   185 	$(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model).cpp $(TEMPDIR) $(OUTDIR)
   175 	$(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model).hpp $(TEMPDIR) $(OUTDIR)
   186 	$(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model).hpp $(TEMPDIR) $(OUTDIR)
   188 
   199 
   189 
   200 
   190 # #########################################################################
   201 # #########################################################################
   191 
   202 
   192 $(SOURCE.AD): $(SOURCES.AD)
   203 $(SOURCE.AD): $(SOURCES.AD)
   193 	$(QUIETLY) cat $(SOURCES.AD) > $(SOURCE.AD)
   204 	$(QUIETLY) $(PROCESS_AD_FILES) $(SOURCES.AD) > $(SOURCE.AD)
       
   205 
       
   206 #PROCESS_AD_FILES = cat
       
   207 # Pass through #line directives, in case user enables -g option above:
       
   208 PROCESS_AD_FILES = awk '{ \
       
   209     if (CUR_FN != FILENAME) { CUR_FN=FILENAME; NR_BASE=NR-1; need_lineno=1 } \
       
   210     if (need_lineno && $$0 !~ /\/\//) \
       
   211       { print "\n\n\#line " (NR-NR_BASE) " \"" FILENAME "\""; need_lineno=0 }; \
       
   212     print }'
   194 
   213 
   195 $(OUTDIR)/%.o: %.cpp
   214 $(OUTDIR)/%.o: %.cpp
   196 	@echo Compiling $<
   215 	@echo Compiling $<
   197 	$(QUIETLY) $(REMOVE_TARGET)
   216 	$(QUIETLY) $(REMOVE_TARGET)
   198 	$(QUIETLY) $(COMPILE.CC) -o $@ $< $(COMPILE_DONE)
   217 	$(QUIETLY) $(COMPILE.CC) -o $@ $< $(COMPILE_DONE)