24 # 25 26 include $(SPEC) 27 include MakeBase.gmk 28 include JavaCompilation.gmk 29 include Setup.gmk 30 31 default: images 32 33 # Prepare the find cache. Only used if running on windows. 34 $(eval $(call FillCacheFind,\ 35 $(wildcard $(JDK_OUTPUTDIR)/bin \ 36 $(JDK_OUTPUTDIR)/lib \ 37 $(IMAGES_OUTPUTDIR)/lib \ 38 $(JDK_OUTPUTDIR)/include \ 39 $(JDK_OUTPUTDIR)/sample \ 40 $(JDK_OUTPUTDIR)/demo))) 41 42 include Tools.gmk 43 44 # Note: This double-colon rule is intentional, to support 45 # custom make file integration. 46 images:: jre-image jdk-image 47 48 overlay-images: jre-overlay-image jdk-overlay-image 49 50 51 -include $(CUSTOM_MAKE_DIR)/Images.gmk 52 53 54 # Processing license files from source area to image area 55 # These will be modified to have the platform specific EOL chars. 56 define process-doc-file 57 $(ECHO) $(LOG_INFO) Processing $(patsubst $(OUTPUT_ROOT)/%,%,$@) 58 $(MKDIR) -p $(@D) 59 $(RM) $@ 60 $(SED) 's/$$//g' $< > $@ 61 $(CHMOD) 444 $@ 62 endef 63 67 # Param 3 - src file 68 # Param 4 - variable to add targets to 69 70 # Remove src dir root from src file 71 $2_$3_FILE := $$(patsubst $1/%,%,$3) 72 73 $2/$$($2_$3_FILE): $3 74 $(ECHO) $(LOG_INFO) Copying $$(patsubst $(OUTPUT_ROOT)/%,%,$$@) 75 $$(install-file) 76 77 $4 += $2/$$($2_$3_FILE) 78 endef 79 80 ################################################################################ 81 # 82 # JRE and JDK build rules 83 # 84 ################################################################################ 85 # 86 # Variable prefixes explained: 87 # JRE_ refers to files in the j2re-image. 88 # JDK_ refers to files in the j2sdk-image outside of the jre subdir. 89 # JDKJRE_ refers to files in the j2sdk-image inside the jre subdir. 90 # 91 92 ################################################################################ 93 # /bin dir 94 95 NOT_JRE_BIN_FILES := \ 96 appletviewer$(EXE_SUFFIX) \ 97 extcheck$(EXE_SUFFIX) \ 98 idlj$(EXE_SUFFIX) \ 99 jar$(EXE_SUFFIX) \ 100 jarsigner$(EXE_SUFFIX) \ 101 java-rmi.cgi \ 102 javac$(EXE_SUFFIX) \ 103 javadoc$(EXE_SUFFIX) \ 104 javah$(EXE_SUFFIX) \ 105 javap$(EXE_SUFFIX) \ 106 jdeps$(EXE_SUFFIX) \ 107 jcmd$(EXE_SUFFIX) \ 108 jdb$(EXE_SUFFIX) \ 109 jps$(EXE_SUFFIX) \ 110 jrunscript$(EXE_SUFFIX) \ 111 jstat$(EXE_SUFFIX) \ 112 jstatd$(EXE_SUFFIX) \ 113 jstack$(EXE_SUFFIX) \ 114 packagebean$(SCRIPT_SUFFIX) \ 115 rmic$(EXE_SUFFIX) \ 116 serialver$(EXE_SUFFIX) \ 117 unregbean$(EXE_SUFFIX) \ 118 jconsole$(EXE_SUFFIX) \ 119 jinfo$(EXE_SUFFIX) \ 120 jmap$(EXE_SUFFIX) \ 121 native2ascii$(EXE_SUFFIX) \ 122 xjc$(EXE_SUFFIX) \ 123 wsgen$(EXE_SUFFIX) \ 124 wsimport$(EXE_SUFFIX) \ 125 schemagen$(EXE_SUFFIX) \ 126 jsadebugd$(EXE_SUFFIX) \ 127 jhat$(EXE_SUFFIX) 128 129 WINDOWS_JDK_BIN_FILES = \ 130 $(EXE_SUFFIX) \ 131 $(LIBRARY_PREFIX)jli$(SHARED_LIBRARY_SUFFIX) \ 132 $(notdir $(MSVCR_DLL)) 133 134 WINDOWS_JDKJRE_BIN_FILES := \ 135 $(LIBRARY_PREFIX)attach$(SHARED_LIBRARY_SUFFIX) \ 136 $(SALIB_NAME) 137 138 # Find all files in bin dir 139 ALL_BIN_LIST := $(call CacheFind,$(JDK_OUTPUTDIR)/bin) 140 141 # Prevent sjavac from entering the images. 142 ALL_BIN_LIST := $(filter-out %/sjavac,$(ALL_BIN_LIST)) 143 144 # For unknown reason the debuginfo files for executables are not put into images 145 # e.g filter them out 146 ifneq ($(OPENJDK_TARGET_OS),windows) 147 ALL_BIN_LIST := $(filter-out %.debuginfo %.diz, $(ALL_BIN_LIST)) 179 $(foreach f,$(filter-out $(OVERLAY_FILTER),$(JDK_BIN_LIST)),\ 180 $(eval $(call AddFileToCopy,$(JDK_OUTPUTDIR),$(JDK_IMAGE_DIR),$f,JDK_BIN_TARGETS))) 181 $(foreach f,$(filter-out $(OVERLAY_FILTER),$(JDKJRE_BIN_LIST)),\ 182 $(eval $(call AddFileToCopy,$(JDK_OUTPUTDIR),$(JDK_IMAGE_DIR)/jre,$f,JDKJRE_BIN_TARGETS))) 183 184 $(foreach f,$(filter $(OVERLAY_FILTER),$(JRE_BIN_LIST)),\ 185 $(eval $(call AddFileToCopy,$(JDK_OUTPUTDIR),$(JRE_OVERLAY_IMAGE_DIR),$f,JRE_BIN_TARGETS))) 186 $(foreach f,$(filter $(OVERLAY_FILTER),$(JDK_BIN_LIST)),\ 187 $(eval $(call AddFileToCopy,$(JDK_OUTPUTDIR),$(JDK_OVERLAY_IMAGE_DIR),$f,JDK_BIN_TARGETS))) 188 $(foreach f,$(filter $(OVERLAY_FILTER),$(JDKJRE_BIN_LIST)),\ 189 $(eval $(call AddFileToCopy,$(JDK_OUTPUTDIR),$(JDK_OVERLAY_IMAGE_DIR)/jre,$f,JDKJRE_BIN_TARGETS))) 190 191 ################################################################################ 192 # /lib dir 193 ifneq ($(OPENJDK_TARGET_OS), macosx) 194 JDKJRE_LIB_FILES := \ 195 $(LIBRARY_PREFIX)attach$(SHARED_LIBRARY_SUFFIX) \ 196 $(SALIB_NAME) 197 endif 198 199 NOT_JRE_LIB_FILES := \ 200 tools.jar \ 201 jconsole.jar \ 202 sa-jdi.jar \ 203 dt.jar \ 204 orb.idl \ 205 ir.idl \ 206 ct.sym 207 208 ifeq ($(OPENJDK_TARGET_OS), windows) 209 NOT_JRE_LIB_FILES += jawt.lib jvm.lib 210 endif 211 212 JDK_LIB_FILES := $(NOT_JRE_LIB_FILES) 213 ifeq ($(OPENJDK_TARGET_OS), linux) 214 JDK_LIB_FILES += jexec 215 endif 216 217 # Find all files to copy from $(JDK_OUTPUTDIR)/lib 218 # Jar files are not expected to be here 219 ALL_JDKOUT_LIB_LIST := $(call not-containing,_the.,$(filter-out %.jar,\ 220 $(call CacheFind,$(JDK_OUTPUTDIR)/lib))) 221 # Find all files to copy from $(IMAGES_OUTPUTDIR)/lib 222 # This is were the jar files are and might not exist if building overlay-images 223 ifneq ($(wildcard $(IMAGES_OUTPUTDIR)/lib),) 224 ALL_IMAGES_LIB_LIST := $(call not-containing,_the.,\ 225 $(call CacheFind,$(IMAGES_OUTPUTDIR)/lib)) 226 endif 227 228 # Filter files to copy for each destination 229 JRE_JDKOUT_LIB_LIST := $(filter-out $(addprefix %,$(NOT_JRE_LIB_FILES) $(JDKJRE_LIB_FILES)),\ 590 endef 591 592 define create-info-file 593 $(MKDIR) -p $(@D) 594 $(RM) $@ 595 $(call info-file-item, "JAVA_VERSION", "$(JDK_VERSION)") 596 $(call info-file-item, "OS_NAME", "$(REQUIRED_OS_NAME)") 597 $(call info-file-item, "OS_VERSION", "$(REQUIRED_OS_VERSION)") 598 $(call info-file-item, "OS_ARCH", "$(OPENJDK_TARGET_CPU_LEGACY)") 599 $(call info-file-item, "SOURCE", "$(ALL_SOURCE_TIPS)") 600 endef 601 602 ALL_SOURCE_TIPS = $(shell \ 603 if [ -f $(OUTPUT_ROOT)/source_tips ] ; then \ 604 $(CAT) $(OUTPUT_ROOT)/source_tips ; \ 605 fi) 606 607 $(JRE_INFO_FILE): $(OUTPUT_ROOT)/spec.gmk $(OUTPUT_ROOT)/source_tips 608 $(ECHO) $(LOG_INFO) Generating $(patsubst $(OUTPUT_ROOT)/%,%,$@) 609 $(call create-info-file) 610 611 $(JDK_INFO_FILE): $(OUTPUT_ROOT)/spec.gmk $(OUTPUT_ROOT)/source_tips 612 $(ECHO) $(LOG_INFO) Generating $(patsubst $(OUTPUT_ROOT)/%,%,$@) 613 $(call create-info-file) 614 615 $(JRE_OVERLAY_INFO_FILE): $(OUTPUT_ROOT)/spec.gmk $(OUTPUT_ROOT)/source_tips 616 $(ECHO) $(LOG_INFO) Generating $(patsubst $(OUTPUT_ROOT)/%,%,$@) 617 $(call create-info-file) 618 619 $(JDK_OVERLAY_INFO_FILE): $(OUTPUT_ROOT)/spec.gmk $(OUTPUT_ROOT)/source_tips 620 $(ECHO) $(LOG_INFO) Generating $(patsubst $(OUTPUT_ROOT)/%,%,$@) 621 $(call create-info-file) 622 623 $(JDK_IMAGE_DIR)/src.zip: $(IMAGES_OUTPUTDIR)/src.zip 624 $(ECHO) $(LOG_INFO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@) 625 $(install-file) 626 627 ################################################################################ 628 # Post processing (strip etc) 629 631 ifeq ($(OPENJDK_TARGET_OS), windows) 632 EXEC_LIST_BIN:=$(filter-out %$(notdir $(MSVCR_DLL)),$(filter %.exe %.dll,$(ALL_BIN_LIST))) 633 else 634 # Find all executables in JDK_OUTPUTDIR since they exist when this makefile is parsed 635 EXEC_LIST_BIN:=$(shell $(FILE) `$(FIND) $(JDK_OUTPUTDIR)/bin -type f -name \*$(EXE_SUFFIX)` \ 636 | $(EGREP) 'ELF' | $(CUT) -d':' -f1) 637 # On mac, the old build searches for static libraries for stripping instead of shared. 638 # Not clear if it's intentional. 639 ifneq ($(OPENJDK_TARGET_OS), macosx) 640 EXEC_LIST_LIB:=$(shell $(FIND) $(JDK_OUTPUTDIR)/lib -type f -name \*$(SHARED_LIBRARY_SUFFIX)) 641 endif 642 endif 643 # Filter out sjavac 644 EXEC_LIST_BIN:=$(filter-out %sjavac$(EXE_SUFFIX),$(EXEC_LIST_BIN)) 645 646 # Filter out the overlay specific bin files 647 EXEC_LIST:=$(filter-out $(OVERLAY_FILTER),$(EXEC_LIST_BIN)) $(EXEC_LIST_LIB) 648 EXEC_LIST_OVERLAY:=$(filter $(OVERLAY_FILTER),$(EXEC_LIST_BIN)) $(EXEC_LIST_LIB) 649 650 # Filter out non JRE files and convert to unique touch files to depend on 651 JRE_STRIP_LIST:=$(patsubst $(JDK_OUTPUTDIR)/%,$(IMAGES_OUTPUTDIR)/_strip_jre/%.stripped,\ 652 $(filter-out $(addprefix %,$(NOT_JRE_BIN_FILES) $(NOT_JRE_LIB_FILES) $(JDKJRE_LIB_FILES)),\ 653 $(EXEC_LIST))) 654 655 JDKJRE_STRIP_LIST:=$(patsubst $(JDK_OUTPUTDIR)/%, \ 656 $(IMAGES_OUTPUTDIR)/_strip_jdk/jre/%.stripped, \ 657 $(filter-out $(addprefix %,$(NOT_JRE_BIN_FILES) $(NOT_JRE_LIB_FILES)), $(EXEC_LIST))) 658 659 JDK_BIN_STRIP_LIST:=$(patsubst $(JDK_OUTPUTDIR)/%, \ 660 $(IMAGES_OUTPUTDIR)/_strip_jdk/%.stripped, \ 661 $(filter-out $(JDK_OUTPUTDIR)/lib/%, $(EXEC_LIST))) 662 663 # Do the same for overlay image 664 JRE_OVERLAY_STRIP_LIST:=$(patsubst $(JDK_OUTPUTDIR)/%,$(IMAGES_OUTPUTDIR)/_strip_jre_overlay/%.stripped,\ 665 $(filter-out $(addprefix %,$(NOT_JRE_BIN_FILES) $(NOT_JRE_LIB_FILES) $(JDKJRE_LIB_FILES)),\ 666 $(EXEC_LIST_OVERLAY))) 667 668 JDKJRE_OVERLAY_STRIP_LIST:=$(patsubst $(JDK_OUTPUTDIR)/%, \ 669 $(IMAGES_OUTPUTDIR)/_strip_jdk_overlay/jre/%.stripped, \ 670 $(filter-out $(addprefix %,$(NOT_JRE_BIN_FILES) $(NOT_JRE_LIB_FILES)), $(EXEC_LIST_OVERLAY))) 671 672 JDK_OVERLAY_BIN_STRIP_LIST:=$(patsubst $(JDK_OUTPUTDIR)/%, \ 673 $(IMAGES_OUTPUTDIR)/_strip_jdk_overlay/%.stripped, \ 674 $(filter-out $(JDK_OUTPUTDIR)/lib/%, $(EXEC_LIST_OVERLAY))) 675 676 define mcs-file 677 $(if $(POST_MCS_CMD),$(POST_MCS_CMD) $<) 678 endef 679 680 define strip-file 681 $(ECHO) Stripping $(LOG_INFO) $(patsubst $(OUTPUT_ROOT)/%,%,$<) 682 $(CHMOD) u+w $< 683 $(POST_STRIP_CMD) $< 684 $(call mcs-file) 685 $(CHMOD) go-w $< 686 $(MKDIR) -p $(@D) 687 $(TOUCH) $@ 688 endef 689 690 # Setup a rule for stripping files based on touch files 691 $(IMAGES_OUTPUTDIR)/_strip_jre/%.stripped: $(JRE_IMAGE_DIR)/% 692 $(call strip-file) 693 694 $(IMAGES_OUTPUTDIR)/_strip_jdk/%.stripped: $(JDK_IMAGE_DIR)/% 695 $(call strip-file) 696 697 $(IMAGES_OUTPUTDIR)/_strip_jre_overlay/%.stripped: $(JRE_OVERLAY_IMAGE_DIR)/% 698 $(call strip-file) 699 700 $(IMAGES_OUTPUTDIR)/_strip_jdk_overlay/%.stripped: $(JDK_OVERLAY_IMAGE_DIR)/% 701 $(call strip-file) 702 703 endif 704 705 ################################################################################ 706 # Main targets 707 708 jre-image: $(JRE_BIN_TARGETS) $(JRE_LIB_TARGETS) $(JRE_IMAGE_DIR)/lib/applet \ 709 $(JRE_IMAGE_DIR)/lib/meta-index $(JRE_IMAGE_DIR)/lib/ext/meta-index \ 710 $(JRE_MAN_PAGE_LIST) $(JRE_DOC_TARGETS) $(JRE_INFO_FILE) $(JRE_STRIP_LIST) 711 712 jdk-image: $(JDK_BIN_TARGETS) $(JDKJRE_BIN_TARGETS) \ 713 $(JDK_LIB_TARGETS) $(JDKJRE_LIB_TARGETS) \ 714 $(JDK_IMAGE_DIR)/jre/lib/applet \ 715 $(JDK_DEMO_TARGETS) \ 716 $(JDK_IMAGE_DIR)/jre/lib/meta-index $(JDK_IMAGE_DIR)/jre/lib/ext/meta-index \ 717 $(JDK_MAN_PAGE_LIST) $(JDK_SAMPLE_TARGETS) \ 718 $(JDK_DB_TARGETS) $(JDK_INCLUDE_TARGETS) \ 719 $(JDKJRE_DOC_TARGETS) $(JDK_DOC_TARGETS) \ 720 $(JDK_INFO_FILE) $(JDKJRE_STRIP_LIST) $(JDK_BIN_STRIP_LIST) \ 721 $(JDK_IMAGE_DIR)/src.zip 722 723 jre-overlay-image: $(JRE_OVERLAY_BIN_TARGETS) $(JRE_OVERLAY_LIB_TARGETS) \ 724 $(JRE_OVERLAY_INFO_FILE) $(JRE_OVERLAY_STRIP_LIST) 725 726 jdk-overlay-image: $(JDK_OVERLAY_BIN_TARGETS) $(JDKJRE_OVERLAY_BIN_TARGETS) \ 727 $(JDK_OVERLAY_LIB_TARGETS) $(JDKJRE_OVERLAY_LIB_TARGETS) \ 728 $(JDK_OVERLAY_DEMO_TARGETS) $(JDK_OVERLAY_INFO_FILE) \ 729 $(JDKJRE_OVERLAY_STRIP_LIST) $(JDK_OVERLAY_BIN_STRIP_LIST) 730 731 ################################################################################ 732 733 .PHONY: default images jre-image jdk-image | 24 # 25 26 include $(SPEC) 27 include MakeBase.gmk 28 include JavaCompilation.gmk 29 include Setup.gmk 30 31 default: images 32 33 # Prepare the find cache. Only used if running on windows. 34 $(eval $(call FillCacheFind,\ 35 $(wildcard $(JDK_OUTPUTDIR)/bin \ 36 $(JDK_OUTPUTDIR)/lib \ 37 $(IMAGES_OUTPUTDIR)/lib \ 38 $(JDK_OUTPUTDIR)/include \ 39 $(JDK_OUTPUTDIR)/sample \ 40 $(JDK_OUTPUTDIR)/demo))) 41 42 include Tools.gmk 43 44 include Profiles.gmk 45 46 # Note: This double-colon rule is intentional, to support 47 # custom make file integration. 48 images:: jre-image jdk-image 49 50 overlay-images: jre-overlay-image jdk-overlay-image 51 52 53 -include $(CUSTOM_MAKE_DIR)/Images.gmk 54 55 56 # Processing license files from source area to image area 57 # These will be modified to have the platform specific EOL chars. 58 define process-doc-file 59 $(ECHO) $(LOG_INFO) Processing $(patsubst $(OUTPUT_ROOT)/%,%,$@) 60 $(MKDIR) -p $(@D) 61 $(RM) $@ 62 $(SED) 's/$$//g' $< > $@ 63 $(CHMOD) 444 $@ 64 endef 65 69 # Param 3 - src file 70 # Param 4 - variable to add targets to 71 72 # Remove src dir root from src file 73 $2_$3_FILE := $$(patsubst $1/%,%,$3) 74 75 $2/$$($2_$3_FILE): $3 76 $(ECHO) $(LOG_INFO) Copying $$(patsubst $(OUTPUT_ROOT)/%,%,$$@) 77 $$(install-file) 78 79 $4 += $2/$$($2_$3_FILE) 80 endef 81 82 ################################################################################ 83 # 84 # JRE and JDK build rules 85 # 86 ################################################################################ 87 # 88 # Variable prefixes explained: 89 # JRE_ refers to files in the j2re-*-image. 90 # JDK_ refers to files in the j2sdk-image outside of the jre subdir. 91 # JDKJRE_ refers to files in the j2sdk-image inside the jre subdir. 92 # 93 94 ################################################################################ 95 # /bin dir 96 97 ifeq ($(PROFILE),) 98 NOT_JRE_BIN_FILES := \ 99 appletviewer$(EXE_SUFFIX) \ 100 extcheck$(EXE_SUFFIX) \ 101 idlj$(EXE_SUFFIX) \ 102 jar$(EXE_SUFFIX) \ 103 jarsigner$(EXE_SUFFIX) \ 104 java-rmi.cgi \ 105 javac$(EXE_SUFFIX) \ 106 javadoc$(EXE_SUFFIX) \ 107 javah$(EXE_SUFFIX) \ 108 javap$(EXE_SUFFIX) \ 109 jdeps$(EXE_SUFFIX) \ 110 jcmd$(EXE_SUFFIX) \ 111 jdb$(EXE_SUFFIX) \ 112 jps$(EXE_SUFFIX) \ 113 jrunscript$(EXE_SUFFIX) \ 114 jstat$(EXE_SUFFIX) \ 115 jstatd$(EXE_SUFFIX) \ 116 jstack$(EXE_SUFFIX) \ 117 packagebean$(SCRIPT_SUFFIX) \ 118 rmic$(EXE_SUFFIX) \ 119 serialver$(EXE_SUFFIX) \ 120 unregbean$(EXE_SUFFIX) \ 121 jconsole$(EXE_SUFFIX) \ 122 jinfo$(EXE_SUFFIX) \ 123 jmap$(EXE_SUFFIX) \ 124 native2ascii$(EXE_SUFFIX) \ 125 xjc$(EXE_SUFFIX) \ 126 wsgen$(EXE_SUFFIX) \ 127 wsimport$(EXE_SUFFIX) \ 128 schemagen$(EXE_SUFFIX) \ 129 jsadebugd$(EXE_SUFFIX) \ 130 jhat$(EXE_SUFFIX) 131 endif 132 133 WINDOWS_JDK_BIN_FILES = \ 134 $(EXE_SUFFIX) \ 135 $(LIBRARY_PREFIX)jli$(SHARED_LIBRARY_SUFFIX) \ 136 $(notdir $(MSVCR_DLL)) 137 138 WINDOWS_JDKJRE_BIN_FILES := \ 139 $(LIBRARY_PREFIX)attach$(SHARED_LIBRARY_SUFFIX) \ 140 $(SALIB_NAME) 141 142 # Find all files in bin dir 143 ALL_BIN_LIST := $(call CacheFind,$(JDK_OUTPUTDIR)/bin) 144 145 # Prevent sjavac from entering the images. 146 ALL_BIN_LIST := $(filter-out %/sjavac,$(ALL_BIN_LIST)) 147 148 # For unknown reason the debuginfo files for executables are not put into images 149 # e.g filter them out 150 ifneq ($(OPENJDK_TARGET_OS),windows) 151 ALL_BIN_LIST := $(filter-out %.debuginfo %.diz, $(ALL_BIN_LIST)) 183 $(foreach f,$(filter-out $(OVERLAY_FILTER),$(JDK_BIN_LIST)),\ 184 $(eval $(call AddFileToCopy,$(JDK_OUTPUTDIR),$(JDK_IMAGE_DIR),$f,JDK_BIN_TARGETS))) 185 $(foreach f,$(filter-out $(OVERLAY_FILTER),$(JDKJRE_BIN_LIST)),\ 186 $(eval $(call AddFileToCopy,$(JDK_OUTPUTDIR),$(JDK_IMAGE_DIR)/jre,$f,JDKJRE_BIN_TARGETS))) 187 188 $(foreach f,$(filter $(OVERLAY_FILTER),$(JRE_BIN_LIST)),\ 189 $(eval $(call AddFileToCopy,$(JDK_OUTPUTDIR),$(JRE_OVERLAY_IMAGE_DIR),$f,JRE_BIN_TARGETS))) 190 $(foreach f,$(filter $(OVERLAY_FILTER),$(JDK_BIN_LIST)),\ 191 $(eval $(call AddFileToCopy,$(JDK_OUTPUTDIR),$(JDK_OVERLAY_IMAGE_DIR),$f,JDK_BIN_TARGETS))) 192 $(foreach f,$(filter $(OVERLAY_FILTER),$(JDKJRE_BIN_LIST)),\ 193 $(eval $(call AddFileToCopy,$(JDK_OUTPUTDIR),$(JDK_OVERLAY_IMAGE_DIR)/jre,$f,JDKJRE_BIN_TARGETS))) 194 195 ################################################################################ 196 # /lib dir 197 ifneq ($(OPENJDK_TARGET_OS), macosx) 198 JDKJRE_LIB_FILES := \ 199 $(LIBRARY_PREFIX)attach$(SHARED_LIBRARY_SUFFIX) \ 200 $(SALIB_NAME) 201 endif 202 203 ifeq ($(PROFILE),) 204 NOT_JRE_LIB_FILES := \ 205 tools.jar \ 206 jconsole.jar \ 207 sa-jdi.jar \ 208 dt.jar \ 209 orb.idl \ 210 ir.idl \ 211 ct.sym 212 213 ifeq ($(OPENJDK_TARGET_OS), windows) 214 NOT_JRE_LIB_FILES += jawt.lib jvm.lib 215 endif 216 endif 217 218 JDK_LIB_FILES := $(NOT_JRE_LIB_FILES) 219 ifeq ($(OPENJDK_TARGET_OS), linux) 220 JDK_LIB_FILES += jexec 221 endif 222 223 # Find all files to copy from $(JDK_OUTPUTDIR)/lib 224 # Jar files are not expected to be here 225 ALL_JDKOUT_LIB_LIST := $(call not-containing,_the.,$(filter-out %.jar,\ 226 $(call CacheFind,$(JDK_OUTPUTDIR)/lib))) 227 # Find all files to copy from $(IMAGES_OUTPUTDIR)/lib 228 # This is were the jar files are and might not exist if building overlay-images 229 ifneq ($(wildcard $(IMAGES_OUTPUTDIR)/lib),) 230 ALL_IMAGES_LIB_LIST := $(call not-containing,_the.,\ 231 $(call CacheFind,$(IMAGES_OUTPUTDIR)/lib)) 232 endif 233 234 # Filter files to copy for each destination 235 JRE_JDKOUT_LIB_LIST := $(filter-out $(addprefix %,$(NOT_JRE_LIB_FILES) $(JDKJRE_LIB_FILES)),\ 596 endef 597 598 define create-info-file 599 $(MKDIR) -p $(@D) 600 $(RM) $@ 601 $(call info-file-item, "JAVA_VERSION", "$(JDK_VERSION)") 602 $(call info-file-item, "OS_NAME", "$(REQUIRED_OS_NAME)") 603 $(call info-file-item, "OS_VERSION", "$(REQUIRED_OS_VERSION)") 604 $(call info-file-item, "OS_ARCH", "$(OPENJDK_TARGET_CPU_LEGACY)") 605 $(call info-file-item, "SOURCE", "$(ALL_SOURCE_TIPS)") 606 endef 607 608 ALL_SOURCE_TIPS = $(shell \ 609 if [ -f $(OUTPUT_ROOT)/source_tips ] ; then \ 610 $(CAT) $(OUTPUT_ROOT)/source_tips ; \ 611 fi) 612 613 $(JRE_INFO_FILE): $(OUTPUT_ROOT)/spec.gmk $(OUTPUT_ROOT)/source_tips 614 $(ECHO) $(LOG_INFO) Generating $(patsubst $(OUTPUT_ROOT)/%,%,$@) 615 $(call create-info-file) 616 ifneq ($(PROFILE),) 617 $(call info-file-item, "JAVA_PROFILE", "$(call profile_name, $(call profile_number, $(PROFILE)))") 618 endif 619 620 $(JDK_INFO_FILE): $(OUTPUT_ROOT)/spec.gmk $(OUTPUT_ROOT)/source_tips 621 $(ECHO) $(LOG_INFO) Generating $(patsubst $(OUTPUT_ROOT)/%,%,$@) 622 $(call create-info-file) 623 624 $(JRE_OVERLAY_INFO_FILE): $(OUTPUT_ROOT)/spec.gmk $(OUTPUT_ROOT)/source_tips 625 $(ECHO) $(LOG_INFO) Generating $(patsubst $(OUTPUT_ROOT)/%,%,$@) 626 $(call create-info-file) 627 628 $(JDK_OVERLAY_INFO_FILE): $(OUTPUT_ROOT)/spec.gmk $(OUTPUT_ROOT)/source_tips 629 $(ECHO) $(LOG_INFO) Generating $(patsubst $(OUTPUT_ROOT)/%,%,$@) 630 $(call create-info-file) 631 632 $(JDK_IMAGE_DIR)/src.zip: $(IMAGES_OUTPUTDIR)/src.zip 633 $(ECHO) $(LOG_INFO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@) 634 $(install-file) 635 636 ################################################################################ 637 # Post processing (strip etc) 638 640 ifeq ($(OPENJDK_TARGET_OS), windows) 641 EXEC_LIST_BIN:=$(filter-out %$(notdir $(MSVCR_DLL)),$(filter %.exe %.dll,$(ALL_BIN_LIST))) 642 else 643 # Find all executables in JDK_OUTPUTDIR since they exist when this makefile is parsed 644 EXEC_LIST_BIN:=$(shell $(FILE) `$(FIND) $(JDK_OUTPUTDIR)/bin -type f -name \*$(EXE_SUFFIX)` \ 645 | $(EGREP) 'ELF' | $(CUT) -d':' -f1) 646 # On mac, the old build searches for static libraries for stripping instead of shared. 647 # Not clear if it's intentional. 648 ifneq ($(OPENJDK_TARGET_OS), macosx) 649 EXEC_LIST_LIB:=$(shell $(FIND) $(JDK_OUTPUTDIR)/lib -type f -name \*$(SHARED_LIBRARY_SUFFIX)) 650 endif 651 endif 652 # Filter out sjavac 653 EXEC_LIST_BIN:=$(filter-out %sjavac$(EXE_SUFFIX),$(EXEC_LIST_BIN)) 654 655 # Filter out the overlay specific bin files 656 EXEC_LIST:=$(filter-out $(OVERLAY_FILTER),$(EXEC_LIST_BIN)) $(EXEC_LIST_LIB) 657 EXEC_LIST_OVERLAY:=$(filter $(OVERLAY_FILTER),$(EXEC_LIST_BIN)) $(EXEC_LIST_LIB) 658 659 # Filter out non JRE files and convert to unique touch files to depend on 660 JRE_STRIP_LIST:=$(patsubst $(JDK_OUTPUTDIR)/%,$(IMAGES_OUTPUTDIR)/_strip_jre$(PROFILE)/%.stripped,\ 661 $(filter-out $(addprefix %,$(NOT_JRE_BIN_FILES) $(NOT_JRE_LIB_FILES) $(JDKJRE_LIB_FILES)),\ 662 $(EXEC_LIST))) 663 664 JDKJRE_STRIP_LIST:=$(patsubst $(JDK_OUTPUTDIR)/%, \ 665 $(IMAGES_OUTPUTDIR)/_strip_jdk/jre/%.stripped, \ 666 $(filter-out $(addprefix %,$(NOT_JRE_BIN_FILES) $(NOT_JRE_LIB_FILES)), $(EXEC_LIST))) 667 668 JDK_BIN_STRIP_LIST:=$(patsubst $(JDK_OUTPUTDIR)/%, \ 669 $(IMAGES_OUTPUTDIR)/_strip_jdk/%.stripped, \ 670 $(filter-out $(JDK_OUTPUTDIR)/lib/%, $(EXEC_LIST))) 671 672 # Do the same for overlay image 673 JRE_OVERLAY_STRIP_LIST:=$(patsubst $(JDK_OUTPUTDIR)/%,$(IMAGES_OUTPUTDIR)/_strip_jre_overlay/%.stripped,\ 674 $(filter-out $(addprefix %,$(NOT_JRE_BIN_FILES) $(NOT_JRE_LIB_FILES) $(JDKJRE_LIB_FILES)),\ 675 $(EXEC_LIST_OVERLAY))) 676 677 JDKJRE_OVERLAY_STRIP_LIST:=$(patsubst $(JDK_OUTPUTDIR)/%, \ 678 $(IMAGES_OUTPUTDIR)/_strip_jdk_overlay/jre/%.stripped, \ 679 $(filter-out $(addprefix %,$(NOT_JRE_BIN_FILES) $(NOT_JRE_LIB_FILES)), $(EXEC_LIST_OVERLAY))) 680 681 JDK_OVERLAY_BIN_STRIP_LIST:=$(patsubst $(JDK_OUTPUTDIR)/%, \ 682 $(IMAGES_OUTPUTDIR)/_strip_jdk_overlay/%.stripped, \ 683 $(filter-out $(JDK_OUTPUTDIR)/lib/%, $(EXEC_LIST_OVERLAY))) 684 685 define mcs-file 686 $(if $(POST_MCS_CMD),$(POST_MCS_CMD) $<) 687 endef 688 689 define strip-file 690 $(ECHO) Stripping $(LOG_INFO) $(patsubst $(OUTPUT_ROOT)/%,%,$<) 691 $(CHMOD) u+w $< 692 $(POST_STRIP_CMD) $< 693 $(call mcs-file) 694 $(CHMOD) go-w $< 695 $(MKDIR) -p $(@D) 696 $(TOUCH) $@ 697 endef 698 699 # Setup a rule for stripping files based on touch files 700 $(IMAGES_OUTPUTDIR)/_strip_jre$(PROFILE)/%.stripped: $(JRE_IMAGE_DIR)/% 701 $(call strip-file) 702 703 $(IMAGES_OUTPUTDIR)/_strip_jdk/%.stripped: $(JDK_IMAGE_DIR)/% 704 $(call strip-file) 705 706 $(IMAGES_OUTPUTDIR)/_strip_jre_overlay/%.stripped: $(JRE_OVERLAY_IMAGE_DIR)/% 707 $(call strip-file) 708 709 $(IMAGES_OUTPUTDIR)/_strip_jdk_overlay/%.stripped: $(JDK_OVERLAY_IMAGE_DIR)/% 710 $(call strip-file) 711 712 endif 713 714 ################################################################################ 715 # Main targets 716 717 jre-image: $(JRE_BIN_TARGETS) $(JRE_LIB_TARGETS) $(JRE_IMAGE_DIR)/lib/applet \ 718 $(JRE_IMAGE_DIR)/lib/meta-index $(JRE_IMAGE_DIR)/lib/ext/meta-index \ 719 $(JRE_MAN_PAGE_LIST) $(JRE_DOC_TARGETS) $(JRE_INFO_FILE) $(JRE_STRIP_LIST) 720 721 jdk-image: $(JDK_BIN_TARGETS) $(JDKJRE_BIN_TARGETS) \ 722 $(JDK_LIB_TARGETS) $(JDKJRE_LIB_TARGETS) \ 723 $(JDK_IMAGE_DIR)/jre/lib/applet \ 724 $(JDK_DEMO_TARGETS) \ 725 $(JDK_IMAGE_DIR)/jre/lib/meta-index $(JDK_IMAGE_DIR)/jre/lib/ext/meta-index \ 726 $(JDK_MAN_PAGE_LIST) $(JDK_SAMPLE_TARGETS) \ 727 $(JDK_DB_TARGETS) $(JDK_INCLUDE_TARGETS) \ 728 $(JDKJRE_DOC_TARGETS) $(JDK_DOC_TARGETS) \ 729 $(JDK_INFO_FILE) $(JDKJRE_STRIP_LIST) $(JDK_BIN_STRIP_LIST) \ 730 $(JDK_IMAGE_DIR)/src.zip 731 732 jre-overlay-image: $(JRE_OVERLAY_BIN_TARGETS) $(JRE_OVERLAY_LIB_TARGETS) \ 733 $(JRE_OVERLAY_INFO_FILE) $(JRE_OVERLAY_STRIP_LIST) 734 735 jdk-overlay-image: $(JDK_OVERLAY_BIN_TARGETS) $(JDKJRE_OVERLAY_BIN_TARGETS) \ 736 $(JDK_OVERLAY_LIB_TARGETS) $(JDKJRE_OVERLAY_LIB_TARGETS) \ 737 $(JDK_OVERLAY_DEMO_TARGETS) $(JDK_OVERLAY_INFO_FILE) \ 738 $(JDKJRE_OVERLAY_STRIP_LIST) $(JDK_OVERLAY_BIN_STRIP_LIST) 739 740 ifneq ($(PROFILE),) 741 # Files in lib$(PROFILE) are excluded from the generic copying routines so 742 # we have to add them back in here 743 $(foreach f,$(CUSTOM_PROFILE_JARS),\ 744 $(eval $(call AddFileToCopy,$(IMAGES_OUTPUTDIR)/lib$(PROFILE),$(JRE_IMAGE_DIR)/lib,$f,JRE_LIB_TARGETS))) 745 746 profile-image: $(JRE_BIN_TARGETS) $(JRE_LIB_TARGETS) \ 747 $(JRE_IMAGE_DIR)/lib/meta-index $(JRE_IMAGE_DIR)/lib/ext/meta-index \ 748 $(JRE_INFO_FILE) $(JRE_STRIP_LIST) 749 750 .PHONY: profile-image 751 752 endif # Profile 753 754 ################################################################################ 755 756 .PHONY: default images jre-image jdk-image |