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 |