common/makefiles/NativeCompilation.gmk

changeset 855
ac09e62d5e6b
parent 839
174a54ce39c4
parent 854
22c6f0b7e2b5
child 874
dfbc93f26f38
equal deleted inserted replaced
842:ac748011cbbf 855:ac09e62d5e6b
1 # 1 #
2 # Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. 2 # Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 # 4 #
5 # This code is free software; you can redistribute it and/or modify it 5 # This code is free software; you can redistribute it and/or modify it
6 # under the terms of the GNU General Public License version 2 only, as 6 # under the terms of the GNU General Public License version 2 only, as
7 # published by the Free Software Foundation. Oracle designates this 7 # published by the Free Software Foundation. Oracle designates this
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 ifeq ($(OPENJDK_TARGET_OS), solaris) 438 ifneq ($(OPENJDK_TARGET_OS), macosx) # OBJCOPY is not used on MacOS X
439 # gobjcopy crashes on "empty" section headers with the SHF_ALLOC flag set. 439 ifneq ($(OPENJDK_TARGET_OS), windows) # nor on Windows
440 # Use $(FIX_EMPTY_SEC_HDR_FLAGS) to clear the SHF_ALLOC flag (if set) from 440 ifeq ($(OPENJDK_TARGET_OS), solaris)
441 # empty section headers until a fixed $(OBJCOPY) is available. 441 # gobjcopy crashes on "empty" section headers with the SHF_ALLOC flag set.
442 # An empty section header has sh_addr == 0 and sh_size == 0. 442 # Use $(FIX_EMPTY_SEC_HDR_FLAGS) to clear the SHF_ALLOC flag (if set) from
443 # This problem has only been seen on Solaris X64, but we call this tool 443 # empty section headers until a fixed $(OBJCOPY) is available.
444 # on all Solaris builds just in case. 444 # An empty section header has sh_addr == 0 and sh_size == 0.
445 # 445 # This problem has only been seen on Solaris X64, but we call this tool
446 # $(OBJCOPY) --add-gnu-debuglink=... corrupts SUNW_* sections. 446 # on all Solaris builds just in case.
447 # Use $(ADD_GNU_DEBUGLINK) until a fixed $(OBJCOPY) is available. 447 #
448 $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo : $$($1_TARGET) \ 448 # $(OBJCOPY) --add-gnu-debuglink=... corrupts SUNW_* sections.
449 $(FIX_EMPTY_SEC_HDR_FLAGS) $(ADD_GNU_DEBUGLINK) 449 # Use $(ADD_GNU_DEBUGLINK) until a fixed $(OBJCOPY) is available.
450 $(RM) $$@ 450 $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo : $$($1_TARGET) \
451 $(FIX_EMPTY_SEC_HDR_FLAGS) $(LOG_INFO) $$< 451 $(FIX_EMPTY_SEC_HDR_FLAGS) $(ADD_GNU_DEBUGLINK)
452 $(OBJCOPY) --only-keep-debug $$< $$@ 452 $(RM) $$@
453 $(CD) $$(@D) && $(ADD_GNU_DEBUGLINK) $(LOG_INFO) $$(@F) $$< 453 $(FIX_EMPTY_SEC_HDR_FLAGS) $(LOG_INFO) $$<
454 else # not solaris 454 $(OBJCOPY) --only-keep-debug $$< $$@
455 $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo : $$($1_TARGET) 455 $(CD) $$(@D) && $(ADD_GNU_DEBUGLINK) $(LOG_INFO) $$(@F) $$<
456 $(RM) $$@ 456 else # not solaris
457 $(OBJCOPY) --only-keep-debug $$< $$@ 457 $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo : $$($1_TARGET)
458 $(CD) $$(@D) && $(OBJCOPY) --add-gnu-debuglink=$$(@F) $$< 458 $(RM) $$@
459 endif # Touch to not retrigger rule on rebuild 459 $(OBJCOPY) --only-keep-debug $$< $$@
460 $(CD) $$(@D) && $(OBJCOPY) --add-gnu-debuglink=$$(@F) $$<
461 endif # Touch to not retrigger rule on rebuild
460 $(TOUCH) $$@ 462 $(TOUCH) $$@
463 endif # !windows
464 endif # !macosx
461 465
462 ifeq ($(ZIP_DEBUGINFO_FILES), true) 466 ifeq ($(ZIP_DEBUGINFO_FILES), true)
467 ifneq ($(OPENJDK_TARGET_OS), macosx) # no MacOS X support yet
463 $1 += $$($1_OUTPUT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).diz 468 $1 += $$($1_OUTPUT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).diz
464 469
465 ifeq ($(OPENJDK_TARGET_OS), windows) 470 ifeq ($(OPENJDK_TARGET_OS), windows)
466 $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).diz : $$($1_TARGET) 471 $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).diz : $$($1_TARGET)
467 $(CD) $$($1_OBJECT_DIR) \ 472 $(CD) $$($1_OBJECT_DIR) \
470 $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).diz : $$($1_TARGET) \ 475 $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).diz : $$($1_TARGET) \
471 $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo 476 $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo
472 $(CD) $$($1_OBJECT_DIR) \ 477 $(CD) $$($1_OBJECT_DIR) \
473 && $(ZIP) -q $$@ $$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo 478 && $(ZIP) -q $$@ $$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo
474 endif 479 endif
480 endif # no MacOS X support yet
475 else 481 else
476 ifeq ($(OPENJDK_TARGET_OS), windows) 482 ifeq ($(OPENJDK_TARGET_OS), windows)
477 $1 += $$($1_OUTPUT_DIR)/$$($1_LIBRARY).map \ 483 $1 += $$($1_OUTPUT_DIR)/$$($1_LIBRARY).map \
478 $$($1_OUTPUT_DIR)/$$($1_LIBRARY).pdb 484 $$($1_OUTPUT_DIR)/$$($1_LIBRARY).pdb
479 else 485 else ifneq ($(OPENJDK_TARGET_OS), macosx) # MacOS X does not use .debuginfo files
480 $1 += $$($1_OUTPUT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo 486 $1 += $$($1_OUTPUT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo
481 endif 487 endif
482 endif 488 endif
483 endif 489 endif
484 endif 490 endif
511 ifneq ($$($1_OUTPUT_DIR),$$($1_OBJECT_DIR)) 517 ifneq ($$($1_OUTPUT_DIR),$$($1_OBJECT_DIR))
512 $$($1_OUTPUT_DIR)/% : $$($1_OBJECT_DIR)/% 518 $$($1_OUTPUT_DIR)/% : $$($1_OBJECT_DIR)/%
513 $(CP) $$< $$@ 519 $(CP) $$< $$@
514 endif 520 endif
515 521
516 ifeq ($(OPENJDK_TARGET_OS), solaris) 522 ifneq ($(OPENJDK_TARGET_OS), macosx) # OBJCOPY is not used on MacOS X
517 # gobjcopy crashes on "empty" section headers with the SHF_ALLOC flag set. 523 ifneq ($(OPENJDK_TARGET_OS), windows) # nor on Windows
518 # Use $(FIX_EMPTY_SEC_HDR_FLAGS) to clear the SHF_ALLOC flag (if set) from 524 ifeq ($(OPENJDK_TARGET_OS), solaris)
519 # empty section headers until a fixed $(OBJCOPY) is available. 525 # gobjcopy crashes on "empty" section headers with the SHF_ALLOC flag set.
520 # An empty section header has sh_addr == 0 and sh_size == 0. 526 # Use $(FIX_EMPTY_SEC_HDR_FLAGS) to clear the SHF_ALLOC flag (if set) from
521 # This problem has only been seen on Solaris X64, but we call this tool 527 # empty section headers until a fixed $(OBJCOPY) is available.
522 # on all Solaris builds just in case. 528 # An empty section header has sh_addr == 0 and sh_size == 0.
523 # 529 # This problem has only been seen on Solaris X64, but we call this tool
524 # $(OBJCOPY) --add-gnu-debuglink=... corrupts SUNW_* sections. 530 # on all Solaris builds just in case.
525 # Use $(ADD_GNU_DEBUGLINK) until a fixed $(OBJCOPY) is available. 531 #
526 $$($1_OBJECT_DIR)/$$($1_PROGRAM).debuginfo : $$($1_TARGET) \ 532 # $(OBJCOPY) --add-gnu-debuglink=... corrupts SUNW_* sections.
527 $(FIX_EMPTY_SEC_HDR_FLAGS) $(ADD_GNU_DEBUGLINK) 533 # Use $(ADD_GNU_DEBUGLINK) until a fixed $(OBJCOPY) is available.
528 $(RM) $$@ 534 $$($1_OBJECT_DIR)/$$($1_PROGRAM).debuginfo : $$($1_TARGET) \
529 $(FIX_EMPTY_SEC_HDR_FLAGS) $(LOG_INFO) $$< 535 $(FIX_EMPTY_SEC_HDR_FLAGS) $(ADD_GNU_DEBUGLINK)
530 $(OBJCOPY) --only-keep-debug $$< $$@ 536 $(RM) $$@
531 $(CD) $$(@D) && $(ADD_GNU_DEBUGLINK) $(LOG_INFO) $$(@F) $$< 537 $(FIX_EMPTY_SEC_HDR_FLAGS) $(LOG_INFO) $$<
532 else # not solaris 538 $(OBJCOPY) --only-keep-debug $$< $$@
533 $$($1_OBJECT_DIR)/$$($1_PROGRAM).debuginfo : $$($1_TARGET) 539 $(CD) $$(@D) && $(ADD_GNU_DEBUGLINK) $(LOG_INFO) $$(@F) $$<
534 $(RM) $$@ 540 else # not solaris
535 $(OBJCOPY) --only-keep-debug $$< $$@ 541 $$($1_OBJECT_DIR)/$$($1_PROGRAM).debuginfo : $$($1_TARGET)
536 $(CD) $$(@D) && $(OBJCOPY) --add-gnu-debuglink=$$(@F) $$< 542 $(RM) $$@
537 endif 543 $(OBJCOPY) --only-keep-debug $$< $$@
538 $(TOUCH) $$@ 544 $(CD) $$(@D) && $(OBJCOPY) --add-gnu-debuglink=$$(@F) $$<
545 endif
546 $(TOUCH) $$@
547 endif # !windows
548 endif # !macosx
539 549
540 ifeq ($(ZIP_DEBUGINFO_FILES), true) 550 ifeq ($(ZIP_DEBUGINFO_FILES), true)
551 ifneq ($(OPENJDK_TARGET_OS), macosx) # no MacOS X support yet
541 $1 += $$($1_OUTPUT_DIR)/$$($1_PROGRAM).diz 552 $1 += $$($1_OUTPUT_DIR)/$$($1_PROGRAM).diz
542 553
543 ifeq ($(OPENJDK_TARGET_OS), windows) 554 ifeq ($(OPENJDK_TARGET_OS), windows)
544 $$($1_OBJECT_DIR)/$$($1_PROGRAM).diz : $$($1_TARGET) 555 $$($1_OBJECT_DIR)/$$($1_PROGRAM).diz : $$($1_TARGET)
545 $(CD) $$($1_OBJECT_DIR) \ 556 $(CD) $$($1_OBJECT_DIR) \
548 $$($1_OBJECT_DIR)/$$(PROGRAM_PREFIX)$$($1_PROGRAM).diz : $$($1_TARGET) \ 559 $$($1_OBJECT_DIR)/$$(PROGRAM_PREFIX)$$($1_PROGRAM).diz : $$($1_TARGET) \
549 $$($1_OBJECT_DIR)/$$($1_PROGRAM).debuginfo 560 $$($1_OBJECT_DIR)/$$($1_PROGRAM).debuginfo
550 $(CD) $$($1_OBJECT_DIR) \ 561 $(CD) $$($1_OBJECT_DIR) \
551 && $(ZIP) -q $$@ $$($1_PROGRAM).debuginfo 562 && $(ZIP) -q $$@ $$($1_PROGRAM).debuginfo
552 endif 563 endif
564 endif # no MacOS X support yet
553 else 565 else
554 ifeq ($(OPENJDK_TARGET_OS), windows) 566 ifeq ($(OPENJDK_TARGET_OS), windows)
555 $1 += $$($1_OUTPUT_DIR)/$$($1_PROGRAM).map \ 567 $1 += $$($1_OUTPUT_DIR)/$$($1_PROGRAM).map \
556 $$($1_OUTPUT_DIR)/$$($1_PROGRAM).pdb 568 $$($1_OUTPUT_DIR)/$$($1_PROGRAM).pdb
557 else 569 else ifneq ($(OPENJDK_TARGET_OS), macosx) # MacOS X does not use .debuginfo files
558 $1 += $$($1_OUTPUT_DIR)/$$($1_PROGRAM).debuginfo 570 $1 += $$($1_OUTPUT_DIR)/$$($1_PROGRAM).debuginfo
559 endif 571 endif
560 endif 572 endif
561 endif 573 endif
562 endif 574 endif

mercurial