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 jcmd$(EXE_SUFFIX) \ 107 jdb$(EXE_SUFFIX) \ 108 jps$(EXE_SUFFIX) \ 109 jrunscript$(EXE_SUFFIX) \ 110 jstat$(EXE_SUFFIX) \ 111 jstatd$(EXE_SUFFIX) \ 112 jstack$(EXE_SUFFIX) \ 113 packagebean$(SCRIPT_SUFFIX) \ 114 rmic$(EXE_SUFFIX) \ 115 serialver$(EXE_SUFFIX) \ 116 unregbean$(EXE_SUFFIX) \ 117 jconsole$(EXE_SUFFIX) \ 118 jinfo$(EXE_SUFFIX) \ 119 jmap$(EXE_SUFFIX) \ 120 native2ascii$(EXE_SUFFIX) \ 121 xjc$(EXE_SUFFIX) \ 122 wsgen$(EXE_SUFFIX) \ 123 wsimport$(EXE_SUFFIX) \ 124 schemagen$(EXE_SUFFIX) \ 125 jsadebugd$(EXE_SUFFIX) \ 126 jhat$(EXE_SUFFIX) 127 128 WINDOWS_JDK_BIN_FILES = \ 129 $(EXE_SUFFIX) \ 130 $(LIBRARY_PREFIX)jli$(SHARED_LIBRARY_SUFFIX) \ 131 $(notdir $(MSVCR_DLL)) 132 133 WINDOWS_JDKJRE_BIN_FILES := \ 134 $(LIBRARY_PREFIX)attach$(SHARED_LIBRARY_SUFFIX) \ 135 $(SALIB_NAME) 136 137 # Find all files in bin dir 138 ALL_BIN_LIST := $(call CacheFind,$(JDK_OUTPUTDIR)/bin) 139 140 # Prevent sjavac from entering the images. 141 ALL_BIN_LIST := $(filter-out %/sjavac,$(ALL_BIN_LIST)) 142 143 # For unknown reason the debuginfo files for executables are not put into images 144 # e.g filter them out 145 ifneq ($(OPENJDK_TARGET_OS),windows) 146 ALL_BIN_LIST := $(filter-out %.debuginfo %.diz, $(ALL_BIN_LIST)) 178 $(foreach f,$(filter-out $(OVERLAY_FILTER),$(JDK_BIN_LIST)),\ 179 $(eval $(call AddFileToCopy,$(JDK_OUTPUTDIR),$(JDK_IMAGE_DIR),$f,JDK_BIN_TARGETS))) 180 $(foreach f,$(filter-out $(OVERLAY_FILTER),$(JDKJRE_BIN_LIST)),\ 181 $(eval $(call AddFileToCopy,$(JDK_OUTPUTDIR),$(JDK_IMAGE_DIR)/jre,$f,JDKJRE_BIN_TARGETS))) 182 183 $(foreach f,$(filter $(OVERLAY_FILTER),$(JRE_BIN_LIST)),\ 184 $(eval $(call AddFileToCopy,$(JDK_OUTPUTDIR),$(JRE_OVERLAY_IMAGE_DIR),$f,JRE_BIN_TARGETS))) 185 $(foreach f,$(filter $(OVERLAY_FILTER),$(JDK_BIN_LIST)),\ 186 $(eval $(call AddFileToCopy,$(JDK_OUTPUTDIR),$(JDK_OVERLAY_IMAGE_DIR),$f,JDK_BIN_TARGETS))) 187 $(foreach f,$(filter $(OVERLAY_FILTER),$(JDKJRE_BIN_LIST)),\ 188 $(eval $(call AddFileToCopy,$(JDK_OUTPUTDIR),$(JDK_OVERLAY_IMAGE_DIR)/jre,$f,JDKJRE_BIN_TARGETS))) 189 190 ################################################################################ 191 # /lib dir 192 ifneq ($(OPENJDK_TARGET_OS), macosx) 193 JDKJRE_LIB_FILES := \ 194 $(LIBRARY_PREFIX)attach$(SHARED_LIBRARY_SUFFIX) \ 195 $(SALIB_NAME) 196 endif 197 198 NOT_JRE_LIB_FILES := \ 199 tools.jar \ 200 jconsole.jar \ 201 sa-jdi.jar \ 202 dt.jar \ 203 orb.idl \ 204 ir.idl \ 205 ct.sym 206 207 ifeq ($(OPENJDK_TARGET_OS), windows) 208 NOT_JRE_LIB_FILES += jawt.lib jvm.lib 209 endif 210 211 JDK_LIB_FILES := $(NOT_JRE_LIB_FILES) 212 ifeq ($(OPENJDK_TARGET_OS), linux) 213 JDK_LIB_FILES += jexec 214 endif 215 216 # Find all files to copy from $(JDK_OUTPUTDIR)/lib 217 # Jar files are not expected to be here 218 ALL_JDKOUT_LIB_LIST := $(call not-containing,_the.,$(filter-out %.jar,\ 219 $(call CacheFind,$(JDK_OUTPUTDIR)/lib))) 220 # Find all files to copy from $(IMAGES_OUTPUTDIR)/lib 221 # This is were the jar files are and might not exist if building overlay-images 222 ifneq ($(wildcard $(IMAGES_OUTPUTDIR)/lib),) 223 ALL_IMAGES_LIB_LIST := $(call not-containing,_the.,\ 224 $(call CacheFind,$(IMAGES_OUTPUTDIR)/lib)) 225 endif 226 227 # Filter files to copy for each destination 228 JRE_JDKOUT_LIB_LIST := $(filter-out $(addprefix %,$(NOT_JRE_LIB_FILES) $(JDKJRE_LIB_FILES)),\ 589 endef 590 591 define create-info-file 592 $(MKDIR) -p $(@D) 593 $(RM) $@ 594 $(call info-file-item, "JAVA_VERSION", "$(JDK_VERSION)") 595 $(call info-file-item, "OS_NAME", "$(REQUIRED_OS_NAME)") 596 $(call info-file-item, "OS_VERSION", "$(REQUIRED_OS_VERSION)") 597 $(call info-file-item, "OS_ARCH", "$(OPENJDK_TARGET_CPU_LEGACY)") 598 $(call info-file-item, "SOURCE", "$(ALL_SOURCE_TIPS)") 599 endef 600 601 ALL_SOURCE_TIPS = $(shell \ 602 if [ -f $(OUTPUT_ROOT)/source_tips ] ; then \ 603 $(CAT) $(OUTPUT_ROOT)/source_tips ; \ 604 fi) 605 606 $(JRE_INFO_FILE): $(OUTPUT_ROOT)/spec.gmk $(OUTPUT_ROOT)/source_tips 607 $(ECHO) $(LOG_INFO) Generating $(patsubst $(OUTPUT_ROOT)/%,%,$@) 608 $(call create-info-file) 609 610 $(JDK_INFO_FILE): $(OUTPUT_ROOT)/spec.gmk $(OUTPUT_ROOT)/source_tips 611 $(ECHO) $(LOG_INFO) Generating $(patsubst $(OUTPUT_ROOT)/%,%,$@) 612 $(call create-info-file) 613 614 $(JRE_OVERLAY_INFO_FILE): $(OUTPUT_ROOT)/spec.gmk $(OUTPUT_ROOT)/source_tips 615 $(ECHO) $(LOG_INFO) Generating $(patsubst $(OUTPUT_ROOT)/%,%,$@) 616 $(call create-info-file) 617 618 $(JDK_OVERLAY_INFO_FILE): $(OUTPUT_ROOT)/spec.gmk $(OUTPUT_ROOT)/source_tips 619 $(ECHO) $(LOG_INFO) Generating $(patsubst $(OUTPUT_ROOT)/%,%,$@) 620 $(call create-info-file) 621 622 $(JDK_IMAGE_DIR)/src.zip: $(IMAGES_OUTPUTDIR)/src.zip 623 $(ECHO) $(LOG_INFO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@) 624 $(install-file) 625 626 ################################################################################ 627 # Post processing (strip etc) 628 630 ifeq ($(OPENJDK_TARGET_OS), windows) 631 EXEC_LIST_BIN:=$(filter-out %$(notdir $(MSVCR_DLL)),$(filter %.exe %.dll,$(ALL_BIN_LIST))) 632 else 633 # Find all executables in JDK_OUTPUTDIR since they exist when this makefile is parsed 634 EXEC_LIST_BIN:=$(shell $(FILE) `$(FIND) $(JDK_OUTPUTDIR)/bin -type f -name \*$(EXE_SUFFIX)` \ 635 | $(EGREP) 'ELF' | $(CUT) -d':' -f1) 636 # On mac, the old build searches for static libraries for stripping instead of shared. 637 # Not clear if it's intentional. 638 ifneq ($(OPENJDK_TARGET_OS), macosx) 639 EXEC_LIST_LIB:=$(shell $(FIND) $(JDK_OUTPUTDIR)/lib -type f -name \*$(SHARED_LIBRARY_SUFFIX)) 640 endif 641 endif 642 # Filter out sjavac 643 EXEC_LIST_BIN:=$(filter-out %sjavac$(EXE_SUFFIX),$(EXEC_LIST_BIN)) 644 645 # Filter out the overlay specific bin files 646 EXEC_LIST:=$(filter-out $(OVERLAY_FILTER),$(EXEC_LIST_BIN)) $(EXEC_LIST_LIB) 647 EXEC_LIST_OVERLAY:=$(filter $(OVERLAY_FILTER),$(EXEC_LIST_BIN)) $(EXEC_LIST_LIB) 648 649 # Filter out non JRE files and convert to unique touch files to depend on 650 JRE_STRIP_LIST:=$(patsubst $(JDK_OUTPUTDIR)/%,$(IMAGES_OUTPUTDIR)/_strip_jre/%.stripped,\ 651 $(filter-out $(addprefix %,$(NOT_JRE_BIN_FILES) $(NOT_JRE_LIB_FILES) $(JDKJRE_LIB_FILES)),\ 652 $(EXEC_LIST))) 653 654 JDKJRE_STRIP_LIST:=$(patsubst $(JDK_OUTPUTDIR)/%, \ 655 $(IMAGES_OUTPUTDIR)/_strip_jdk/jre/%.stripped, \ 656 $(filter-out $(addprefix %,$(NOT_JRE_BIN_FILES) $(NOT_JRE_LIB_FILES)), $(EXEC_LIST))) 657 658 JDK_BIN_STRIP_LIST:=$(patsubst $(JDK_OUTPUTDIR)/%, \ 659 $(IMAGES_OUTPUTDIR)/_strip_jdk/%.stripped, \ 660 $(filter-out $(JDK_OUTPUTDIR)/lib/%, $(EXEC_LIST))) 661 662 # Do the same for overlay image 663 JRE_OVERLAY_STRIP_LIST:=$(patsubst $(JDK_OUTPUTDIR)/%,$(IMAGES_OUTPUTDIR)/_strip_jre_overlay/%.stripped,\ 664 $(filter-out $(addprefix %,$(NOT_JRE_BIN_FILES) $(NOT_JRE_LIB_FILES) $(JDKJRE_LIB_FILES)),\ 665 $(EXEC_LIST_OVERLAY))) 666 667 JDKJRE_OVERLAY_STRIP_LIST:=$(patsubst $(JDK_OUTPUTDIR)/%, \ 668 $(IMAGES_OUTPUTDIR)/_strip_jdk_overlay/jre/%.stripped, \ 669 $(filter-out $(addprefix %,$(NOT_JRE_BIN_FILES) $(NOT_JRE_LIB_FILES)), $(EXEC_LIST_OVERLAY))) 670 671 JDK_OVERLAY_BIN_STRIP_LIST:=$(patsubst $(JDK_OUTPUTDIR)/%, \ 672 $(IMAGES_OUTPUTDIR)/_strip_jdk_overlay/%.stripped, \ 673 $(filter-out $(JDK_OUTPUTDIR)/lib/%, $(EXEC_LIST_OVERLAY))) 674 675 define mcs-file 676 $(if $(POST_MCS_CMD),$(POST_MCS_CMD) $<) 677 endef 678 679 define strip-file 680 $(ECHO) Stripping $(LOG_INFO) $(patsubst $(OUTPUT_ROOT)/%,%,$<) 681 $(CHMOD) u+w $< 682 $(POST_STRIP_CMD) $< 683 $(call mcs-file) 684 $(CHMOD) go-w $< 685 $(MKDIR) -p $(@D) 686 $(TOUCH) $@ 687 endef 688 689 # Setup a rule for stripping files based on touch files 690 $(IMAGES_OUTPUTDIR)/_strip_jre/%.stripped: $(JRE_IMAGE_DIR)/% 691 $(call strip-file) 692 693 $(IMAGES_OUTPUTDIR)/_strip_jdk/%.stripped: $(JDK_IMAGE_DIR)/% 694 $(call strip-file) 695 696 $(IMAGES_OUTPUTDIR)/_strip_jre_overlay/%.stripped: $(JRE_OVERLAY_IMAGE_DIR)/% 697 $(call strip-file) 698 699 $(IMAGES_OUTPUTDIR)/_strip_jdk_overlay/%.stripped: $(JDK_OVERLAY_IMAGE_DIR)/% 700 $(call strip-file) 701 702 endif 703 704 ################################################################################ 705 # Main targets 706 707 jre-image: $(JRE_BIN_TARGETS) $(JRE_LIB_TARGETS) $(JRE_IMAGE_DIR)/lib/applet \ 708 $(JRE_IMAGE_DIR)/lib/meta-index $(JRE_IMAGE_DIR)/lib/ext/meta-index \ 709 $(JRE_MAN_PAGE_LIST) $(JRE_DOC_TARGETS) $(JRE_INFO_FILE) $(JRE_STRIP_LIST) 710 711 jdk-image: $(JDK_BIN_TARGETS) $(JDKJRE_BIN_TARGETS) \ 712 $(JDK_LIB_TARGETS) $(JDKJRE_LIB_TARGETS) \ 713 $(JDK_IMAGE_DIR)/jre/lib/applet \ 714 $(JDK_DEMO_TARGETS) \ 715 $(JDK_IMAGE_DIR)/jre/lib/meta-index $(JDK_IMAGE_DIR)/jre/lib/ext/meta-index \ 716 $(JDK_MAN_PAGE_LIST) $(JDK_SAMPLE_TARGETS) \ 717 $(JDK_DB_TARGETS) $(JDK_INCLUDE_TARGETS) \ 718 $(JDKJRE_DOC_TARGETS) $(JDK_DOC_TARGETS) \ 719 $(JDK_INFO_FILE) $(JDKJRE_STRIP_LIST) $(JDK_BIN_STRIP_LIST) \ 720 $(JDK_IMAGE_DIR)/src.zip 721 722 jre-overlay-image: $(JRE_OVERLAY_BIN_TARGETS) $(JRE_OVERLAY_LIB_TARGETS) \ 723 $(JRE_OVERLAY_INFO_FILE) $(JRE_OVERLAY_STRIP_LIST) 724 725 jdk-overlay-image: $(JDK_OVERLAY_BIN_TARGETS) $(JDKJRE_OVERLAY_BIN_TARGETS) \ 726 $(JDK_OVERLAY_LIB_TARGETS) $(JDKJRE_OVERLAY_LIB_TARGETS) \ 727 $(JDK_OVERLAY_DEMO_TARGETS) $(JDK_OVERLAY_INFO_FILE) \ 728 $(JDKJRE_OVERLAY_STRIP_LIST) $(JDK_OVERLAY_BIN_STRIP_LIST) 729 730 ################################################################################ 731 732 .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 jcmd$(EXE_SUFFIX) \ 110 jdb$(EXE_SUFFIX) \ 111 jps$(EXE_SUFFIX) \ 112 jrunscript$(EXE_SUFFIX) \ 113 jstat$(EXE_SUFFIX) \ 114 jstatd$(EXE_SUFFIX) \ 115 jstack$(EXE_SUFFIX) \ 116 packagebean$(SCRIPT_SUFFIX) \ 117 rmic$(EXE_SUFFIX) \ 118 serialver$(EXE_SUFFIX) \ 119 unregbean$(EXE_SUFFIX) \ 120 jconsole$(EXE_SUFFIX) \ 121 jinfo$(EXE_SUFFIX) \ 122 jmap$(EXE_SUFFIX) \ 123 native2ascii$(EXE_SUFFIX) \ 124 xjc$(EXE_SUFFIX) \ 125 wsgen$(EXE_SUFFIX) \ 126 wsimport$(EXE_SUFFIX) \ 127 schemagen$(EXE_SUFFIX) \ 128 jsadebugd$(EXE_SUFFIX) \ 129 jhat$(EXE_SUFFIX) 130 endif 131 132 WINDOWS_JDK_BIN_FILES = \ 133 $(EXE_SUFFIX) \ 134 $(LIBRARY_PREFIX)jli$(SHARED_LIBRARY_SUFFIX) \ 135 $(notdir $(MSVCR_DLL)) 136 137 WINDOWS_JDKJRE_BIN_FILES := \ 138 $(LIBRARY_PREFIX)attach$(SHARED_LIBRARY_SUFFIX) \ 139 $(SALIB_NAME) 140 141 # Find all files in bin dir 142 ALL_BIN_LIST := $(call CacheFind,$(JDK_OUTPUTDIR)/bin) 143 144 # Prevent sjavac from entering the images. 145 ALL_BIN_LIST := $(filter-out %/sjavac,$(ALL_BIN_LIST)) 146 147 # For unknown reason the debuginfo files for executables are not put into images 148 # e.g filter them out 149 ifneq ($(OPENJDK_TARGET_OS),windows) 150 ALL_BIN_LIST := $(filter-out %.debuginfo %.diz, $(ALL_BIN_LIST)) 182 $(foreach f,$(filter-out $(OVERLAY_FILTER),$(JDK_BIN_LIST)),\ 183 $(eval $(call AddFileToCopy,$(JDK_OUTPUTDIR),$(JDK_IMAGE_DIR),$f,JDK_BIN_TARGETS))) 184 $(foreach f,$(filter-out $(OVERLAY_FILTER),$(JDKJRE_BIN_LIST)),\ 185 $(eval $(call AddFileToCopy,$(JDK_OUTPUTDIR),$(JDK_IMAGE_DIR)/jre,$f,JDKJRE_BIN_TARGETS))) 186 187 $(foreach f,$(filter $(OVERLAY_FILTER),$(JRE_BIN_LIST)),\ 188 $(eval $(call AddFileToCopy,$(JDK_OUTPUTDIR),$(JRE_OVERLAY_IMAGE_DIR),$f,JRE_BIN_TARGETS))) 189 $(foreach f,$(filter $(OVERLAY_FILTER),$(JDK_BIN_LIST)),\ 190 $(eval $(call AddFileToCopy,$(JDK_OUTPUTDIR),$(JDK_OVERLAY_IMAGE_DIR),$f,JDK_BIN_TARGETS))) 191 $(foreach f,$(filter $(OVERLAY_FILTER),$(JDKJRE_BIN_LIST)),\ 192 $(eval $(call AddFileToCopy,$(JDK_OUTPUTDIR),$(JDK_OVERLAY_IMAGE_DIR)/jre,$f,JDKJRE_BIN_TARGETS))) 193 194 ################################################################################ 195 # /lib dir 196 ifneq ($(OPENJDK_TARGET_OS), macosx) 197 JDKJRE_LIB_FILES := \ 198 $(LIBRARY_PREFIX)attach$(SHARED_LIBRARY_SUFFIX) \ 199 $(SALIB_NAME) 200 endif 201 202 ifeq ($(PROFILE),) 203 NOT_JRE_LIB_FILES := \ 204 tools.jar \ 205 jconsole.jar \ 206 sa-jdi.jar \ 207 dt.jar \ 208 orb.idl \ 209 ir.idl \ 210 ct.sym 211 212 ifeq ($(OPENJDK_TARGET_OS), windows) 213 NOT_JRE_LIB_FILES += jawt.lib jvm.lib 214 endif 215 endif 216 217 JDK_LIB_FILES := $(NOT_JRE_LIB_FILES) 218 ifeq ($(OPENJDK_TARGET_OS), linux) 219 JDK_LIB_FILES += jexec 220 endif 221 222 # Find all files to copy from $(JDK_OUTPUTDIR)/lib 223 # Jar files are not expected to be here 224 ALL_JDKOUT_LIB_LIST := $(call not-containing,_the.,$(filter-out %.jar,\ 225 $(call CacheFind,$(JDK_OUTPUTDIR)/lib))) 226 # Find all files to copy from $(IMAGES_OUTPUTDIR)/lib 227 # This is were the jar files are and might not exist if building overlay-images 228 ifneq ($(wildcard $(IMAGES_OUTPUTDIR)/lib),) 229 ALL_IMAGES_LIB_LIST := $(call not-containing,_the.,\ 230 $(call CacheFind,$(IMAGES_OUTPUTDIR)/lib)) 231 endif 232 233 # Filter files to copy for each destination 234 JRE_JDKOUT_LIB_LIST := $(filter-out $(addprefix %,$(NOT_JRE_LIB_FILES) $(JDKJRE_LIB_FILES)),\ 595 endef 596 597 define create-info-file 598 $(MKDIR) -p $(@D) 599 $(RM) $@ 600 $(call info-file-item, "JAVA_VERSION", "$(JDK_VERSION)") 601 $(call info-file-item, "OS_NAME", "$(REQUIRED_OS_NAME)") 602 $(call info-file-item, "OS_VERSION", "$(REQUIRED_OS_VERSION)") 603 $(call info-file-item, "OS_ARCH", "$(OPENJDK_TARGET_CPU_LEGACY)") 604 $(call info-file-item, "SOURCE", "$(ALL_SOURCE_TIPS)") 605 endef 606 607 ALL_SOURCE_TIPS = $(shell \ 608 if [ -f $(OUTPUT_ROOT)/source_tips ] ; then \ 609 $(CAT) $(OUTPUT_ROOT)/source_tips ; \ 610 fi) 611 612 $(JRE_INFO_FILE): $(OUTPUT_ROOT)/spec.gmk $(OUTPUT_ROOT)/source_tips 613 $(ECHO) $(LOG_INFO) Generating $(patsubst $(OUTPUT_ROOT)/%,%,$@) 614 $(call create-info-file) 615 ifneq ($(PROFILE),) 616 $(call info-file-item, "JAVA_PROFILE", "$(call profile_name, $(call profile_number, $(PROFILE)))") 617 endif 618 619 $(JDK_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 $(JRE_OVERLAY_INFO_FILE): $(OUTPUT_ROOT)/spec.gmk $(OUTPUT_ROOT)/source_tips 624 $(ECHO) $(LOG_INFO) Generating $(patsubst $(OUTPUT_ROOT)/%,%,$@) 625 $(call create-info-file) 626 627 $(JDK_OVERLAY_INFO_FILE): $(OUTPUT_ROOT)/spec.gmk $(OUTPUT_ROOT)/source_tips 628 $(ECHO) $(LOG_INFO) Generating $(patsubst $(OUTPUT_ROOT)/%,%,$@) 629 $(call create-info-file) 630 631 $(JDK_IMAGE_DIR)/src.zip: $(IMAGES_OUTPUTDIR)/src.zip 632 $(ECHO) $(LOG_INFO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@) 633 $(install-file) 634 635 ################################################################################ 636 # Post processing (strip etc) 637 639 ifeq ($(OPENJDK_TARGET_OS), windows) 640 EXEC_LIST_BIN:=$(filter-out %$(notdir $(MSVCR_DLL)),$(filter %.exe %.dll,$(ALL_BIN_LIST))) 641 else 642 # Find all executables in JDK_OUTPUTDIR since they exist when this makefile is parsed 643 EXEC_LIST_BIN:=$(shell $(FILE) `$(FIND) $(JDK_OUTPUTDIR)/bin -type f -name \*$(EXE_SUFFIX)` \ 644 | $(EGREP) 'ELF' | $(CUT) -d':' -f1) 645 # On mac, the old build searches for static libraries for stripping instead of shared. 646 # Not clear if it's intentional. 647 ifneq ($(OPENJDK_TARGET_OS), macosx) 648 EXEC_LIST_LIB:=$(shell $(FIND) $(JDK_OUTPUTDIR)/lib -type f -name \*$(SHARED_LIBRARY_SUFFIX)) 649 endif 650 endif 651 # Filter out sjavac 652 EXEC_LIST_BIN:=$(filter-out %sjavac$(EXE_SUFFIX),$(EXEC_LIST_BIN)) 653 654 # Filter out the overlay specific bin files 655 EXEC_LIST:=$(filter-out $(OVERLAY_FILTER),$(EXEC_LIST_BIN)) $(EXEC_LIST_LIB) 656 EXEC_LIST_OVERLAY:=$(filter $(OVERLAY_FILTER),$(EXEC_LIST_BIN)) $(EXEC_LIST_LIB) 657 658 # Filter out non JRE files and convert to unique touch files to depend on 659 JRE_STRIP_LIST:=$(patsubst $(JDK_OUTPUTDIR)/%,$(IMAGES_OUTPUTDIR)/_strip_jre$(PROFILE)/%.stripped,\ 660 $(filter-out $(addprefix %,$(NOT_JRE_BIN_FILES) $(NOT_JRE_LIB_FILES) $(JDKJRE_LIB_FILES)),\ 661 $(EXEC_LIST))) 662 663 JDKJRE_STRIP_LIST:=$(patsubst $(JDK_OUTPUTDIR)/%, \ 664 $(IMAGES_OUTPUTDIR)/_strip_jdk/jre/%.stripped, \ 665 $(filter-out $(addprefix %,$(NOT_JRE_BIN_FILES) $(NOT_JRE_LIB_FILES)), $(EXEC_LIST))) 666 667 JDK_BIN_STRIP_LIST:=$(patsubst $(JDK_OUTPUTDIR)/%, \ 668 $(IMAGES_OUTPUTDIR)/_strip_jdk/%.stripped, \ 669 $(filter-out $(JDK_OUTPUTDIR)/lib/%, $(EXEC_LIST))) 670 671 # Do the same for overlay image 672 JRE_OVERLAY_STRIP_LIST:=$(patsubst $(JDK_OUTPUTDIR)/%,$(IMAGES_OUTPUTDIR)/_strip_jre_overlay/%.stripped,\ 673 $(filter-out $(addprefix %,$(NOT_JRE_BIN_FILES) $(NOT_JRE_LIB_FILES) $(JDKJRE_LIB_FILES)),\ 674 $(EXEC_LIST_OVERLAY))) 675 676 JDKJRE_OVERLAY_STRIP_LIST:=$(patsubst $(JDK_OUTPUTDIR)/%, \ 677 $(IMAGES_OUTPUTDIR)/_strip_jdk_overlay/jre/%.stripped, \ 678 $(filter-out $(addprefix %,$(NOT_JRE_BIN_FILES) $(NOT_JRE_LIB_FILES)), $(EXEC_LIST_OVERLAY))) 679 680 JDK_OVERLAY_BIN_STRIP_LIST:=$(patsubst $(JDK_OUTPUTDIR)/%, \ 681 $(IMAGES_OUTPUTDIR)/_strip_jdk_overlay/%.stripped, \ 682 $(filter-out $(JDK_OUTPUTDIR)/lib/%, $(EXEC_LIST_OVERLAY))) 683 684 define mcs-file 685 $(if $(POST_MCS_CMD),$(POST_MCS_CMD) $<) 686 endef 687 688 define strip-file 689 $(ECHO) Stripping $(LOG_INFO) $(patsubst $(OUTPUT_ROOT)/%,%,$<) 690 $(CHMOD) u+w $< 691 $(POST_STRIP_CMD) $< 692 $(call mcs-file) 693 $(CHMOD) go-w $< 694 $(MKDIR) -p $(@D) 695 $(TOUCH) $@ 696 endef 697 698 # Setup a rule for stripping files based on touch files 699 $(IMAGES_OUTPUTDIR)/_strip_jre$(PROFILE)/%.stripped: $(JRE_IMAGE_DIR)/% 700 $(call strip-file) 701 702 $(IMAGES_OUTPUTDIR)/_strip_jdk/%.stripped: $(JDK_IMAGE_DIR)/% 703 $(call strip-file) 704 705 $(IMAGES_OUTPUTDIR)/_strip_jre_overlay/%.stripped: $(JRE_OVERLAY_IMAGE_DIR)/% 706 $(call strip-file) 707 708 $(IMAGES_OUTPUTDIR)/_strip_jdk_overlay/%.stripped: $(JDK_OVERLAY_IMAGE_DIR)/% 709 $(call strip-file) 710 711 endif 712 713 ################################################################################ 714 # Main targets 715 716 jre-image: $(JRE_BIN_TARGETS) $(JRE_LIB_TARGETS) $(JRE_IMAGE_DIR)/lib/applet \ 717 $(JRE_IMAGE_DIR)/lib/meta-index $(JRE_IMAGE_DIR)/lib/ext/meta-index \ 718 $(JRE_MAN_PAGE_LIST) $(JRE_DOC_TARGETS) $(JRE_INFO_FILE) $(JRE_STRIP_LIST) 719 720 jdk-image: $(JDK_BIN_TARGETS) $(JDKJRE_BIN_TARGETS) \ 721 $(JDK_LIB_TARGETS) $(JDKJRE_LIB_TARGETS) \ 722 $(JDK_IMAGE_DIR)/jre/lib/applet \ 723 $(JDK_DEMO_TARGETS) \ 724 $(JDK_IMAGE_DIR)/jre/lib/meta-index $(JDK_IMAGE_DIR)/jre/lib/ext/meta-index \ 725 $(JDK_MAN_PAGE_LIST) $(JDK_SAMPLE_TARGETS) \ 726 $(JDK_DB_TARGETS) $(JDK_INCLUDE_TARGETS) \ 727 $(JDKJRE_DOC_TARGETS) $(JDK_DOC_TARGETS) \ 728 $(JDK_INFO_FILE) $(JDKJRE_STRIP_LIST) $(JDK_BIN_STRIP_LIST) \ 729 $(JDK_IMAGE_DIR)/src.zip 730 731 jre-overlay-image: $(JRE_OVERLAY_BIN_TARGETS) $(JRE_OVERLAY_LIB_TARGETS) \ 732 $(JRE_OVERLAY_INFO_FILE) $(JRE_OVERLAY_STRIP_LIST) 733 734 jdk-overlay-image: $(JDK_OVERLAY_BIN_TARGETS) $(JDKJRE_OVERLAY_BIN_TARGETS) \ 735 $(JDK_OVERLAY_LIB_TARGETS) $(JDKJRE_OVERLAY_LIB_TARGETS) \ 736 $(JDK_OVERLAY_DEMO_TARGETS) $(JDK_OVERLAY_INFO_FILE) \ 737 $(JDKJRE_OVERLAY_STRIP_LIST) $(JDK_OVERLAY_BIN_STRIP_LIST) 738 739 ifneq ($(PROFILE),) 740 # Files in lib$(PROFILE) are excluded from the generic copying routines so 741 # we have to add them back in here 742 $(foreach f,$(CUSTOM_PROFILE_JARS),\ 743 $(eval $(call AddFileToCopy,$(IMAGES_OUTPUTDIR)/lib$(PROFILE),$(JRE_IMAGE_DIR)/lib,$f,JRE_LIB_TARGETS))) 744 745 profile-image: $(JRE_BIN_TARGETS) $(JRE_LIB_TARGETS) \ 746 $(JRE_IMAGE_DIR)/lib/meta-index $(JRE_IMAGE_DIR)/lib/ext/meta-index \ 747 $(JRE_INFO_FILE) $(JRE_STRIP_LIST) 748 749 .PHONY: profile-image 750 751 endif # Profile 752 753 ################################################################################ 754 755 .PHONY: default images jre-image jdk-image |