213 ifeq ($(PLATFORM), macosx) 214 THREADLIBS = -pthread 215 # Needed for linking the various launchers 216 LDFLAGS += -framework Cocoa -framework Security \ 217 -framework ApplicationServices 218 OTHER_CPPFLAGS += -DPACKAGE_PATH='"$(PACKAGE_PATH)"' 219 220 # Default Info.plist file for the command line tools. This gets overridden by 221 # some of the jvmstat tools so that they have task_for_pid() privileges 222 ifndef INFO_PLIST_FILE 223 INFO_PLIST_FILE = Info-cmdline.plist 224 endif 225 LDFLAGS += -sectcreate __TEXT __info_plist $(LAUNCHER_PLATFORM_SRC)/lib/$(INFO_PLIST_FILE) 226 else 227 INFO_PLIST_FILE= 228 endif 229 230 # 231 # This rule only applies on unix. It supports quantify and its ilk. 232 # 233 $(ACTUAL_PROGRAM):: $(FILES_o) 234 @$(prep-target) 235 @set -- $?; \ 236 $(ECHO) Rebuilding $@ because of $$1 $$2 $$3 $$4 $$5 $$6 $${7:+...}; 237 @$(MKDIR) -p $(TEMPDIR) 238 $(LINK_PRE_CMD) $(CC) $(CC_OBJECT_OUTPUT_FLAG)$@ $(LDFLAGS) \ 239 $(FILES_o) $(THREADLIBS) $(LDLIBS) 240 ifeq ($(findstring privileged, $(INFO_PLIST_FILE)), privileged) 241 -codesign -s openjdk_codesign $@ 242 endif 243 @$(call binary_file_verification,$@) 244 ifneq ($(PLATFORM), macosx) 245 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) 246 ifeq ($(PROGRAM_SUPPORTS_FULL_DEBUG_SYMBOLS),1) 247 (set -e ; \ 248 $(CD) $(@D) ; \ 249 $(OBJCOPY) --only-keep-debug $(@F) $(@F).debuginfo ; \ 250 $(OBJCOPY) --add-gnu-debuglink=$(@F).debuginfo $(@F) ; \ 251 ) 252 ifeq ($(STRIP_POLICY),all_strip) 253 $(STRIP) $@ 254 else 255 ifeq ($(STRIP_POLICY),min_strip) 256 ifeq ($(PLATFORM), solaris) 257 $(STRIP) -x $@ 258 else 259 # assume Linux 260 $(STRIP) -g $@ 261 endif 262 # implied else here is no stripping at all 263 endif 264 endif 265 ifeq ($(ZIP_DEBUGINFO_FILES),1) 266 (set -e ; \ 267 $(CD) $(@D) ; \ 268 $(ZIPEXE) -q $(@F).diz $(@F).debuginfo ; \ 269 $(RM) $(@F).debuginfo ; \ 270 ) 271 # save ZIP'ed debug info with rest of the program's build artifacts | 213 ifeq ($(PLATFORM), macosx) 214 THREADLIBS = -pthread 215 # Needed for linking the various launchers 216 LDFLAGS += -framework Cocoa -framework Security \ 217 -framework ApplicationServices 218 OTHER_CPPFLAGS += -DPACKAGE_PATH='"$(PACKAGE_PATH)"' 219 220 # Default Info.plist file for the command line tools. This gets overridden by 221 # some of the jvmstat tools so that they have task_for_pid() privileges 222 ifndef INFO_PLIST_FILE 223 INFO_PLIST_FILE = Info-cmdline.plist 224 endif 225 LDFLAGS += -sectcreate __TEXT __info_plist $(LAUNCHER_PLATFORM_SRC)/lib/$(INFO_PLIST_FILE) 226 else 227 INFO_PLIST_FILE= 228 endif 229 230 # 231 # This rule only applies on unix. It supports quantify and its ilk. 232 # 233 234 ifeq ($(PLATFORM), solaris) 235 ifeq ($(PROGRAM_SUPPORTS_FULL_DEBUG_SYMBOLS),1) 236 $(ACTUAL_PROGRAM):: $(ADD_GNU_DEBUGLINK) $(FIX_EMPTY_SEC_HDR_FLAGS) 237 endif 238 endif 239 240 $(ACTUAL_PROGRAM):: $(FILES_o) 241 @$(prep-target) 242 @set -- $?; \ 243 $(ECHO) Rebuilding $@ because of $$1 $$2 $$3 $$4 $$5 $$6 $${7:+...}; 244 @$(MKDIR) -p $(TEMPDIR) 245 $(LINK_PRE_CMD) $(CC) $(CC_OBJECT_OUTPUT_FLAG)$@ $(LDFLAGS) \ 246 $(FILES_o) $(THREADLIBS) $(LDLIBS) 247 ifeq ($(findstring privileged, $(INFO_PLIST_FILE)), privileged) 248 -codesign -s openjdk_codesign $@ 249 endif 250 @$(call binary_file_verification,$@) 251 ifneq ($(PLATFORM), macosx) 252 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) 253 ifeq ($(PROGRAM_SUPPORTS_FULL_DEBUG_SYMBOLS),1) 254 ifeq ($(PLATFORM), solaris) 255 # gobjcopy crashes on "empty" section headers with the SHF_ALLOC flag set. 256 # Use $(FIX_EMPTY_SEC_HDR_FLAGS) to clear the SHF_ALLOC flag (if set) from 257 # empty section headers until a fixed $(OBJCOPY) is available. 258 # An empty section header has sh_addr == 0 and sh_size == 0. 259 # This problem has only been seen on Solaris X64, but we call this tool 260 # on all Solaris builds just in case. 261 # 262 # $(OBJCOPY) --add-gnu-debuglink=... corrupts SUNW_* sections. 263 # Use $(ADD_GNU_DEBUGLINK) until a fixed $(OBJCOPY) is available. 264 (set -e ; \ 265 $(CD) $(@D) ; \ 266 $(FIX_EMPTY_SEC_HDR_FLAGS) $(@F) ; \ 267 $(OBJCOPY) --only-keep-debug $(@F) $(@F).debuginfo ; \ 268 $(ADD_GNU_DEBUGLINK) $(@F).debuginfo $(@F) ; \ 269 ) 270 else # PLATFORM != solaris 271 (set -e ; \ 272 $(CD) $(@D) ; \ 273 $(OBJCOPY) --only-keep-debug $(@F) $(@F).debuginfo ; \ 274 $(OBJCOPY) --add-gnu-debuglink=$(@F).debuginfo $(@F) ; \ 275 ) 276 endif # PLATFORM == solaris 277 ifeq ($(STRIP_POLICY),all_strip) 278 $(STRIP) $@ 279 else 280 ifeq ($(STRIP_POLICY),min_strip) 281 ifeq ($(PLATFORM), solaris) 282 $(STRIP) -x $@ 283 else 284 # assume Linux 285 $(STRIP) -g $@ 286 endif 287 # implied else here is no stripping at all 288 endif 289 endif 290 ifeq ($(ZIP_DEBUGINFO_FILES),1) 291 (set -e ; \ 292 $(CD) $(@D) ; \ 293 $(ZIPEXE) -q $(@F).diz $(@F).debuginfo ; \ 294 $(RM) $(@F).debuginfo ; \ 295 ) 296 # save ZIP'ed debug info with rest of the program's build artifacts |