< prev index next >

make/common/NativeCompilation.gmk

Print this page




  36 
  37 # Extensions of files handled by this macro.
  38 NATIVE_SOURCE_EXTENSIONS := %.s %.c %.cpp %.m %.mm
  39 
  40 # Replaces native source extensions with the object file extension in a string.
  41 # Param 1: the string containing source file names with extensions
  42 # The surrounding strip is needed to keep additional whitespace out
  43 define replace_with_obj_extension
  44 $(strip \
  45   $(foreach extension, $(NATIVE_SOURCE_EXTENSIONS), \
  46       $(patsubst $(extension),%$(OBJ_SUFFIX),$(filter $(extension),$1))) \
  47 )
  48 endef
  49 
  50 ifeq ($(OPENJDK_BUILD_OS_ENV), windows.cygwin)
  51   UNIX_PATH_PREFIX := /cygdrive
  52 else ifeq ($(OPENJDK_BUILD_OS_ENV), windows.msys)
  53   UNIX_PATH_PREFIX :=
  54 endif
  55 


  56 WINDOWS_SHOWINCLUDE_SED_PATTERN := \
  57     -e '/^Note: including file:/!d' \
  58     -e 's|Note: including file: *||' \
  59     -e 's|\\|/|g' \
  60     -e 's|^\([a-zA-Z]\):|$(UNIX_PATH_PREFIX)/\1|g' \
  61     -e '/$(subst /,\/,$(TOPDIR))/!d' \
  62     -e 's|$$$$| \\|g' \
  63     #
  64 










  65 define add_native_source
  66   # param 1 = BUILD_MYPACKAGE
  67   # parma 2 = the source file name (..../alfa.c or .../beta.cpp)
  68   # param 3 = the bin dir that stores all .o (.obj) and .d files.
  69   # param 4 = the c flags to the compiler
  70   # param 5 = the c compiler
  71   # param 6 = the c++ flags to the compiler
  72   # param 7 = the c++ compiler
  73   # param 8 = the objc compiler
  74   # param 9 = the flags to the assembler
  75 
  76   ifneq (,$$(filter %.c,$2))
  77     # Compile as a C file
  78     $1_$2_FLAGS=$4 $$($1_$(notdir $2)_CFLAGS) -DTHIS_FILE='"$$(<F)"' -c
  79     $1_$2_COMP=$5
  80     $1_$2_DEP_FLAG:=$(C_FLAG_DEPS)
  81   else ifneq (,$$(filter %.m,$2))
  82     # Compile as a objective-c file
  83     $1_$2_FLAGS=-x objective-c $4 $$($1_$(notdir $2)_CFLAGS) -DTHIS_FILE='"$$(<F)"' -c
  84     $1_$2_COMP=$8


  88     $1_$2_FLAGS=$9 -DTHIS_FILE='"$$(<F)"'
  89     $1_$2_COMP=$(AS)
  90     $1_$2_DEP_FLAG:=
  91   else ifneq (,$$(filter %.cpp,$2)$$(filter %.mm,$2))
  92     # Compile as a C++ file
  93     $1_$2_FLAGS=$6 $$($1_$(notdir $2)_CXXFLAGS) -DTHIS_FILE='"$$(<F)"' -c
  94     $1_$2_COMP=$7
  95     $1_$2_DEP_FLAG:=$(CXX_FLAG_DEPS)
  96   else
  97     $$(error Internal error in NativeCompilation.gmk: no compiler for file $2)
  98   endif
  99   # Generate the .o (.obj) file name and place it in the bin dir.
 100   $1_$2_OBJ := $3/$$(call replace_with_obj_extension, $$(notdir $2))
 101   # Only continue if this object file hasn't been processed already. This lets the first found
 102   # source file override any other with the same name.
 103   ifeq (,$$(findstring $$($1_$2_OBJ),$$($1_ALL_OBJS)))
 104     $1_ALL_OBJS+=$$($1_$2_OBJ)
 105     ifeq (,$$(filter %.s,$2))
 106       # And this is the dependency file for this obj file.
 107       $1_$2_DEP:=$$(patsubst %$(OBJ_SUFFIX),%.d,$$($1_$2_OBJ))




 108       # Include previously generated dependency information. (if it exists)
 109       -include $$($1_$2_DEP)

 110 
 111       ifeq ($(TOOLCHAIN_TYPE), microsoft)
 112         $1_$2_DEBUG_OUT_FLAGS:=-Fd$$(patsubst %$(OBJ_SUFFIX),%.pdb,$$($1_$2_OBJ)) \
 113             -Fm$$(patsubst %$(OBJ_SUFFIX),%.map,$$($1_$2_OBJ))
 114       endif
 115     endif
 116 
 117     $$($1_$2_OBJ) : $2 $$($1_COMPILE_VARDEPS_FILE) | $$($1_BUILD_INFO)
 118         $(ECHO) $(LOG_INFO) "Compiling $$(notdir $2) (for $$(notdir $$($1_TARGET)))"
 119         ifneq ($(TOOLCHAIN_TYPE), microsoft)
 120           # The Solaris studio compiler doesn't output the full path to the object file in the
 121           # generated deps files. Fixing it with sed. If compiling assembly, don't try this.
 122           ifeq ($(TOOLCHAIN_TYPE)$$(filter %.s,$2), solstudio)
 123             $$($1_$2_COMP) $$($1_$2_FLAGS) $$($1_$2_DEP_FLAG) $$($1_$2_DEP).tmp $(CC_OUT_OPTION)$$($1_$2_OBJ) $2
 124             $(SED) 's|^$$(@F):|$$@:|' $$($1_$2_DEP).tmp > $$($1_$2_DEP)
 125           else
 126             $$($1_$2_COMP) $$($1_$2_FLAGS) $$($1_$2_DEP_FLAG) $$($1_$2_DEP) $(CC_OUT_OPTION)$$($1_$2_OBJ) $2
 127           endif
 128         endif
 129         # The Visual Studio compiler lacks a feature for generating make dependencies, but by
 130         # setting -showIncludes, all included files are printed. These are filtered out and
 131         # parsed into make dependences.
 132         ifeq ($(TOOLCHAIN_TYPE), microsoft)
 133           ($$($1_$2_COMP) $$($1_$2_FLAGS) -showIncludes $$($1_$2_DEBUG_OUT_FLAGS) \
 134               $(CC_OUT_OPTION)$$($1_$2_OBJ) $2 ; echo $$$$? > $$($1_$2_DEP).exitvalue) \
 135               | $(TEE) $$($1_$2_DEP).raw | $(GREP) -v -e "^Note: including file:" \
 136               -e "^$(notdir $2)$$$$" || test "$$$$?" = "1" ; \
 137               exit `cat $$($1_$2_DEP).exitvalue`
 138           $(RM) $$($1_$2_DEP).exitvalue
 139           ($(ECHO) $$@: \\ \
 140           && $(SED) $(WINDOWS_SHOWINCLUDE_SED_PATTERN) $$($1_$2_DEP).raw) > $$($1_$2_DEP)
 141         endif





 142   endif
 143 endef
 144 
 145 # Setup make rules for creating a native binary (a shared library or an
 146 # executable).
 147 #
 148 # Parameter 1 is the name of the rule. This name is used as variable prefix,
 149 # and the targets generated are listed in a variable by that name.
 150 #
 151 # Remaining parameters are named arguments. These include:
 152 #   SRC one or more directory roots to scan for C/C++ files.
 153 #   LANG C or C++
 154 #   CFLAGS the compiler flags to be used, used both for C and C++.
 155 #   CXXFLAGS the compiler flags to be used for c++, if set overrides CFLAGS.
 156 #   LDFLAGS the linker flags to be used, used both for C and C++.
 157 #   LDFLAGS_SUFFIX the linker flags to be added last on the commandline
 158 #       typically the libraries linked to.
 159 #   ARFLAGS the archiver flags to be used
 160 #   OBJECT_DIR the directory where we store the object files
 161 #   LIBRARY the resulting library file


 435       $$($1_CC) $$($1_CXX) $$($1_OBJC) $$($1_ASFLAGS) \
 436       $$(foreach s, $$($1_SRCS), \
 437           $$($1_$$(notdir $$s)_CFLAGS) $$($1_$$(notdir $$s)_CXXFLAGS))
 438   $1_COMPILE_VARDEPS_FILE := $$(call DependOnVariable, $1_COMPILE_VARDEPS, \
 439       $$($1_OBJECT_DIR)/$$($1_NOSUFFIX).comp.vardeps)
 440 
 441   # Now call add_native_source for each source file we are going to compile.
 442   $$(foreach p,$$($1_SRCS), \
 443       $$(eval $$(call add_native_source,$1,$$p,$$($1_OBJECT_DIR), \
 444           $$($1_CFLAGS) $$($1_EXTRA_CFLAGS) $(SYSROOT_CFLAGS), \
 445           $$($1_CC), \
 446           $$($1_CXXFLAGS) $$($1_EXTRA_CXXFLAGS) $(SYSROOT_CFLAGS), \
 447           $$($1_CXX),$$($1_OBJC),$$($1_ASFLAGS))))
 448 
 449   # Setup rule for printing progress info when compiling source files.
 450   # This is a rough heuristic and may not always print accurate information.
 451   $$($1_BUILD_INFO): $$($1_SRCS) $$($1_COMPILE_VARDEPS_FILE)
 452         ifeq ($$(wildcard $$($1_TARGET)),)
 453           $(ECHO) 'Creating $$($1_BASENAME) from $$(words $$(filter-out %.vardeps, $$?)) file(s)'
 454         else
 455           $(ECHO) 'Updating $$($1_BASENAME) from $$(words $$(filter-out %.vardeps, $$?)) file(s)'



 456         endif
 457         $(TOUCH) $$@
 458 
 459   # On windows we need to create a resource file
 460   ifeq ($(OPENJDK_TARGET_OS), windows)
 461     ifneq (,$$($1_VERSIONINFO_RESOURCE))
 462       $1_RES:=$$($1_OBJECT_DIR)/$$($1_BASENAME).res
 463       $1_RES_DEP:=$$($1_RES).d

 464       -include $$($1_RES_DEP)

 465 
 466       $1_RES_VARDEPS := $(RC) $$($1_RC_FLAGS)
 467       $1_RES_VARDEPS_FILE := $$(call DependOnVariable, $1_RES_VARDEPS, \
 468           $$($1_RES).vardeps)
 469 
 470       $$($1_RES): $$($1_VERSIONINFO_RESOURCE) $$($1_RES_VARDEPS_FILE)
 471                 $(ECHO) $(LOG_INFO) "Compiling resource $$(notdir $$($1_VERSIONINFO_RESOURCE)) (for $$(notdir $$($1_TARGET)))"
 472                 $(RC) $$($1_RC_FLAGS) $(CC_OUT_OPTION)$$@ $$($1_VERSIONINFO_RESOURCE)
 473                 # Windows RC compiler does not support -showIncludes, so we mis-use CL for this.
 474                 $(CC) $$($1_RC_FLAGS) -showIncludes -nologo -TC \
 475                     $(CC_OUT_OPTION)$$($1_RES_DEP).obj $$($1_VERSIONINFO_RESOURCE) > $$($1_RES_DEP).raw 2>&1 || exit 0
 476                 ($(ECHO) $$($1_RES): \\ \
 477                 && $(SED) $(WINDOWS_SHOWINCLUDE_SED_PATTERN) $$($1_RES_DEP).raw) > $$($1_RES_DEP)

 478     endif
 479     ifneq (,$$($1_MANIFEST))
 480       $1_GEN_MANIFEST:=$$($1_OBJECT_DIR)/$$($1_PROGRAM).manifest
 481       IMVERSIONVALUE:=$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION).$(JDK_UPDATE_VERSION).$(COOKED_BUILD_NUMBER)
 482       $1_MANIFEST_VARDEPS_FILE := $$(call DependOnVariable, IMVERSIONVALUE, \
 483           $$($1_GEN_MANIFEST).vardeps)
 484       $$($1_GEN_MANIFEST): $$($1_MANIFEST) $$($1_MANIFEST_VARDEPS_FILE)
 485                 $(SED) 's%IMVERSION%$$(IMVERSIONVALUE)%g;s%PROGRAM%$$($1_PROGRAM)%g' $$< > $$@
 486     endif
 487   endif
 488 
 489   # mapfile doesnt seem to be implemented on macosx (yet??)
 490   ifneq ($(OPENJDK_TARGET_OS),macosx)
 491     ifneq ($(OPENJDK_TARGET_OS),windows)
 492       $1_REAL_MAPFILE:=$$($1_MAPFILE)
 493       ifneq (,$$($1_REORDER))
 494         $1_REAL_MAPFILE:=$$($1_OBJECT_DIR)/mapfile
 495 
 496         $$($1_REAL_MAPFILE) : $$($1_MAPFILE) $$($1_REORDER)
 497                 $$(MKDIR) -p $$(@D)




  36 
  37 # Extensions of files handled by this macro.
  38 NATIVE_SOURCE_EXTENSIONS := %.s %.c %.cpp %.m %.mm
  39 
  40 # Replaces native source extensions with the object file extension in a string.
  41 # Param 1: the string containing source file names with extensions
  42 # The surrounding strip is needed to keep additional whitespace out
  43 define replace_with_obj_extension
  44 $(strip \
  45   $(foreach extension, $(NATIVE_SOURCE_EXTENSIONS), \
  46       $(patsubst $(extension),%$(OBJ_SUFFIX),$(filter $(extension),$1))) \
  47 )
  48 endef
  49 
  50 ifeq ($(OPENJDK_BUILD_OS_ENV), windows.cygwin)
  51   UNIX_PATH_PREFIX := /cygdrive
  52 else ifeq ($(OPENJDK_BUILD_OS_ENV), windows.msys)
  53   UNIX_PATH_PREFIX :=
  54 endif
  55 
  56 # This pattern is used to transform the output of the microsoft CL compiler
  57 # into a make syntax dependency file (.d)
  58 WINDOWS_SHOWINCLUDE_SED_PATTERN := \
  59     -e '/^Note: including file:/!d' \
  60     -e 's|Note: including file: *||' \
  61     -e 's|\\|/|g' \
  62     -e 's|^\([a-zA-Z]\):|$(UNIX_PATH_PREFIX)/\1|g' \
  63     -e '/$(subst /,\/,$(TOPDIR))/!d' \
  64     -e 's|$$$$| \\|g' \
  65     #
  66 
  67 # This pattern is used to transform a dependency file (.d) to a list
  68 # of make targets for dependent files (.d.targets)
  69 DEPENDENCY_TARGET_SED_PATTERN := \
  70     -e 's/\#.*//' \
  71     -e 's/^[^:]*: *//' \
  72     -e 's/ *\\$$$$//' \
  73     -e '/^$$$$/ d' \
  74     -e 's/$$$$/ :/' \
  75     #
  76 
  77 define add_native_source
  78   # param 1 = BUILD_MYPACKAGE
  79   # parma 2 = the source file name (..../alfa.c or .../beta.cpp)
  80   # param 3 = the bin dir that stores all .o (.obj) and .d files.
  81   # param 4 = the c flags to the compiler
  82   # param 5 = the c compiler
  83   # param 6 = the c++ flags to the compiler
  84   # param 7 = the c++ compiler
  85   # param 8 = the objc compiler
  86   # param 9 = the flags to the assembler
  87 
  88   ifneq (,$$(filter %.c,$2))
  89     # Compile as a C file
  90     $1_$2_FLAGS=$4 $$($1_$(notdir $2)_CFLAGS) -DTHIS_FILE='"$$(<F)"' -c
  91     $1_$2_COMP=$5
  92     $1_$2_DEP_FLAG:=$(C_FLAG_DEPS)
  93   else ifneq (,$$(filter %.m,$2))
  94     # Compile as a objective-c file
  95     $1_$2_FLAGS=-x objective-c $4 $$($1_$(notdir $2)_CFLAGS) -DTHIS_FILE='"$$(<F)"' -c
  96     $1_$2_COMP=$8


 100     $1_$2_FLAGS=$9 -DTHIS_FILE='"$$(<F)"'
 101     $1_$2_COMP=$(AS)
 102     $1_$2_DEP_FLAG:=
 103   else ifneq (,$$(filter %.cpp,$2)$$(filter %.mm,$2))
 104     # Compile as a C++ file
 105     $1_$2_FLAGS=$6 $$($1_$(notdir $2)_CXXFLAGS) -DTHIS_FILE='"$$(<F)"' -c
 106     $1_$2_COMP=$7
 107     $1_$2_DEP_FLAG:=$(CXX_FLAG_DEPS)
 108   else
 109     $$(error Internal error in NativeCompilation.gmk: no compiler for file $2)
 110   endif
 111   # Generate the .o (.obj) file name and place it in the bin dir.
 112   $1_$2_OBJ := $3/$$(call replace_with_obj_extension, $$(notdir $2))
 113   # Only continue if this object file hasn't been processed already. This lets the first found
 114   # source file override any other with the same name.
 115   ifeq (,$$(findstring $$($1_$2_OBJ),$$($1_ALL_OBJS)))
 116     $1_ALL_OBJS+=$$($1_$2_OBJ)
 117     ifeq (,$$(filter %.s,$2))
 118       # And this is the dependency file for this obj file.
 119       $1_$2_DEP:=$$(patsubst %$(OBJ_SUFFIX),%.d,$$($1_$2_OBJ))
 120       # The dependency target file lists all dependencies as empty targets
 121       # to avoid make error "No rule to make target" for removed files
 122       $1_$2_DEP_TARGETS:=$$(patsubst %$(OBJ_SUFFIX),%.d.targets,$$($1_$2_OBJ))
 123 
 124       # Include previously generated dependency information. (if it exists)
 125       -include $$($1_$2_DEP)
 126       -include $$($1_$2_DEP_TARGETS)
 127 
 128       ifeq ($(TOOLCHAIN_TYPE), microsoft)
 129         $1_$2_DEBUG_OUT_FLAGS:=-Fd$$(patsubst %$(OBJ_SUFFIX),%.pdb,$$($1_$2_OBJ)) \
 130             -Fm$$(patsubst %$(OBJ_SUFFIX),%.map,$$($1_$2_OBJ))
 131       endif
 132     endif
 133 
 134     $$($1_$2_OBJ) : $2 $$($1_COMPILE_VARDEPS_FILE) | $$($1_BUILD_INFO)
 135         $(ECHO) $(LOG_INFO) "Compiling $$(notdir $2) (for $$(notdir $$($1_TARGET)))"
 136         ifneq ($(TOOLCHAIN_TYPE), microsoft)
 137           # The Solaris studio compiler doesn't output the full path to the object file in the
 138           # generated deps files. Fixing it with sed. If compiling assembly, don't try this.
 139           ifeq ($(TOOLCHAIN_TYPE)$$(filter %.s,$2), solstudio)
 140             $$($1_$2_COMP) $$($1_$2_FLAGS) $$($1_$2_DEP_FLAG) $$($1_$2_DEP).tmp $(CC_OUT_OPTION)$$($1_$2_OBJ) $2
 141             $(SED) 's|^$$(@F):|$$@:|' $$($1_$2_DEP).tmp > $$($1_$2_DEP)
 142           else
 143             $$($1_$2_COMP) $$($1_$2_FLAGS) $$($1_$2_DEP_FLAG) $$($1_$2_DEP) $(CC_OUT_OPTION)$$($1_$2_OBJ) $2
 144           endif
 145         endif
 146         # The Visual Studio compiler lacks a feature for generating make dependencies, but by
 147         # setting -showIncludes, all included files are printed. These are filtered out and
 148         # parsed into make dependences.
 149         ifeq ($(TOOLCHAIN_TYPE), microsoft)
 150           ($$($1_$2_COMP) $$($1_$2_FLAGS) -showIncludes $$($1_$2_DEBUG_OUT_FLAGS) \
 151               $(CC_OUT_OPTION)$$($1_$2_OBJ) $2 ; echo $$$$? > $$($1_$2_DEP).exitvalue) \
 152               | $(TEE) $$($1_$2_DEP).raw | $(GREP) -v -e "^Note: including file:" \
 153               -e "^$(notdir $2)$$$$" || test "$$$$?" = "1" ; \
 154               exit `cat $$($1_$2_DEP).exitvalue`
 155           $(RM) $$($1_$2_DEP).exitvalue
 156           ($(ECHO) $$@: \\ \
 157           && $(SED) $(WINDOWS_SHOWINCLUDE_SED_PATTERN) $$($1_$2_DEP).raw) > $$($1_$2_DEP)
 158         endif
 159         # Create a dependency target file from the dependency file.
 160         # Solution suggested by http://make.mad-scientist.net/papers/advanced-auto-dependency-generation/
 161         ifneq ($$($1_$2_DEP),)
 162           $(SED) $(DEPENDENCY_TARGET_SED_PATTERN) $$($1_$2_DEP) > $$($1_$2_DEP_TARGETS)
 163         endif
 164   endif
 165 endef
 166 
 167 # Setup make rules for creating a native binary (a shared library or an
 168 # executable).
 169 #
 170 # Parameter 1 is the name of the rule. This name is used as variable prefix,
 171 # and the targets generated are listed in a variable by that name.
 172 #
 173 # Remaining parameters are named arguments. These include:
 174 #   SRC one or more directory roots to scan for C/C++ files.
 175 #   LANG C or C++
 176 #   CFLAGS the compiler flags to be used, used both for C and C++.
 177 #   CXXFLAGS the compiler flags to be used for c++, if set overrides CFLAGS.
 178 #   LDFLAGS the linker flags to be used, used both for C and C++.
 179 #   LDFLAGS_SUFFIX the linker flags to be added last on the commandline
 180 #       typically the libraries linked to.
 181 #   ARFLAGS the archiver flags to be used
 182 #   OBJECT_DIR the directory where we store the object files
 183 #   LIBRARY the resulting library file


 457       $$($1_CC) $$($1_CXX) $$($1_OBJC) $$($1_ASFLAGS) \
 458       $$(foreach s, $$($1_SRCS), \
 459           $$($1_$$(notdir $$s)_CFLAGS) $$($1_$$(notdir $$s)_CXXFLAGS))
 460   $1_COMPILE_VARDEPS_FILE := $$(call DependOnVariable, $1_COMPILE_VARDEPS, \
 461       $$($1_OBJECT_DIR)/$$($1_NOSUFFIX).comp.vardeps)
 462 
 463   # Now call add_native_source for each source file we are going to compile.
 464   $$(foreach p,$$($1_SRCS), \
 465       $$(eval $$(call add_native_source,$1,$$p,$$($1_OBJECT_DIR), \
 466           $$($1_CFLAGS) $$($1_EXTRA_CFLAGS) $(SYSROOT_CFLAGS), \
 467           $$($1_CC), \
 468           $$($1_CXXFLAGS) $$($1_EXTRA_CXXFLAGS) $(SYSROOT_CFLAGS), \
 469           $$($1_CXX),$$($1_OBJC),$$($1_ASFLAGS))))
 470 
 471   # Setup rule for printing progress info when compiling source files.
 472   # This is a rough heuristic and may not always print accurate information.
 473   $$($1_BUILD_INFO): $$($1_SRCS) $$($1_COMPILE_VARDEPS_FILE)
 474         ifeq ($$(wildcard $$($1_TARGET)),)
 475           $(ECHO) 'Creating $$($1_BASENAME) from $$(words $$(filter-out %.vardeps, $$?)) file(s)'
 476         else
 477           $(ECHO) $$(strip 'Updating $$($1_BASENAME)' \
 478               $$(if $$(filter-out %.vardeps, $$?), \
 479                 'from $$(words $$(filter-out %.vardeps, $$?)) file(s)') \
 480               $$(if $$(filter %.vardeps, $$?), 'due to makefile changes'))
 481         endif
 482         $(TOUCH) $$@
 483 
 484   # On windows we need to create a resource file
 485   ifeq ($(OPENJDK_TARGET_OS), windows)
 486     ifneq (,$$($1_VERSIONINFO_RESOURCE))
 487       $1_RES:=$$($1_OBJECT_DIR)/$$($1_BASENAME).res
 488       $1_RES_DEP:=$$($1_RES).d
 489       $1_RES_DEP_TARGETS:=$$($1_RES).d.targets
 490       -include $$($1_RES_DEP)
 491       -include $$($1_RES_DEP_TARGETS)
 492 
 493       $1_RES_VARDEPS := $(RC) $$($1_RC_FLAGS)
 494       $1_RES_VARDEPS_FILE := $$(call DependOnVariable, $1_RES_VARDEPS, \
 495           $$($1_RES).vardeps)
 496 
 497       $$($1_RES): $$($1_VERSIONINFO_RESOURCE) $$($1_RES_VARDEPS_FILE)
 498                 $(ECHO) $(LOG_INFO) "Compiling resource $$(notdir $$($1_VERSIONINFO_RESOURCE)) (for $$(notdir $$($1_TARGET)))"
 499                 $(RC) $$($1_RC_FLAGS) $(CC_OUT_OPTION)$$@ $$($1_VERSIONINFO_RESOURCE)
 500                 # Windows RC compiler does not support -showIncludes, so we mis-use CL for this.
 501                 $(CC) $$($1_RC_FLAGS) -showIncludes -nologo -TC \
 502                     $(CC_OUT_OPTION)$$($1_RES_DEP).obj $$($1_VERSIONINFO_RESOURCE) > $$($1_RES_DEP).raw 2>&1 || exit 0
 503                 ($(ECHO) $$($1_RES): \\ \
 504                 && $(SED) $(WINDOWS_SHOWINCLUDE_SED_PATTERN) $$($1_RES_DEP).raw) > $$($1_RES_DEP)
 505                 $(SED) $(DEPENDENCY_TARGET_SED_PATTERN) $$($1_RES_DEP) > $$($1_RES_DEP_TARGETS)
 506     endif
 507     ifneq (,$$($1_MANIFEST))
 508       $1_GEN_MANIFEST:=$$($1_OBJECT_DIR)/$$($1_PROGRAM).manifest
 509       IMVERSIONVALUE:=$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION).$(JDK_UPDATE_VERSION).$(COOKED_BUILD_NUMBER)
 510       $1_MANIFEST_VARDEPS_FILE := $$(call DependOnVariable, IMVERSIONVALUE, \
 511           $$($1_GEN_MANIFEST).vardeps)
 512       $$($1_GEN_MANIFEST): $$($1_MANIFEST) $$($1_MANIFEST_VARDEPS_FILE)
 513                 $(SED) 's%IMVERSION%$$(IMVERSIONVALUE)%g;s%PROGRAM%$$($1_PROGRAM)%g' $$< > $$@
 514     endif
 515   endif
 516 
 517   # mapfile doesnt seem to be implemented on macosx (yet??)
 518   ifneq ($(OPENJDK_TARGET_OS),macosx)
 519     ifneq ($(OPENJDK_TARGET_OS),windows)
 520       $1_REAL_MAPFILE:=$$($1_MAPFILE)
 521       ifneq (,$$($1_REORDER))
 522         $1_REAL_MAPFILE:=$$($1_OBJECT_DIR)/mapfile
 523 
 524         $$($1_REAL_MAPFILE) : $$($1_MAPFILE) $$($1_REORDER)
 525                 $$(MKDIR) -p $$(@D)


< prev index next >