make/common/NativeCompilation.gmk

Print this page




 291   ifneq ($$($1_INCLUDES),)
 292     $1_SRC_INCLUDES := $$(foreach i,$$($1_SRC),$$(addprefix $$i/,$$(addsuffix /%,$$($1_INCLUDES))))
 293     $1_SRCS := $$(filter $$($1_SRC_INCLUDES),$$($1_SRCS))
 294   endif
 295   ifneq ($$($1_EXCLUDES),)
 296     $1_SRC_EXCLUDES := $$(addsuffix /%,$$($1_EXCLUDES))
 297     $1_SRC_EXCLUDES += $$(foreach i,$$($1_SRC),$$(addprefix $$i/,$$(addsuffix /%,$$($1_EXCLUDES))))
 298     $1_SRCS := $$(filter-out $$($1_SRC_EXCLUDES),$$($1_SRCS))
 299   endif
 300 
 301   # Calculate the expected output from compiling the sources (sort to remove duplicates. Also provides
 302   # a reproducable order on the input files to the linker).
 303   $1_EXPECTED_OBJS:=$$(sort $$(addprefix $$($1_OBJECT_DIR)/,$$(patsubst %.cpp,%$(OBJ_SUFFIX),$$(patsubst %.c,%$(OBJ_SUFFIX),$$(patsubst %.m,%$(OBJ_SUFFIX),$$(patsubst %.s,%$(OBJ_SUFFIX),$$(notdir $$($1_SRCS))))))))
 304   # Are there too many object files on disk? Perhaps because some source file was removed?
 305   $1_SUPERFLOUS_OBJS:=$$(sort $$(filter-out $$($1_EXPECTED_OBJS),$$($1_BINS)))
 306   # Clean out the superfluous object files.
 307   ifneq ($$($1_SUPERFLUOUS_OBJS),)
 308     $$(shell $(RM) -f $$($1_SUPERFLUOUS_OBJS))
 309   endif
 310 
 311   # Pickup extra OPENJDK_TARGET_OS_API and/or OPENJDK_TARGET_OS dependent variables for CFLAGS.
 312   $1_EXTRA_CFLAGS:=$$($1_CFLAGS_$(OPENJDK_TARGET_OS_API)) $$($1_CFLAGS_$(OPENJDK_TARGET_OS))
 313   ifneq ($(DEBUG_LEVEL),release)
 314     # Pickup extra debug dependent variables for CFLAGS
 315     $1_EXTRA_CFLAGS+=$$($1_CFLAGS_debug)
 316     $1_EXTRA_CFLAGS+=$$($1_CFLAGS_$(OPENJDK_TARGET_OS_API)_debug)
 317     $1_EXTRA_CFLAGS+=$$($1_CFLAGS_$(OPENJDK_TARGET_OS)_debug)
 318   else
 319     $1_EXTRA_CFLAGS+=$$($1_CFLAGS_release)
 320     $1_EXTRA_CFLAGS+=$$($1_CFLAGS_$(OPENJDK_TARGET_OS_API)_release)
 321     $1_EXTRA_CFLAGS+=$$($1_CFLAGS_$(OPENJDK_TARGET_OS)_release)
 322   endif
 323 
 324   # Pickup extra OPENJDK_TARGET_OS_API and/or OPENJDK_TARGET_OS dependent variables for CXXFLAGS.
 325   $1_EXTRA_CXXFLAGS:=$$($1_CXXFLAGS_$(OPENJDK_TARGET_OS_API)) $$($1_CXXFLAGS_$(OPENJDK_TARGET_OS))
 326   ifneq ($(DEBUG_LEVEL),release)
 327     # Pickup extra debug dependent variables for CXXFLAGS
 328     $1_EXTRA_CXXFLAGS+=$$($1_CXXFLAGS_debug)
 329     $1_EXTRA_CXXFLAGS+=$$($1_CXXFLAGS_$(OPENJDK_TARGET_OS_API)_debug)
 330     $1_EXTRA_CXXFLAGS+=$$($1_CXXFLAGS_$(OPENJDK_TARGET_OS)_debug)
 331   else
 332     $1_EXTRA_CXXFLAGS+=$$($1_CXXFLAGS_release)
 333     $1_EXTRA_CXXFLAGS+=$$($1_CXXFLAGS_$(OPENJDK_TARGET_OS_API)_release)
 334     $1_EXTRA_CXXFLAGS+=$$($1_CXXFLAGS_$(OPENJDK_TARGET_OS)_release)
 335   endif
 336 
 337   ifneq (,$$($1_DEBUG_SYMBOLS))
 338     ifeq ($(ENABLE_DEBUG_SYMBOLS), true)
 339       ifdef OPENJDK
 340         # Always add debug symbols
 341         $1_EXTRA_CFLAGS+=$(CFLAGS_DEBUG_SYMBOLS)
 342         $1_EXTRA_CXXFLAGS+=$(CXXFLAGS_DEBUG_SYMBOLS)
 343       else
 344         # Programs don't get the debug symbols added in the old build. It's not clear if
 345         # this is intentional.
 346         ifeq ($$($1_PROGRAM),)
 347           $1_EXTRA_CFLAGS+=$(CFLAGS_DEBUG_SYMBOLS)
 348           $1_EXTRA_CXXFLAGS+=$(CXXFLAGS_DEBUG_SYMBOLS)
 349         endif
 350       endif
 351     endif
 352   endif
 353 


 403                 $(SED) 's%IMVERSION%$$(IMVERSIONVALUE)%g;s%PROGRAM%$$($1_PROGRAM)%g' $$< > $$@
 404     endif
 405   endif
 406 
 407   # mapfile doesnt seem to be implemented on macosx (yet??)
 408   ifneq ($(OPENJDK_TARGET_OS),macosx)
 409     ifneq ($(OPENJDK_TARGET_OS),windows)
 410       $1_REAL_MAPFILE:=$$($1_MAPFILE)
 411       ifneq (,$$($1_REORDER))
 412         $1_REAL_MAPFILE:=$$($1_OBJECT_DIR)/mapfile
 413 
 414         $$($1_REAL_MAPFILE) : $$($1_MAPFILE) $$($1_REORDER)
 415                 $$(MKDIR) -p $$(@D)
 416                 $$(CP) $$($1_MAPFILE) $$@.tmp
 417                 $$(SED) -e 's=OUTPUTDIR=$$($1_OBJECT_DIR)=' $$($1_REORDER) >> $$@.tmp
 418                 $$(MV) $$@.tmp $$@
 419       endif
 420     endif
 421   endif
 422 
 423   # Pickup extra OPENJDK_TARGET_OS_API and/or OPENJDK_TARGET_OS dependent variables
 424   # for LDFLAGS and LDFLAGS_SUFFIX
 425   $1_EXTRA_LDFLAGS:=$$($1_LDFLAGS_$(OPENJDK_TARGET_OS_API)) $$($1_LDFLAGS_$(OPENJDK_TARGET_OS))
 426   $1_EXTRA_LDFLAGS_SUFFIX:=$$($1_LDFLAGS_SUFFIX_$(OPENJDK_TARGET_OS_API)) $$($1_LDFLAGS_SUFFIX_$(OPENJDK_TARGET_OS))
 427   ifneq (,$$($1_REAL_MAPFILE))
 428     $1_EXTRA_LDFLAGS += $(call SET_SHARED_LIBRARY_MAPFILE,$$($1_REAL_MAPFILE))
 429   endif
 430 
 431   $1_EXTRA_LDFLAGS += $(SYSROOT_LDFLAGS)
 432 
 433   # Need to make sure TARGET is first on list
 434   $1 := $$($1_TARGET)
 435   ifeq ($$($1_STATIC_LIBRARY),)
 436     ifneq ($$($1_DEBUG_SYMBOLS),)
 437       ifeq ($(ENABLE_DEBUG_SYMBOLS), true)
 438         ifneq ($(OPENJDK_TARGET_OS), macosx) # no MacOS X support yet
 439           ifneq ($$($1_OUTPUT_DIR),$$($1_OBJECT_DIR))
 440             # The dependency on TARGET is needed on windows for debuginfo files
 441             # to be rebuilt properly.
 442             $$($1_OUTPUT_DIR)/% : $$($1_OBJECT_DIR)/% $$($1_TARGET)
 443                 $(CP) $$< $$@
 444           endif
 445 
 446           # Generate debuginfo files.




 291   ifneq ($$($1_INCLUDES),)
 292     $1_SRC_INCLUDES := $$(foreach i,$$($1_SRC),$$(addprefix $$i/,$$(addsuffix /%,$$($1_INCLUDES))))
 293     $1_SRCS := $$(filter $$($1_SRC_INCLUDES),$$($1_SRCS))
 294   endif
 295   ifneq ($$($1_EXCLUDES),)
 296     $1_SRC_EXCLUDES := $$(addsuffix /%,$$($1_EXCLUDES))
 297     $1_SRC_EXCLUDES += $$(foreach i,$$($1_SRC),$$(addprefix $$i/,$$(addsuffix /%,$$($1_EXCLUDES))))
 298     $1_SRCS := $$(filter-out $$($1_SRC_EXCLUDES),$$($1_SRCS))
 299   endif
 300 
 301   # Calculate the expected output from compiling the sources (sort to remove duplicates. Also provides
 302   # a reproducable order on the input files to the linker).
 303   $1_EXPECTED_OBJS:=$$(sort $$(addprefix $$($1_OBJECT_DIR)/,$$(patsubst %.cpp,%$(OBJ_SUFFIX),$$(patsubst %.c,%$(OBJ_SUFFIX),$$(patsubst %.m,%$(OBJ_SUFFIX),$$(patsubst %.s,%$(OBJ_SUFFIX),$$(notdir $$($1_SRCS))))))))
 304   # Are there too many object files on disk? Perhaps because some source file was removed?
 305   $1_SUPERFLOUS_OBJS:=$$(sort $$(filter-out $$($1_EXPECTED_OBJS),$$($1_BINS)))
 306   # Clean out the superfluous object files.
 307   ifneq ($$($1_SUPERFLUOUS_OBJS),)
 308     $$(shell $(RM) -f $$($1_SUPERFLUOUS_OBJS))
 309   endif
 310 
 311   # Pickup extra OPENJDK_TARGET_OS_TYPE and/or OPENJDK_TARGET_OS dependent variables for CFLAGS.
 312   $1_EXTRA_CFLAGS:=$$($1_CFLAGS_$(OPENJDK_TARGET_OS_TYPE)) $$($1_CFLAGS_$(OPENJDK_TARGET_OS))
 313   ifneq ($(DEBUG_LEVEL),release)
 314     # Pickup extra debug dependent variables for CFLAGS
 315     $1_EXTRA_CFLAGS+=$$($1_CFLAGS_debug)
 316     $1_EXTRA_CFLAGS+=$$($1_CFLAGS_$(OPENJDK_TARGET_OS_TYPE)_debug)
 317     $1_EXTRA_CFLAGS+=$$($1_CFLAGS_$(OPENJDK_TARGET_OS)_debug)
 318   else
 319     $1_EXTRA_CFLAGS+=$$($1_CFLAGS_release)
 320     $1_EXTRA_CFLAGS+=$$($1_CFLAGS_$(OPENJDK_TARGET_OS_TYPE)_release)
 321     $1_EXTRA_CFLAGS+=$$($1_CFLAGS_$(OPENJDK_TARGET_OS)_release)
 322   endif
 323 
 324   # Pickup extra OPENJDK_TARGET_OS_TYPE and/or OPENJDK_TARGET_OS dependent variables for CXXFLAGS.
 325   $1_EXTRA_CXXFLAGS:=$$($1_CXXFLAGS_$(OPENJDK_TARGET_OS_TYPE)) $$($1_CXXFLAGS_$(OPENJDK_TARGET_OS))
 326   ifneq ($(DEBUG_LEVEL),release)
 327     # Pickup extra debug dependent variables for CXXFLAGS
 328     $1_EXTRA_CXXFLAGS+=$$($1_CXXFLAGS_debug)
 329     $1_EXTRA_CXXFLAGS+=$$($1_CXXFLAGS_$(OPENJDK_TARGET_OS_TYPE)_debug)
 330     $1_EXTRA_CXXFLAGS+=$$($1_CXXFLAGS_$(OPENJDK_TARGET_OS)_debug)
 331   else
 332     $1_EXTRA_CXXFLAGS+=$$($1_CXXFLAGS_release)
 333     $1_EXTRA_CXXFLAGS+=$$($1_CXXFLAGS_$(OPENJDK_TARGET_OS_TYPE)_release)
 334     $1_EXTRA_CXXFLAGS+=$$($1_CXXFLAGS_$(OPENJDK_TARGET_OS)_release)
 335   endif
 336 
 337   ifneq (,$$($1_DEBUG_SYMBOLS))
 338     ifeq ($(ENABLE_DEBUG_SYMBOLS), true)
 339       ifdef OPENJDK
 340         # Always add debug symbols
 341         $1_EXTRA_CFLAGS+=$(CFLAGS_DEBUG_SYMBOLS)
 342         $1_EXTRA_CXXFLAGS+=$(CXXFLAGS_DEBUG_SYMBOLS)
 343       else
 344         # Programs don't get the debug symbols added in the old build. It's not clear if
 345         # this is intentional.
 346         ifeq ($$($1_PROGRAM),)
 347           $1_EXTRA_CFLAGS+=$(CFLAGS_DEBUG_SYMBOLS)
 348           $1_EXTRA_CXXFLAGS+=$(CXXFLAGS_DEBUG_SYMBOLS)
 349         endif
 350       endif
 351     endif
 352   endif
 353 


 403                 $(SED) 's%IMVERSION%$$(IMVERSIONVALUE)%g;s%PROGRAM%$$($1_PROGRAM)%g' $$< > $$@
 404     endif
 405   endif
 406 
 407   # mapfile doesnt seem to be implemented on macosx (yet??)
 408   ifneq ($(OPENJDK_TARGET_OS),macosx)
 409     ifneq ($(OPENJDK_TARGET_OS),windows)
 410       $1_REAL_MAPFILE:=$$($1_MAPFILE)
 411       ifneq (,$$($1_REORDER))
 412         $1_REAL_MAPFILE:=$$($1_OBJECT_DIR)/mapfile
 413 
 414         $$($1_REAL_MAPFILE) : $$($1_MAPFILE) $$($1_REORDER)
 415                 $$(MKDIR) -p $$(@D)
 416                 $$(CP) $$($1_MAPFILE) $$@.tmp
 417                 $$(SED) -e 's=OUTPUTDIR=$$($1_OBJECT_DIR)=' $$($1_REORDER) >> $$@.tmp
 418                 $$(MV) $$@.tmp $$@
 419       endif
 420     endif
 421   endif
 422 
 423   # Pickup extra OPENJDK_TARGET_OS_TYPE and/or OPENJDK_TARGET_OS dependent variables
 424   # for LDFLAGS and LDFLAGS_SUFFIX
 425   $1_EXTRA_LDFLAGS:=$$($1_LDFLAGS_$(OPENJDK_TARGET_OS_TYPE)) $$($1_LDFLAGS_$(OPENJDK_TARGET_OS))
 426   $1_EXTRA_LDFLAGS_SUFFIX:=$$($1_LDFLAGS_SUFFIX_$(OPENJDK_TARGET_OS_TYPE)) $$($1_LDFLAGS_SUFFIX_$(OPENJDK_TARGET_OS))
 427   ifneq (,$$($1_REAL_MAPFILE))
 428     $1_EXTRA_LDFLAGS += $(call SET_SHARED_LIBRARY_MAPFILE,$$($1_REAL_MAPFILE))
 429   endif
 430 
 431   $1_EXTRA_LDFLAGS += $(SYSROOT_LDFLAGS)
 432 
 433   # Need to make sure TARGET is first on list
 434   $1 := $$($1_TARGET)
 435   ifeq ($$($1_STATIC_LIBRARY),)
 436     ifneq ($$($1_DEBUG_SYMBOLS),)
 437       ifeq ($(ENABLE_DEBUG_SYMBOLS), true)
 438         ifneq ($(OPENJDK_TARGET_OS), macosx) # no MacOS X support yet
 439           ifneq ($$($1_OUTPUT_DIR),$$($1_OBJECT_DIR))
 440             # The dependency on TARGET is needed on windows for debuginfo files
 441             # to be rebuilt properly.
 442             $$($1_OUTPUT_DIR)/% : $$($1_OBJECT_DIR)/% $$($1_TARGET)
 443                 $(CP) $$< $$@
 444           endif
 445 
 446           # Generate debuginfo files.