CreateJmods.gmk revision 2264:278f9a9e9329
1195801Smav 2195801Smav# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. 3195801Smav# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4195801Smav# 5195801Smav# This code is free software; you can redistribute it and/or modify it 6195801Smav# under the terms of the GNU General Public License version 2 only, as 7195801Smav# published by the Free Software Foundation. Oracle designates this 8195801Smav# particular file as subject to the "Classpath" exception as provided 9195801Smav# by Oracle in the LICENSE file that accompanied this code. 10195801Smav# 11195801Smav# This code is distributed in the hope that it will be useful, but WITHOUT 12195801Smav# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13195801Smav# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14195801Smav# version 2 for more details (a copy is included in the LICENSE file that 15195801Smav# accompanied this code). 16195801Smav# 17195801Smav# You should have received a copy of the GNU General Public License version 18195801Smav# 2 along with this work; if not, write to the Free Software Foundation, 19195801Smav# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20195801Smav# 21195801Smav# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22195801Smav# or visit www.oracle.com if you need additional information or have any 23195801Smav# questions. 24195801Smav# 25195801Smav 26195801Smavdefault: all 27195801Smav 28195801Smavinclude $(SPEC) 29195801Smavinclude MakeBase.gmk 30195801Smavinclude Modules.gmk 31195801Smav 32195801Smavifeq ($(MODULE), ) 33195801Smav $(error MODULE must be set when calling CreateJmods.gmk) 34195801Smavendif 35195801Smav 36195801Smav################################################################################ 37195801Smav 38195801SmavJMODS_DIR := $(IMAGES_OUTPUTDIR)/jmods 39195801Smav 40195801SmavLIBS_DIR := $(firstword $(wildcard $(addsuffix /$(MODULE), \ 41195801Smav $(SUPPORT_OUTPUTDIR)/modules_libs $(IMPORT_MODULES_LIBS)))) 42195801SmavCMDS_DIR := $(firstword $(wildcard $(addsuffix /$(MODULE), \ 43195801Smav $(SUPPORT_OUTPUTDIR)/modules_cmds $(IMPORT_MODULES_CMDS)))) 44195801SmavCONF_DIR := $(firstword $(wildcard $(addsuffix /$(MODULE), \ 45195801Smav $(SUPPORT_OUTPUTDIR)/modules_conf $(IMPORT_MODULES_CONF)))) 46195801SmavCLASSES_DIR := $(wildcard $(JDK_OUTPUTDIR)/modules/$(MODULE)) 47217877Smav 48195801Smav$(eval $(call FillCacheFind, \ 49195801Smav $(LIBS_DIR) $(CMDS_DIR) $(CONF_DIR) $(CLASSES_DIR) \ 50195801Smav)) 51195801Smav 52195801Smavifneq ($(LIBS_DIR), ) 53195801Smav JMOD_FLAGS += --libs $(LIBS_DIR) 54195801Smav DEPS += $(call CacheFind, $(LIBS_DIR)) 55195801Smavendif 56195801Smavifneq ($(CMDS_DIR), ) 57195801Smav JMOD_FLAGS += --cmds $(CMDS_DIR) 58195801Smav DEPS += $(call CacheFind, $(CMDS_DIR)) 59195801Smavendif 60195801Smavifneq ($(CONF_DIR), ) 61195801Smav JMOD_FLAGS += --config $(CONF_DIR) 62195801Smav DEPS += $(call CacheFind, $(CONF_DIR)) 63208393Smavendif 64208393Smavifneq ($(CLASSES_DIR), ) 65195801Smav JMOD_FLAGS += --class-path $(CLASSES_DIR) 66195801Smav DEPS += $(call CacheFind, $(CLASSES_DIR)) 67195801Smavendif 68195801Smav 69217877Smav# Add dependencies on other jmod files. Only java.base needs access to other 70195801Smav# jmods. 71195801Smavifeq ($(MODULE), java.base) 72195801Smav ALL_UPGRADEABLE_MODULES = $(call FindAllUpgradeableModules) 73195801Smav # When creating a BUILDJDK, we don't need to add hashes to java.base 74195801Smav ifneq ($(CREATING_BUILDJDK), true) 75199821Smav DEPS += $(patsubst %, $(JMODS_DIR)/%.jmod, \ 76195801Smav $(filter-out java.base $(ALL_UPGRADEABLE_MODULES), $(call FindAllModules))) 77195801Smav 78195801Smav EXCLUDE_PATTERN := $(strip $(subst $(SPACE),|,$(strip $(ALL_UPGRADEABLE_MODULES)))) 79195801Smav 80195801Smav JMOD_FLAGS += --module-path $(JMODS_DIR) \ 81195801Smav --hash-modules '^(?!$(EXCLUDE_PATTERN))' 82195801Smav endif 83195801Smavendif 84195801Smav 85195801Smav# Changes to the jmod tool itself should also trigger a rebuild of all jmods. 86195801Smav# The variable JMOD_CMD could contain an environment variable assignment before 87220566Smav# the actual command. Filter that out using wildcard before adding to DEPS. 88195801SmavDEPS += $(wildcard $(JMOD_CMD)) 89220566Smavifeq ($(EXTERNAL_BUILDJDK), false) 90195801Smav DEPS += $(call CacheFind, $(JDK_OUTPUTDIR)/modules/jdk.jlink/jdk/tools/jmod) 91195801Smavendif 92195801Smav 93195801Smav# TODO: What about headers? 94227293Sed# Create jmods in a temp dir and then move them into place to keep the 95195801Smav# module path in $(IMAGES_OUTPUTDIR)/jmods valid at all times. 96199132Smav$(JMODS_DIR)/$(MODULE).jmod: $(DEPS) 97199132Smav $(call LogWarn, Creating $(patsubst $(OUTPUT_ROOT)/%, %, $@)) 98199132Smav $(call MakeDir, $(@D) $(SUPPORT_OUTPUTDIR)/jmods) 99199132Smav $(RM) $@ $(SUPPORT_OUTPUTDIR)/jmods/$(notdir $@) 100200217Smav $(JMOD) create \ 101200217Smav --module-version $(VERSION_SHORT) \ 102205358Smav --os-name $(REQUIRED_OS_NAME) \ 103199132Smav --os-arch $(OPENJDK_TARGET_CPU_LEGACY) \ 104200217Smav --os-version $(REQUIRED_OS_VERSION) \ 105200217Smav --module-path $(JMODS_DIR) \ 106205358Smav --exclude '**{_the.*,*.diz,*.debuginfo,*.dSYM/**,*.dSYM,*.pdb,*.map}' \ 107205358Smav $(JMOD_FLAGS) $(SUPPORT_OUTPUTDIR)/jmods/$(notdir $@) 108205358Smav $(MV) $(SUPPORT_OUTPUTDIR)/jmods/$(notdir $@) $@ 109205358Smav 110205358SmavTARGETS += $(IMAGES_OUTPUTDIR)/jmods/$(MODULE).jmod 111200217Smav 112199132Smav################################################################################ 113199132Smav 114220566Smavall: $(TARGETS) 115220566Smav 116220566Smav################################################################################ 117220566Smav