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. |