common/makefiles/NativeCompilation.gmk
changeset 21057 6cfd8ccbfbbc
parent 20641 59b55d8f4a75
child 22467 b16a5ae55d50
equal deleted inserted replaced
21056:16245d19b19a 21057:6cfd8ccbfbbc
   433         ifneq ($$($1_OUTPUT_DIR),$$($1_OBJECT_DIR))
   433         ifneq ($$($1_OUTPUT_DIR),$$($1_OBJECT_DIR))
   434           $$($1_OUTPUT_DIR)/% : $$($1_OBJECT_DIR)/%
   434           $$($1_OUTPUT_DIR)/% : $$($1_OBJECT_DIR)/%
   435 		$(CP) $$< $$@
   435 		$(CP) $$< $$@
   436         endif
   436         endif
   437 
   437 
   438                 ifneq ($(OPENJDK_TARGET_OS), macosx)   # OBJCOPY is not used on MacOS X
   438         ifneq ($(OPENJDK_TARGET_OS), macosx)   # OBJCOPY is not used on MacOS X
   439                   ifneq ($(OPENJDK_TARGET_OS), windows)  # nor on Windows
   439           ifneq ($(OPENJDK_TARGET_OS), windows)  # nor on Windows
   440                     ifeq ($(OPENJDK_TARGET_OS), solaris)
   440             ifeq ($(OPENJDK_TARGET_OS), solaris)
   441                         # gobjcopy crashes on "empty" section headers with the SHF_ALLOC flag set.
   441               # gobjcopy crashes on "empty" section headers with the SHF_ALLOC flag set.
   442                         # Use $(FIX_EMPTY_SEC_HDR_FLAGS) to clear the SHF_ALLOC flag (if set) from
   442               # Use $(FIX_EMPTY_SEC_HDR_FLAGS) to clear the SHF_ALLOC flag (if set) from
   443                         # empty section headers until a fixed $(OBJCOPY) is available.
   443               # empty section headers until a fixed $(OBJCOPY) is available.
   444                         # An empty section header has sh_addr == 0 and sh_size == 0.
   444               # An empty section header has sh_addr == 0 and sh_size == 0.
   445                         # This problem has only been seen on Solaris X64, but we call this tool
   445               # This problem has only been seen on Solaris X64, but we call this tool
   446                         # on all Solaris builds just in case.
   446               # on all Solaris builds just in case.
   447                         #
   447               #
   448                         # $(OBJCOPY) --add-gnu-debuglink=... corrupts SUNW_* sections.
   448               # $(OBJCOPY) --add-gnu-debuglink=... corrupts SUNW_* sections.
   449                         # Use $(ADD_GNU_DEBUGLINK) until a fixed $(OBJCOPY) is available.
   449               # Use $(ADD_GNU_DEBUGLINK) until a fixed $(OBJCOPY) is available.
   450                         $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo : $$($1_TARGET) \
   450               $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo : $$($1_TARGET) \
   451 					    $(FIX_EMPTY_SEC_HDR_FLAGS) $(ADD_GNU_DEBUGLINK)
   451 				$(FIX_EMPTY_SEC_HDR_FLAGS) $(ADD_GNU_DEBUGLINK)
   452 			    $(RM) $$@
   452 		$(RM) $$@
   453 			    $(FIX_EMPTY_SEC_HDR_FLAGS) $(LOG_INFO) $$<
   453 		$(FIX_EMPTY_SEC_HDR_FLAGS) $(LOG_INFO) $$<
   454 			    $(OBJCOPY) --only-keep-debug $$< $$@
   454 		$(OBJCOPY) --only-keep-debug $$< $$@
   455 			    $(CD) $$(@D) && $(ADD_GNU_DEBUGLINK) $(LOG_INFO) $$(@F) $$<
   455 		$(CD) $$(@D) && $(ADD_GNU_DEBUGLINK) $(LOG_INFO) $$(@F) $$<
   456                     else # not solaris
   456             else # not solaris
   457                         $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo : $$($1_TARGET)
   457               $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo : $$($1_TARGET)
   458 			    $(RM) $$@
   458 		$(RM) $$@
   459 			    $(OBJCOPY) --only-keep-debug $$< $$@
   459 		$(OBJCOPY) --only-keep-debug $$< $$@
   460 			    $(CD) $$(@D) && $(OBJCOPY) --add-gnu-debuglink=$$(@F) $$<
   460 		$(CD) $$(@D) && $(OBJCOPY) --add-gnu-debuglink=$$(@F) $$<
   461                     endif # Touch to not retrigger rule on rebuild
   461             endif # Touch to not retrigger rule on rebuild
   462 		$(TOUCH) $$@
   462 		$(TOUCH) $$@
   463                   endif # !windows
   463           endif # !windows
   464                 endif # !macosx
   464         endif # !macosx
   465 
   465 
   466         ifeq ($(ZIP_DEBUGINFO_FILES), true)
   466         ifeq ($(ZIP_DEBUGINFO_FILES), true)
   467                   ifneq ($(OPENJDK_TARGET_OS), macosx) # no MacOS X support yet
   467 ifneq ($(OPENJDK_TARGET_OS), macosx) # no MacOS X support yet
   468           $1 += $$($1_OUTPUT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).diz
   468           $1 += $$($1_OUTPUT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).diz
   469 
   469 
   470           ifeq ($(OPENJDK_TARGET_OS), windows)
   470           ifeq ($(OPENJDK_TARGET_OS), windows)
   471             $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).diz : $$($1_TARGET)
   471             $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).diz : $$($1_TARGET)
   472 		$(CD) $$($1_OBJECT_DIR) \
   472 		$(CD) $$($1_OBJECT_DIR) \
   475             $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).diz : $$($1_TARGET) \
   475             $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).diz : $$($1_TARGET) \
   476                 $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo
   476                 $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo
   477 		$(CD) $$($1_OBJECT_DIR) \
   477 		$(CD) $$($1_OBJECT_DIR) \
   478 		&& $(ZIP) -q $$@ $$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo
   478 		&& $(ZIP) -q $$@ $$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo
   479           endif
   479           endif
   480                   endif # no MacOS X support yet
   480 endif # no MacOS X support yet
   481         else
   481         else
   482           ifeq ($(OPENJDK_TARGET_OS), windows)
   482           ifeq ($(OPENJDK_TARGET_OS), windows)
   483             $1 += $$($1_OUTPUT_DIR)/$$($1_LIBRARY).map \
   483             $1 += $$($1_OUTPUT_DIR)/$$($1_LIBRARY).map \
   484                 $$($1_OUTPUT_DIR)/$$($1_LIBRARY).pdb
   484                 $$($1_OUTPUT_DIR)/$$($1_LIBRARY).pdb
   485                     else ifneq ($(OPENJDK_TARGET_OS), macosx) # MacOS X does not use .debuginfo files
   485           else ifneq ($(OPENJDK_TARGET_OS), macosx) # MacOS X does not use .debuginfo files
   486             $1 += $$($1_OUTPUT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo
   486             $1 += $$($1_OUTPUT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo
   487           endif
   487           endif
   488         endif
   488         endif
   489       endif
   489       endif
   490     endif
   490     endif
   517         ifneq ($$($1_OUTPUT_DIR),$$($1_OBJECT_DIR))
   517         ifneq ($$($1_OUTPUT_DIR),$$($1_OBJECT_DIR))
   518           $$($1_OUTPUT_DIR)/% : $$($1_OBJECT_DIR)/%
   518           $$($1_OUTPUT_DIR)/% : $$($1_OBJECT_DIR)/%
   519 		$(CP) $$< $$@
   519 		$(CP) $$< $$@
   520         endif
   520         endif
   521 
   521 
   522                 ifneq ($(OPENJDK_TARGET_OS), macosx)   # OBJCOPY is not used on MacOS X
   522         ifneq ($(OPENJDK_TARGET_OS), macosx)   # OBJCOPY is not used on MacOS X
   523                   ifneq ($(OPENJDK_TARGET_OS), windows)  # nor on Windows
   523           ifneq ($(OPENJDK_TARGET_OS), windows)  # nor on Windows
   524                     ifeq ($(OPENJDK_TARGET_OS), solaris)
   524             ifeq ($(OPENJDK_TARGET_OS), solaris)
   525                         # gobjcopy crashes on "empty" section headers with the SHF_ALLOC flag set.
   525               # gobjcopy crashes on "empty" section headers with the SHF_ALLOC flag set.
   526                         # Use $(FIX_EMPTY_SEC_HDR_FLAGS) to clear the SHF_ALLOC flag (if set) from
   526               # Use $(FIX_EMPTY_SEC_HDR_FLAGS) to clear the SHF_ALLOC flag (if set) from
   527                         # empty section headers until a fixed $(OBJCOPY) is available.
   527               # empty section headers until a fixed $(OBJCOPY) is available.
   528                         # An empty section header has sh_addr == 0 and sh_size == 0.
   528               # An empty section header has sh_addr == 0 and sh_size == 0.
   529                         # This problem has only been seen on Solaris X64, but we call this tool
   529               # This problem has only been seen on Solaris X64, but we call this tool
   530                         # on all Solaris builds just in case.
   530               # on all Solaris builds just in case.
   531                         #
   531               #
   532                         # $(OBJCOPY) --add-gnu-debuglink=... corrupts SUNW_* sections.
   532               # $(OBJCOPY) --add-gnu-debuglink=... corrupts SUNW_* sections.
   533                         # Use $(ADD_GNU_DEBUGLINK) until a fixed $(OBJCOPY) is available.
   533               # Use $(ADD_GNU_DEBUGLINK) until a fixed $(OBJCOPY) is available.
   534                         $$($1_OBJECT_DIR)/$$($1_PROGRAM).debuginfo : $$($1_TARGET) \
   534               $$($1_OBJECT_DIR)/$$($1_PROGRAM).debuginfo : $$($1_TARGET) \
   535 					    $(FIX_EMPTY_SEC_HDR_FLAGS) $(ADD_GNU_DEBUGLINK)
   535 				$(FIX_EMPTY_SEC_HDR_FLAGS) $(ADD_GNU_DEBUGLINK)
   536 			    $(RM) $$@
   536 		$(RM) $$@
   537 			    $(FIX_EMPTY_SEC_HDR_FLAGS) $(LOG_INFO) $$<
   537 		$(FIX_EMPTY_SEC_HDR_FLAGS) $(LOG_INFO) $$<
   538 			    $(OBJCOPY) --only-keep-debug $$< $$@
   538 		$(OBJCOPY) --only-keep-debug $$< $$@
   539 			    $(CD) $$(@D) && $(ADD_GNU_DEBUGLINK) $(LOG_INFO) $$(@F) $$<
   539 		$(CD) $$(@D) && $(ADD_GNU_DEBUGLINK) $(LOG_INFO) $$(@F) $$<
   540                     else # not solaris
   540             else # not solaris
   541                         $$($1_OBJECT_DIR)/$$($1_PROGRAM).debuginfo : $$($1_TARGET)
   541               $$($1_OBJECT_DIR)/$$($1_PROGRAM).debuginfo : $$($1_TARGET)
   542 			    $(RM) $$@
   542 		$(RM) $$@
   543 			    $(OBJCOPY) --only-keep-debug $$< $$@
   543 		$(OBJCOPY) --only-keep-debug $$< $$@
   544 			    $(CD) $$(@D) && $(OBJCOPY) --add-gnu-debuglink=$$(@F) $$<
   544 		$(CD) $$(@D) && $(OBJCOPY) --add-gnu-debuglink=$$(@F) $$<
   545                     endif
   545             endif
   546 			    $(TOUCH) $$@
   546 		$(TOUCH) $$@
   547                   endif # !windows
   547           endif # !windows
   548                 endif # !macosx
   548         endif # !macosx
   549 
   549 
   550         ifeq ($(ZIP_DEBUGINFO_FILES), true)
   550         ifeq ($(ZIP_DEBUGINFO_FILES), true)
   551                   ifneq ($(OPENJDK_TARGET_OS), macosx) # no MacOS X support yet
   551 ifneq ($(OPENJDK_TARGET_OS), macosx) # no MacOS X support yet
   552           $1 += $$($1_OUTPUT_DIR)/$$($1_PROGRAM).diz
   552           $1 += $$($1_OUTPUT_DIR)/$$($1_PROGRAM).diz
   553 
   553 
   554           ifeq ($(OPENJDK_TARGET_OS), windows)
   554           ifeq ($(OPENJDK_TARGET_OS), windows)
   555             $$($1_OBJECT_DIR)/$$($1_PROGRAM).diz : $$($1_TARGET)
   555             $$($1_OBJECT_DIR)/$$($1_PROGRAM).diz : $$($1_TARGET)
   556 		$(CD) $$($1_OBJECT_DIR) \
   556 		$(CD) $$($1_OBJECT_DIR) \
   559             $$($1_OBJECT_DIR)/$$(PROGRAM_PREFIX)$$($1_PROGRAM).diz : $$($1_TARGET) \
   559             $$($1_OBJECT_DIR)/$$(PROGRAM_PREFIX)$$($1_PROGRAM).diz : $$($1_TARGET) \
   560                 $$($1_OBJECT_DIR)/$$($1_PROGRAM).debuginfo
   560                 $$($1_OBJECT_DIR)/$$($1_PROGRAM).debuginfo
   561 		$(CD) $$($1_OBJECT_DIR) \
   561 		$(CD) $$($1_OBJECT_DIR) \
   562 		&& $(ZIP) -q $$@ $$($1_PROGRAM).debuginfo
   562 		&& $(ZIP) -q $$@ $$($1_PROGRAM).debuginfo
   563           endif
   563           endif
   564                   endif # no MacOS X support yet
   564 endif # no MacOS X support yet
   565         else
   565         else
   566           ifeq ($(OPENJDK_TARGET_OS), windows)
   566           ifeq ($(OPENJDK_TARGET_OS), windows)
   567             $1 += $$($1_OUTPUT_DIR)/$$($1_PROGRAM).map \
   567             $1 += $$($1_OUTPUT_DIR)/$$($1_PROGRAM).map \
   568                 $$($1_OUTPUT_DIR)/$$($1_PROGRAM).pdb
   568                 $$($1_OUTPUT_DIR)/$$($1_PROGRAM).pdb
   569                     else ifneq ($(OPENJDK_TARGET_OS), macosx) # MacOS X does not use .debuginfo files
   569           else ifneq ($(OPENJDK_TARGET_OS), macosx) # MacOS X does not use .debuginfo files
   570             $1 += $$($1_OUTPUT_DIR)/$$($1_PROGRAM).debuginfo
   570             $1 += $$($1_OUTPUT_DIR)/$$($1_PROGRAM).debuginfo
   571           endif
   571           endif
   572         endif
   572         endif
   573       endif
   573       endif
   574     endif
   574     endif