< prev index next >

make/Main.gmk

Print this page

  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
< prev index next >