55
56 # All modules for the current target platform.
57 ALL_MODULES := $(call FindAllModules)
58
59 ################################################################################
60 ################################################################################
61 #
62 # Recipes for all targets. Only recipes, dependencies are declared later.
63 #
64 ################################################################################
65
66 ################################################################################
67 # Interim/build tools targets, compiling tools used during the build
68
69 buildtools-langtools:
70 +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f ToolsLangtools.gmk)
71
72 interim-langtools:
73 +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileInterimLangtools.gmk)
74
75 interim-rmic:
76 +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileInterimRmic.gmk)
77
78 interim-tzdb:
79 +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CopyInterimTZDB.gmk)
80
81
82 buildtools-jdk:
83 +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileToolsJdk.gmk)
84
85 buildtools-modules:
86 +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileModuleTools.gmk)
87
88 buildtools-hotspot:
89 +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileToolsHotspot.gmk)
90
91 ALL_TARGETS += buildtools-langtools interim-langtools \
92 interim-rmic interim-tzdb buildtools-jdk buildtools-modules \
93 buildtools-hotspot
94
95 ################################################################################
96 # Special targets for certain modules
97
98 generate-exported-symbols:
99 +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f BuildStatic.gmk)
100
101 ALL_TARGETS += generate-exported-symbols
102
103 ################################################################################
104 # Gensrc targets, generating source before java compilation can be done
105 #
106 $(eval $(call DeclareRecipesForPhase, GENSRC, \
107 TARGET_SUFFIX := gensrc-src, \
108 FILE_PREFIX := Gensrc, \
109 MAKE_SUBDIR := gensrc, \
110 CHECK_MODULES := $(ALL_MODULES), \
111 ))
112
177 $(foreach m, $(IMPORT_COPY_MODULES), $(eval $(call DeclareImportCopyRecipe,$m)))
178
179 ALL_TARGETS += $(ALL_COPY_TARGETS)
180
181 ################################################################################
182 # Targets for compiling all java modules.
183 JAVA_MODULES := $(ALL_MODULES)
184 JAVA_TARGETS := $(addsuffix -java, $(JAVA_MODULES))
185
186 define DeclareCompileJavaRecipe
187 $1-java:
188 +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) \
189 -f CompileJavaModules.gmk MODULE=$1)
190 endef
191
192 $(foreach m, $(JAVA_MODULES), $(eval $(call DeclareCompileJavaRecipe,$m)))
193
194 ALL_TARGETS += $(JAVA_TARGETS)
195
196 ################################################################################
197 # Targets for running rmic.
198 $(eval $(call DeclareRecipesForPhase, RMIC, \
199 TARGET_SUFFIX := rmic, \
200 FILE_PREFIX := Rmic, \
201 MAKE_SUBDIR := rmic, \
202 CHECK_MODULES := $(ALL_MODULES)))
203
204 ALL_TARGETS += $(RMIC_TARGETS)
205
206 ################################################################################
207 # Targets for compiling native libraries
208 $(eval $(call DeclareRecipesForPhase, LIBS, \
209 TARGET_SUFFIX := libs, \
210 FILE_PREFIX := Lib, \
211 MAKE_SUBDIR := lib, \
212 CHECK_MODULES := $(ALL_MODULES), \
213 USE_WRAPPER := true))
214
215 ALL_TARGETS += $(LIBS_TARGETS)
216
217 ################################################################################
218 # Targets for compiling static versions of certain native libraries. These do
219 # not end up in the jmods or the normal JDK image, but are instead bundled into
220 # a special deliverable.
221 $(eval $(call DeclareRecipesForPhase, STATIC_LIBS, \
222 TARGET_SUFFIX := static-libs, \
223 FILE_PREFIX := Lib, \
224 MAKE_SUBDIR := lib, \
225 CHECK_MODULES := $(STATIC_LIBS_MODULES), \
226 USE_WRAPPER := true, \
671 .NOTPARALLEL:
672 else
673 $(LANGTOOLS_GENSRC_TARGETS): buildtools-langtools
674
675 interim-langtools: $(INTERIM_LANGTOOLS_GENSRC_TARGETS)
676
677 buildtools-jdk: interim-langtools interim-tzdb
678
679 buildtools-hotspot: interim-langtools
680
681 buildtools-modules: exploded-image-base
682
683 $(HOTSPOT_GENSRC_TARGETS): interim-langtools buildtools-hotspot
684
685 $(JDK_GENSRC_TARGETS): interim-langtools buildtools-jdk
686
687 $(GENSRC_MODULEINFO_TARGETS): buildtools-jdk
688
689 $(GENDATA_TARGETS): interim-langtools buildtools-jdk
690
691 interim-rmic: interim-langtools
692
693 $(RMIC_TARGETS): interim-langtools interim-rmic
694
695 $(JAVA_TARGETS): interim-langtools
696
697 # Declare dependencies between hotspot-<variant>* targets
698 $(foreach v, $(JVM_VARIANTS), \
699 $(eval hotspot-$v-gensrc: java.base-copy) \
700 $(eval hotspot-$v-libs: hotspot-$v-gensrc java.base-copy) \
701 )
702
703 hotspot-ide-project: hotspot exploded-image
704
705 generate-exported-symbols: java.base-libs jdk.jdwp.agent-libs
706
707 # If not already set, set the JVM variant target so that the JVM will be built.
708 JVM_MAIN_LIB_TARGETS ?= hotspot-$(JVM_VARIANT_MAIN)-libs
709
710 # Building one JVM variant is enough to start building the other libs
711 $(LIBS_TARGETS): $(JVM_MAIN_LIB_TARGETS)
712
713 $(LAUNCHER_TARGETS): java.base-libs
714
715 ifeq ($(STATIC_BUILD), true)
716 $(LAUNCHER_TARGETS): generate-exported-symbols
717 endif
718
719 # The demos are currently linking to libjvm and libjava, just like all other
720 # jdk libs, even though they don't need to. To avoid warnings, make sure they
721 # aren't built until after libjava and libjvm are available to link to.
722 demos-jdk: java.base-libs exploded-image
723 test-image-demos-jdk: demos-jdk
724
725 # Declare dependency from <module>-java to <module>-gensrc
726 $(foreach m, $(GENSRC_MODULES), $(eval $m-java: $m-gensrc))
727
728 # Declare dependencies between java modules
729 $(foreach m, $(JAVA_MODULES), \
730 $(eval $m-java: $(addsuffix -java, $(filter $(JAVA_MODULES), \
731 $(call FindDepsForModule,$m)))))
732 # Declare dependencies between the module meta targets
733 $(foreach m, $(ALL_MODULES), $(eval $m: $(call FindDepsForModule,$m)))
734
735 # Declare dependencies between <module>-rmic to <module>-java
736 $(foreach m, $(RMIC_MODULES), $(eval $m-rmic: $m-java))
737
738 # Declare dependencies from <module>-lib to <module>-java
739 # Skip modules that do not have java source.
740 $(foreach m, $(filter $(JAVA_MODULES), $(LIBS_MODULES)), $(eval $m-libs: $m-java))
741
742 # Declare dependencies from all other <module>-lib to java.base-lib
743 $(foreach t, $(filter-out java.base-libs, $(LIBS_TARGETS)), \
744 $(eval $t: java.base-libs))
745
746 # jdk.accessibility depends on java.desktop
747 jdk.accessibility-libs: java.desktop-libs
748
749 # This dependency needs to be explicitly declared. jdk.jdi-gensrc generates a
750 # header file used by jdk.jdwp.agent-libs. The jdk.jdwp.agent-gensrc is a
751 # virtual target.
752 jdk.jdwp.agent-libs: jdk.jdwp.agent-gensrc
753
754 # The swing beans need to have java base properly generated to avoid errors
755 # in javadoc. The X11 wrappers need the java.base include files to have been
756 # copied and processed.
757 java.desktop-gensrc-src: java.base-gensrc java.base-copy
758
759 # The annotation processing for jdk.internal.vm.compiler
760 # and jdk.internal.vm.compiler.management needs classes from the current JDK.
761 jdk.internal.vm.compiler-gensrc-src: $(addsuffix -java, \
762 $(call FindTransitiveDepsForModule, jdk.internal.vm.compiler))
763 jdk.internal.vm.compiler.management-gensrc-src: $(addsuffix -java, \
764 $(call FindTransitiveDepsForModule, jdk.internal.vm.compiler.management))
765
766 # For these modules, the gensrc step is generating a module-info.java.extra
767 # file to be processed by the gensrc-moduleinfo target.
768 jdk.internal.vm.compiler-gensrc-moduleinfo: jdk.internal.vm.compiler-gensrc-src
769 jdk.internal.vm.compiler.management-gensrc-moduleinfo: jdk.internal.vm.compiler.management-gensrc-src
770
771 jdk.jdeps-gendata: java rmic
772
773 # The ct.sym generation uses all the moduleinfos as input
774 jdk.compiler-gendata: $(GENSRC_MODULEINFO_TARGETS)
775
776 # Declare dependencies between jmod targets.
777 # java.base jmod needs jrt-fs.jar and access to the other jmods to be built.
778 # When creating the BUILDJDK, we don't need to add hashes to java.base, thus
779 # we don't need to depend on all other jmods
780 ifneq ($(CREATING_BUILDJDK), true)
781 java.base-jmod: jrtfs-jar $(filter-out java.base-jmod, $(JMOD_TARGETS))
782 endif
783
784 # If not already set, set the JVM target so that the JVM will be built.
785 JVM_MAIN_TARGETS ?= hotspot
786
787 # Building java.base-jmod requires all of VM (ie hotspot) to be built.
788 java.base-jmod: $(JVM_MAIN_TARGETS)
789
790 # Declare dependencies from <module>-jmod to all other module targets
791 $(foreach m, $(JAVA_MODULES), $(eval $m_JMOD_DEPS += $m-java))
792 $(foreach m, $(GENDATA_MODULES), $(eval $m_JMOD_DEPS += $m-gendata))
793 $(foreach m, $(RMIC_MODULES), $(eval $m_JMOD_DEPS += $m-rmic))
794 $(foreach m, $(LIBS_MODULES), $(eval $m_JMOD_DEPS += $m-libs))
795 $(foreach m, $(LAUNCHER_MODULES), $(eval $m_JMOD_DEPS += $m-launchers))
796 $(foreach m, $(COPY_MODULES), $(eval $m_JMOD_DEPS += $m-copy))
797 $(foreach m, $(ALL_MODULES), $(eval $m-jmod: $($(m)_JMOD_DEPS)))
798 $(foreach m, $(INTERIM_IMAGE_MODULES), $(eval $m-interim-jmod: $($(m)_JMOD_DEPS)))
799
800 # Setup the minimal set of generated native source dependencies for hotspot
801 $(foreach v, $(JVM_VARIANTS), \
802 $(eval hotspot-$v-libs-compile-commands: hotspot-$v-gensrc) \
803 $(foreach m, $(filter java.desktop jdk.hotspot.agent, $(GENSRC_MODULES)), \
804 $(eval hotspot-$v-libs-compile-commands: $m-gensrc)) \
805 )
806
807 # For the full JDK compile commands, create all possible generated sources
808 $(foreach m, $(GENSRC_MODULES), $(eval $m-libs-compile-commands: $m-gensrc))
809 $(foreach m, $(filter $(JAVA_MODULES), $(LIBS_MODULES)), $(eval $m-libs-compile-commands: $m-java))
810
811 $(COMPILE_COMMANDS_TARGETS_HOTSPOT): clean-compile-commands
812 $(COMPILE_COMMANDS_TARGETS_JDK): clean-compile-commands
813 compile-commands-hotspot: $(COMPILE_COMMANDS_TARGETS_HOTSPOT)
839 # * all java modules
840 # * jdk.jlink-launchers
841 # * copy jvm.cfg (done in java.base-copy)
842 # * tzdb.dat (done in java.base-gendata)
843 # Without all of these jimage, jlink and jmod won't start.
844 $(JMOD_TARGETS) $(INTERIM_JMOD_TARGETS): java.base-libs java.base-copy \
845 java.base-gendata jdk.jlink-launchers java
846 endif
847 else
848 # The normal non cross compilation case uses needs to wait for the full
849 # exploded-image to avoid a race with the optimize target.
850 $(JMOD_TARGETS) $(INTERIM_JMOD_TARGETS): exploded-image
851 endif
852
853 # All modules include the main license files from java.base.
854 $(JMOD_TARGETS): java.base-copy
855
856 zip-security: java.base-java java.security.jgss-java java.security.jgss-libs \
857 $(filter jdk.crypto%, $(JAVA_TARGETS))
858
859 zip-source: gensrc rmic
860
861 jrtfs-jar: interim-langtools
862
863 build-microbenchmark: interim-langtools exploded-image
864
865 ifeq ($(ENABLE_GENERATE_CLASSLIST), true)
866 ifeq ($(CREATE_BUILDJDK), true)
867 # If creating a buildjdk, the interim image needs to be based on that.
868 generate-link-opt-data: create-buildjdk
869 else ifeq ($(EXTERNAL_BUILDJDK), false)
870 # If an external buildjdk has been provided, we skip generating an
871 # interim-image and just use the external buildjdk for generating
872 # classlist.
873 generate-link-opt-data: interim-image
874 endif
875 generate-link-opt-data: buildtools-jdk
876
877 # The generated classlist needs to go into java.base-jmod.
878 java.base-jmod jdk.jlink-jmod jdk-image legacy-jre-image: generate-link-opt-data
879 endif
886
887 static-libs-image: $(STATIC_LIBS_TARGETS)
888
889 graal-builder-image: jdk-image static-libs-image
890
891 mac-jdk-bundle: jdk-image
892 mac-legacy-jre-bundle: legacy-jre-image
893
894 ifeq ($(JCOV_INPUT_JDK), )
895 jcov-image: jdk-image
896 endif
897
898 # The optimize target can run as soon as the modules dir has been completely
899 # populated (java, copy and gendata targets) and the basic libs and launchers
900 # have been built.
901 exploded-image-optimize: java copy gendata java.base-libs java.base-launchers \
902 buildtools-modules
903
904 bootcycle-images: jdk-image
905
906 docs-jdk-api-javadoc: $(GENSRC_TARGETS) rmic
907
908 docs-javase-api-javadoc: $(GENSRC_TARGETS) rmic
909
910 docs-reference-api-javadoc: $(GENSRC_TARGETS) rmic
911
912 docs-jdk-api-modulegraph: exploded-image buildtools-modules
913
914 docs-javase-api-modulegraph: exploded-image buildtools-modules
915
916 docs-reference-api-modulegraph: exploded-image buildtools-modules
917
918 # If not already set, then set the JVM specific docs targets
919 JVM_DOCS_TARGETS ?= hotspot-$(JVM_VARIANT_MAIN)-gensrc
920
921 # The gensrc steps for hotspot and jdk.jdi create html spec files.
922 docs-jdk-specs: buildtools-jdk $(JVM_DOCS_TARGETS) jdk.jdi-gensrc \
923 docs-jdk-index
924
925 docs-zip: docs-jdk
926
927 docs-specs-zip: docs-jdk-specs
928
929 # Tests
930 test: jdk-image test-image
972
973 test-bundles: test-image
974
975 docs-bundles: docs-image
976
977 jcov-bundles: jcov-image
978
979 static-libs-bundles: static-libs-image
980
981 generate-summary: jmods buildtools-modules
982
983 update-x11wrappers: java.base-copy buildtools-jdk
984
985 endif
986
987 ################################################################################
988 # Virtual targets without recipes
989
990 # If not already set, set the JVM specific tools targets
991 JVM_TOOLS_TARGETS ?= buildtools-hotspot
992 buildtools: buildtools-langtools interim-langtools interim-rmic \
993 buildtools-jdk $(JVM_TOOLS_TARGETS)
994
995 # Declare dependencies from hotspot-<variant> targets
996 $(foreach v, $(JVM_VARIANTS), \
997 $(eval hotspot-$v: hotspot-$v-gensrc hotspot-$v-libs) \
998 )
999 hotspot: $(HOTSPOT_VARIANT_TARGETS)
1000
1001 # Create targets hotspot-libs and hotspot-gensrc.
1002 $(foreach v, $(JVM_VARIANTS), \
1003 $(eval hotspot-libs: hotspot-$v-libs) \
1004 $(eval hotspot-gensrc: hotspot-$v-gensrc) \
1005 )
1006
1007 gensrc: $(GENSRC_TARGETS)
1008
1009 gendata: $(GENDATA_TARGETS)
1010
1011 copy: $(ALL_COPY_TARGETS)
1012
1013 java: $(JAVA_TARGETS)
1014
1015 rmic: $(RMIC_TARGETS)
1016
1017 libs: $(LIBS_TARGETS)
1018
1019 static-libs: $(STATIC_LIBS_TARGETS)
1020
1021 launchers: $(LAUNCHER_TARGETS)
1022
1023 jmods: $(JMOD_TARGETS)
1024
1025 # Explicitly declare dependency for virtual target jdk.jdwp.agent-gensrc which
1026 # is actually handled by jdk.jdi-gensrc
1027 jdk.jdwp.agent-gensrc: jdk.jdi-gensrc
1028
1029 # Declare dependencies from <module> to all the individual targets specific
1030 # to that module <module>-*, that are needed for the exploded image.
1031 $(foreach m, $(GENSRC_MODULES), $(eval $m: $m-gensrc))
1032 $(foreach m, $(JAVA_MODULES), $(eval $m: $m-java))
1033 $(foreach m, $(GENDATA_MODULES), $(eval $m: $m-gendata))
1034 $(foreach m, $(RMIC_MODULES), $(eval $m: $m-rmic))
1035 $(foreach m, $(LIBS_MODULES), $(eval $m: $m-libs))
1036 $(foreach m, $(LAUNCHER_MODULES), $(eval $m: $m-launchers))
1037 $(foreach m, $(ALL_COPY_MODULES), $(eval $m: $m-copy))
1038
1039 # Building java.base includes building all of hotspot.
1040 java.base: $(JVM_MAIN_TARGETS)
1041
1042 demos: demos-jdk
1043
1044 # The "exploded image" is a locally runnable JDK in $(OUTPUTDIR)/jdk.
1045 exploded-image-base: $(ALL_MODULES)
1046 exploded-image: exploded-image-base release-file
1047 # When cross compiling, no need to optimize the exploded image since it won't
1048 # be runnable on the host platform anyway.
1049 ifneq ($(COMPILE_TYPE), cross)
1050 exploded-image: exploded-image-optimize
1051 endif
1052
1053 create-buildjdk: create-buildjdk-interim-image
1054
1114 endif
1115
1116 # This target builds the test image
1117 test-image: prepare-test-image \
1118 test-image-jdk-jtreg-native test-image-failure-handler \
1119 test-image-demos-jdk $(JVM_TEST_IMAGE_TARGETS)
1120
1121 ifneq ($(JMH_CORE_JAR), )
1122 test-image: build-microbenchmark
1123 endif
1124
1125 ################################################################################
1126
1127 # all-images builds all our deliverables as images.
1128 all-images: product-images test-image docs-image
1129
1130 # all-bundles packages all our deliverables as tar.gz bundles.
1131 all-bundles: product-bundles test-bundles docs-bundles static-libs-bundles
1132
1133 ALL_TARGETS += buildtools hotspot hotspot-libs hotspot-gensrc gensrc gendata \
1134 copy java rmic libs static-libs launchers jmods \
1135 jdk.jdwp.agent-gensrc $(ALL_MODULES) demos \
1136 exploded-image-base exploded-image \
1137 create-buildjdk docs-jdk-api docs-javase-api docs-reference-api docs-jdk \
1138 docs-javase docs-reference docs-javadoc mac-bundles product-images legacy-images \
1139 docs-image test-image all-images \
1140 all-bundles
1141
1142 ################################################################################
1143
1144 # Traditional targets typically run by users.
1145 # These can be considered aliases for the targets now named by a more
1146 # "modern" naming scheme.
1147 default: $(DEFAULT_MAKE_TARGET)
1148 jdk: exploded-image
1149 images: product-images
1150 docs: docs-image
1151 bundles: all-bundles
1152 all: all-images
1153
1154 ALL_TARGETS += default jdk images docs bundles all
|
55
56 # All modules for the current target platform.
57 ALL_MODULES := $(call FindAllModules)
58
59 ################################################################################
60 ################################################################################
61 #
62 # Recipes for all targets. Only recipes, dependencies are declared later.
63 #
64 ################################################################################
65
66 ################################################################################
67 # Interim/build tools targets, compiling tools used during the build
68
69 buildtools-langtools:
70 +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f ToolsLangtools.gmk)
71
72 interim-langtools:
73 +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileInterimLangtools.gmk)
74
75 interim-tzdb:
76 +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CopyInterimTZDB.gmk)
77
78
79 buildtools-jdk:
80 +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileToolsJdk.gmk)
81
82 buildtools-modules:
83 +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileModuleTools.gmk)
84
85 buildtools-hotspot:
86 +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileToolsHotspot.gmk)
87
88 ALL_TARGETS += buildtools-langtools interim-langtools \
89 interim-tzdb buildtools-jdk buildtools-modules \
90 buildtools-hotspot
91
92 ################################################################################
93 # Special targets for certain modules
94
95 generate-exported-symbols:
96 +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f BuildStatic.gmk)
97
98 ALL_TARGETS += generate-exported-symbols
99
100 ################################################################################
101 # Gensrc targets, generating source before java compilation can be done
102 #
103 $(eval $(call DeclareRecipesForPhase, GENSRC, \
104 TARGET_SUFFIX := gensrc-src, \
105 FILE_PREFIX := Gensrc, \
106 MAKE_SUBDIR := gensrc, \
107 CHECK_MODULES := $(ALL_MODULES), \
108 ))
109
174 $(foreach m, $(IMPORT_COPY_MODULES), $(eval $(call DeclareImportCopyRecipe,$m)))
175
176 ALL_TARGETS += $(ALL_COPY_TARGETS)
177
178 ################################################################################
179 # Targets for compiling all java modules.
180 JAVA_MODULES := $(ALL_MODULES)
181 JAVA_TARGETS := $(addsuffix -java, $(JAVA_MODULES))
182
183 define DeclareCompileJavaRecipe
184 $1-java:
185 +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) \
186 -f CompileJavaModules.gmk MODULE=$1)
187 endef
188
189 $(foreach m, $(JAVA_MODULES), $(eval $(call DeclareCompileJavaRecipe,$m)))
190
191 ALL_TARGETS += $(JAVA_TARGETS)
192
193 ################################################################################
194 # Targets for compiling native libraries
195 $(eval $(call DeclareRecipesForPhase, LIBS, \
196 TARGET_SUFFIX := libs, \
197 FILE_PREFIX := Lib, \
198 MAKE_SUBDIR := lib, \
199 CHECK_MODULES := $(ALL_MODULES), \
200 USE_WRAPPER := true))
201
202 ALL_TARGETS += $(LIBS_TARGETS)
203
204 ################################################################################
205 # Targets for compiling static versions of certain native libraries. These do
206 # not end up in the jmods or the normal JDK image, but are instead bundled into
207 # a special deliverable.
208 $(eval $(call DeclareRecipesForPhase, STATIC_LIBS, \
209 TARGET_SUFFIX := static-libs, \
210 FILE_PREFIX := Lib, \
211 MAKE_SUBDIR := lib, \
212 CHECK_MODULES := $(STATIC_LIBS_MODULES), \
213 USE_WRAPPER := true, \
658 .NOTPARALLEL:
659 else
660 $(LANGTOOLS_GENSRC_TARGETS): buildtools-langtools
661
662 interim-langtools: $(INTERIM_LANGTOOLS_GENSRC_TARGETS)
663
664 buildtools-jdk: interim-langtools interim-tzdb
665
666 buildtools-hotspot: interim-langtools
667
668 buildtools-modules: exploded-image-base
669
670 $(HOTSPOT_GENSRC_TARGETS): interim-langtools buildtools-hotspot
671
672 $(JDK_GENSRC_TARGETS): interim-langtools buildtools-jdk
673
674 $(GENSRC_MODULEINFO_TARGETS): buildtools-jdk
675
676 $(GENDATA_TARGETS): interim-langtools buildtools-jdk
677
678 $(JAVA_TARGETS): interim-langtools
679
680 # Declare dependencies between hotspot-<variant>* targets
681 $(foreach v, $(JVM_VARIANTS), \
682 $(eval hotspot-$v-gensrc: java.base-copy) \
683 $(eval hotspot-$v-libs: hotspot-$v-gensrc java.base-copy) \
684 )
685
686 hotspot-ide-project: hotspot exploded-image
687
688 generate-exported-symbols: java.base-libs jdk.jdwp.agent-libs
689
690 # If not already set, set the JVM variant target so that the JVM will be built.
691 JVM_MAIN_LIB_TARGETS ?= hotspot-$(JVM_VARIANT_MAIN)-libs
692
693 # Building one JVM variant is enough to start building the other libs
694 $(LIBS_TARGETS): $(JVM_MAIN_LIB_TARGETS)
695
696 $(LAUNCHER_TARGETS): java.base-libs
697
698 ifeq ($(STATIC_BUILD), true)
699 $(LAUNCHER_TARGETS): generate-exported-symbols
700 endif
701
702 # The demos are currently linking to libjvm and libjava, just like all other
703 # jdk libs, even though they don't need to. To avoid warnings, make sure they
704 # aren't built until after libjava and libjvm are available to link to.
705 demos-jdk: java.base-libs exploded-image
706 test-image-demos-jdk: demos-jdk
707
708 # Declare dependency from <module>-java to <module>-gensrc
709 $(foreach m, $(GENSRC_MODULES), $(eval $m-java: $m-gensrc))
710
711 # Declare dependencies between java modules
712 $(foreach m, $(JAVA_MODULES), \
713 $(eval $m-java: $(addsuffix -java, $(filter $(JAVA_MODULES), \
714 $(call FindDepsForModule,$m)))))
715 # Declare dependencies between the module meta targets
716 $(foreach m, $(ALL_MODULES), $(eval $m: $(call FindDepsForModule,$m)))
717
718 # Declare dependencies from <module>-lib to <module>-java
719 # Skip modules that do not have java source.
720 $(foreach m, $(filter $(JAVA_MODULES), $(LIBS_MODULES)), $(eval $m-libs: $m-java))
721
722 # Declare dependencies from all other <module>-lib to java.base-lib
723 $(foreach t, $(filter-out java.base-libs, $(LIBS_TARGETS)), \
724 $(eval $t: java.base-libs))
725
726 # jdk.accessibility depends on java.desktop
727 jdk.accessibility-libs: java.desktop-libs
728
729 # This dependency needs to be explicitly declared. jdk.jdi-gensrc generates a
730 # header file used by jdk.jdwp.agent-libs. The jdk.jdwp.agent-gensrc is a
731 # virtual target.
732 jdk.jdwp.agent-libs: jdk.jdwp.agent-gensrc
733
734 # The swing beans need to have java base properly generated to avoid errors
735 # in javadoc. The X11 wrappers need the java.base include files to have been
736 # copied and processed.
737 java.desktop-gensrc-src: java.base-gensrc java.base-copy
738
739 # The annotation processing for jdk.internal.vm.compiler
740 # and jdk.internal.vm.compiler.management needs classes from the current JDK.
741 jdk.internal.vm.compiler-gensrc-src: $(addsuffix -java, \
742 $(call FindTransitiveDepsForModule, jdk.internal.vm.compiler))
743 jdk.internal.vm.compiler.management-gensrc-src: $(addsuffix -java, \
744 $(call FindTransitiveDepsForModule, jdk.internal.vm.compiler.management))
745
746 # For these modules, the gensrc step is generating a module-info.java.extra
747 # file to be processed by the gensrc-moduleinfo target.
748 jdk.internal.vm.compiler-gensrc-moduleinfo: jdk.internal.vm.compiler-gensrc-src
749 jdk.internal.vm.compiler.management-gensrc-moduleinfo: jdk.internal.vm.compiler.management-gensrc-src
750
751 jdk.jdeps-gendata: java
752
753 # The ct.sym generation uses all the moduleinfos as input
754 jdk.compiler-gendata: $(GENSRC_MODULEINFO_TARGETS)
755
756 # Declare dependencies between jmod targets.
757 # java.base jmod needs jrt-fs.jar and access to the other jmods to be built.
758 # When creating the BUILDJDK, we don't need to add hashes to java.base, thus
759 # we don't need to depend on all other jmods
760 ifneq ($(CREATING_BUILDJDK), true)
761 java.base-jmod: jrtfs-jar $(filter-out java.base-jmod, $(JMOD_TARGETS))
762 endif
763
764 # If not already set, set the JVM target so that the JVM will be built.
765 JVM_MAIN_TARGETS ?= hotspot
766
767 # Building java.base-jmod requires all of VM (ie hotspot) to be built.
768 java.base-jmod: $(JVM_MAIN_TARGETS)
769
770 # Declare dependencies from <module>-jmod to all other module targets
771 $(foreach m, $(JAVA_MODULES), $(eval $m_JMOD_DEPS += $m-java))
772 $(foreach m, $(GENDATA_MODULES), $(eval $m_JMOD_DEPS += $m-gendata))
773 $(foreach m, $(LIBS_MODULES), $(eval $m_JMOD_DEPS += $m-libs))
774 $(foreach m, $(LAUNCHER_MODULES), $(eval $m_JMOD_DEPS += $m-launchers))
775 $(foreach m, $(COPY_MODULES), $(eval $m_JMOD_DEPS += $m-copy))
776 $(foreach m, $(ALL_MODULES), $(eval $m-jmod: $($(m)_JMOD_DEPS)))
777 $(foreach m, $(INTERIM_IMAGE_MODULES), $(eval $m-interim-jmod: $($(m)_JMOD_DEPS)))
778
779 # Setup the minimal set of generated native source dependencies for hotspot
780 $(foreach v, $(JVM_VARIANTS), \
781 $(eval hotspot-$v-libs-compile-commands: hotspot-$v-gensrc) \
782 $(foreach m, $(filter java.desktop jdk.hotspot.agent, $(GENSRC_MODULES)), \
783 $(eval hotspot-$v-libs-compile-commands: $m-gensrc)) \
784 )
785
786 # For the full JDK compile commands, create all possible generated sources
787 $(foreach m, $(GENSRC_MODULES), $(eval $m-libs-compile-commands: $m-gensrc))
788 $(foreach m, $(filter $(JAVA_MODULES), $(LIBS_MODULES)), $(eval $m-libs-compile-commands: $m-java))
789
790 $(COMPILE_COMMANDS_TARGETS_HOTSPOT): clean-compile-commands
791 $(COMPILE_COMMANDS_TARGETS_JDK): clean-compile-commands
792 compile-commands-hotspot: $(COMPILE_COMMANDS_TARGETS_HOTSPOT)
818 # * all java modules
819 # * jdk.jlink-launchers
820 # * copy jvm.cfg (done in java.base-copy)
821 # * tzdb.dat (done in java.base-gendata)
822 # Without all of these jimage, jlink and jmod won't start.
823 $(JMOD_TARGETS) $(INTERIM_JMOD_TARGETS): java.base-libs java.base-copy \
824 java.base-gendata jdk.jlink-launchers java
825 endif
826 else
827 # The normal non cross compilation case uses needs to wait for the full
828 # exploded-image to avoid a race with the optimize target.
829 $(JMOD_TARGETS) $(INTERIM_JMOD_TARGETS): exploded-image
830 endif
831
832 # All modules include the main license files from java.base.
833 $(JMOD_TARGETS): java.base-copy
834
835 zip-security: java.base-java java.security.jgss-java java.security.jgss-libs \
836 $(filter jdk.crypto%, $(JAVA_TARGETS))
837
838 zip-source: gensrc
839
840 jrtfs-jar: interim-langtools
841
842 build-microbenchmark: interim-langtools exploded-image
843
844 ifeq ($(ENABLE_GENERATE_CLASSLIST), true)
845 ifeq ($(CREATE_BUILDJDK), true)
846 # If creating a buildjdk, the interim image needs to be based on that.
847 generate-link-opt-data: create-buildjdk
848 else ifeq ($(EXTERNAL_BUILDJDK), false)
849 # If an external buildjdk has been provided, we skip generating an
850 # interim-image and just use the external buildjdk for generating
851 # classlist.
852 generate-link-opt-data: interim-image
853 endif
854 generate-link-opt-data: buildtools-jdk
855
856 # The generated classlist needs to go into java.base-jmod.
857 java.base-jmod jdk.jlink-jmod jdk-image legacy-jre-image: generate-link-opt-data
858 endif
865
866 static-libs-image: $(STATIC_LIBS_TARGETS)
867
868 graal-builder-image: jdk-image static-libs-image
869
870 mac-jdk-bundle: jdk-image
871 mac-legacy-jre-bundle: legacy-jre-image
872
873 ifeq ($(JCOV_INPUT_JDK), )
874 jcov-image: jdk-image
875 endif
876
877 # The optimize target can run as soon as the modules dir has been completely
878 # populated (java, copy and gendata targets) and the basic libs and launchers
879 # have been built.
880 exploded-image-optimize: java copy gendata java.base-libs java.base-launchers \
881 buildtools-modules
882
883 bootcycle-images: jdk-image
884
885 docs-jdk-api-javadoc: $(GENSRC_TARGETS)
886
887 docs-javase-api-javadoc: $(GENSRC_TARGETS)
888
889 docs-reference-api-javadoc: $(GENSRC_TARGETS)
890
891 docs-jdk-api-modulegraph: exploded-image buildtools-modules
892
893 docs-javase-api-modulegraph: exploded-image buildtools-modules
894
895 docs-reference-api-modulegraph: exploded-image buildtools-modules
896
897 # If not already set, then set the JVM specific docs targets
898 JVM_DOCS_TARGETS ?= hotspot-$(JVM_VARIANT_MAIN)-gensrc
899
900 # The gensrc steps for hotspot and jdk.jdi create html spec files.
901 docs-jdk-specs: buildtools-jdk $(JVM_DOCS_TARGETS) jdk.jdi-gensrc \
902 docs-jdk-index
903
904 docs-zip: docs-jdk
905
906 docs-specs-zip: docs-jdk-specs
907
908 # Tests
909 test: jdk-image test-image
951
952 test-bundles: test-image
953
954 docs-bundles: docs-image
955
956 jcov-bundles: jcov-image
957
958 static-libs-bundles: static-libs-image
959
960 generate-summary: jmods buildtools-modules
961
962 update-x11wrappers: java.base-copy buildtools-jdk
963
964 endif
965
966 ################################################################################
967 # Virtual targets without recipes
968
969 # If not already set, set the JVM specific tools targets
970 JVM_TOOLS_TARGETS ?= buildtools-hotspot
971 buildtools: buildtools-langtools interim-langtools \
972 buildtools-jdk $(JVM_TOOLS_TARGETS)
973
974 # Declare dependencies from hotspot-<variant> targets
975 $(foreach v, $(JVM_VARIANTS), \
976 $(eval hotspot-$v: hotspot-$v-gensrc hotspot-$v-libs) \
977 )
978 hotspot: $(HOTSPOT_VARIANT_TARGETS)
979
980 # Create targets hotspot-libs and hotspot-gensrc.
981 $(foreach v, $(JVM_VARIANTS), \
982 $(eval hotspot-libs: hotspot-$v-libs) \
983 $(eval hotspot-gensrc: hotspot-$v-gensrc) \
984 )
985
986 gensrc: $(GENSRC_TARGETS)
987
988 gendata: $(GENDATA_TARGETS)
989
990 copy: $(ALL_COPY_TARGETS)
991
992 java: $(JAVA_TARGETS)
993
994 libs: $(LIBS_TARGETS)
995
996 static-libs: $(STATIC_LIBS_TARGETS)
997
998 launchers: $(LAUNCHER_TARGETS)
999
1000 jmods: $(JMOD_TARGETS)
1001
1002 # Explicitly declare dependency for virtual target jdk.jdwp.agent-gensrc which
1003 # is actually handled by jdk.jdi-gensrc
1004 jdk.jdwp.agent-gensrc: jdk.jdi-gensrc
1005
1006 # Declare dependencies from <module> to all the individual targets specific
1007 # to that module <module>-*, that are needed for the exploded image.
1008 $(foreach m, $(GENSRC_MODULES), $(eval $m: $m-gensrc))
1009 $(foreach m, $(JAVA_MODULES), $(eval $m: $m-java))
1010 $(foreach m, $(GENDATA_MODULES), $(eval $m: $m-gendata))
1011 $(foreach m, $(LIBS_MODULES), $(eval $m: $m-libs))
1012 $(foreach m, $(LAUNCHER_MODULES), $(eval $m: $m-launchers))
1013 $(foreach m, $(ALL_COPY_MODULES), $(eval $m: $m-copy))
1014
1015 # Building java.base includes building all of hotspot.
1016 java.base: $(JVM_MAIN_TARGETS)
1017
1018 demos: demos-jdk
1019
1020 # The "exploded image" is a locally runnable JDK in $(OUTPUTDIR)/jdk.
1021 exploded-image-base: $(ALL_MODULES)
1022 exploded-image: exploded-image-base release-file
1023 # When cross compiling, no need to optimize the exploded image since it won't
1024 # be runnable on the host platform anyway.
1025 ifneq ($(COMPILE_TYPE), cross)
1026 exploded-image: exploded-image-optimize
1027 endif
1028
1029 create-buildjdk: create-buildjdk-interim-image
1030
1090 endif
1091
1092 # This target builds the test image
1093 test-image: prepare-test-image \
1094 test-image-jdk-jtreg-native test-image-failure-handler \
1095 test-image-demos-jdk $(JVM_TEST_IMAGE_TARGETS)
1096
1097 ifneq ($(JMH_CORE_JAR), )
1098 test-image: build-microbenchmark
1099 endif
1100
1101 ################################################################################
1102
1103 # all-images builds all our deliverables as images.
1104 all-images: product-images test-image docs-image
1105
1106 # all-bundles packages all our deliverables as tar.gz bundles.
1107 all-bundles: product-bundles test-bundles docs-bundles static-libs-bundles
1108
1109 ALL_TARGETS += buildtools hotspot hotspot-libs hotspot-gensrc gensrc gendata \
1110 copy java libs static-libs launchers jmods \
1111 jdk.jdwp.agent-gensrc $(ALL_MODULES) demos \
1112 exploded-image-base exploded-image \
1113 create-buildjdk docs-jdk-api docs-javase-api docs-reference-api docs-jdk \
1114 docs-javase docs-reference docs-javadoc mac-bundles product-images legacy-images \
1115 docs-image test-image all-images \
1116 all-bundles
1117
1118 ################################################################################
1119
1120 # Traditional targets typically run by users.
1121 # These can be considered aliases for the targets now named by a more
1122 # "modern" naming scheme.
1123 default: $(DEFAULT_MAKE_TARGET)
1124 jdk: exploded-image
1125 images: product-images
1126 docs: docs-image
1127 bundles: all-bundles
1128 all: all-images
1129
1130 ALL_TARGETS += default jdk images docs bundles all
|