CreateJmods.gmk revision 2264:278f9a9e9329
1189251Ssam 2189251Ssam# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. 3189251Ssam# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4189251Ssam# 5252726Srpaulo# This code is free software; you can redistribute it and/or modify it 6252726Srpaulo# under the terms of the GNU General Public License version 2 only, as 7189251Ssam# published by the Free Software Foundation. Oracle designates this 8189251Ssam# particular file as subject to the "Classpath" exception as provided 9189251Ssam# by Oracle in the LICENSE file that accompanied this code. 10189251Ssam# 11289549Srpaulo# This code is distributed in the hope that it will be useful, but WITHOUT 12189251Ssam# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13189251Ssam# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14189251Ssam# version 2 for more details (a copy is included in the LICENSE file that 15189251Ssam# accompanied this code). 16189251Ssam# 17189251Ssam# You should have received a copy of the GNU General Public License version 18189251Ssam# 2 along with this work; if not, write to the Free Software Foundation, 19189251Ssam# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20189251Ssam# 21189251Ssam# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22189251Ssam# or visit www.oracle.com if you need additional information or have any 23189251Ssam# questions. 24189251Ssam# 25189251Ssam 26189251Ssamdefault: all 27252726Srpaulo 28189251Ssaminclude $(SPEC) 29189251Ssaminclude MakeBase.gmk 30189251Ssaminclude Modules.gmk 31189251Ssam 32189251Ssamifeq ($(MODULE), ) 33189251Ssam $(error MODULE must be set when calling CreateJmods.gmk) 34189251Ssamendif 35189251Ssam 36189251Ssam################################################################################ 37189251Ssam 38189251SsamJMODS_DIR := $(IMAGES_OUTPUTDIR)/jmods 39189251Ssam 40281806SrpauloLIBS_DIR := $(firstword $(wildcard $(addsuffix /$(MODULE), \ 41281806Srpaulo $(SUPPORT_OUTPUTDIR)/modules_libs $(IMPORT_MODULES_LIBS)))) 42281806SrpauloCMDS_DIR := $(firstword $(wildcard $(addsuffix /$(MODULE), \ 43281806Srpaulo $(SUPPORT_OUTPUTDIR)/modules_cmds $(IMPORT_MODULES_CMDS)))) 44281806SrpauloCONF_DIR := $(firstword $(wildcard $(addsuffix /$(MODULE), \ 45281806Srpaulo $(SUPPORT_OUTPUTDIR)/modules_conf $(IMPORT_MODULES_CONF)))) 46281806SrpauloCLASSES_DIR := $(wildcard $(JDK_OUTPUTDIR)/modules/$(MODULE)) 47281806Srpaulo 48281806Srpaulo$(eval $(call FillCacheFind, \ 49281806Srpaulo $(LIBS_DIR) $(CMDS_DIR) $(CONF_DIR) $(CLASSES_DIR) \ 50281806Srpaulo)) 51281806Srpaulo 52281806Srpauloifneq ($(LIBS_DIR), ) 53281806Srpaulo JMOD_FLAGS += --libs $(LIBS_DIR) 54281806Srpaulo DEPS += $(call CacheFind, $(LIBS_DIR)) 55281806Srpauloendif 56281806Srpauloifneq ($(CMDS_DIR), ) 57281806Srpaulo JMOD_FLAGS += --cmds $(CMDS_DIR) 58281806Srpaulo DEPS += $(call CacheFind, $(CMDS_DIR)) 59189251Ssamendif 60214734Srpauloifneq ($(CONF_DIR), ) 61189251Ssam JMOD_FLAGS += --config $(CONF_DIR) 62189251Ssam DEPS += $(call CacheFind, $(CONF_DIR)) 63189251Ssamendif 64189251Ssamifneq ($(CLASSES_DIR), ) 65189251Ssam JMOD_FLAGS += --class-path $(CLASSES_DIR) 66189251Ssam DEPS += $(call CacheFind, $(CLASSES_DIR)) 67281806Srpauloendif 68281806Srpaulo 69189251Ssam# Add dependencies on other jmod files. Only java.base needs access to other 70189251Ssam# jmods. 71281806Srpauloifeq ($(MODULE), java.base) 72281806Srpaulo ALL_UPGRADEABLE_MODULES = $(call FindAllUpgradeableModules) 73281806Srpaulo # When creating a BUILDJDK, we don't need to add hashes to java.base 74281806Srpaulo ifneq ($(CREATING_BUILDJDK), true) 75281806Srpaulo DEPS += $(patsubst %, $(JMODS_DIR)/%.jmod, \ 76281806Srpaulo $(filter-out java.base $(ALL_UPGRADEABLE_MODULES), $(call FindAllModules))) 77281806Srpaulo 78281806Srpaulo EXCLUDE_PATTERN := $(strip $(subst $(SPACE),|,$(strip $(ALL_UPGRADEABLE_MODULES)))) 79281806Srpaulo 80281806Srpaulo JMOD_FLAGS += --module-path $(JMODS_DIR) \ 81281806Srpaulo --hash-modules '^(?!$(EXCLUDE_PATTERN))' 82281806Srpaulo endif 83281806Srpauloendif 84281806Srpaulo 85281806Srpaulo# Changes to the jmod tool itself should also trigger a rebuild of all jmods. 86281806Srpaulo# The variable JMOD_CMD could contain an environment variable assignment before 87281806Srpaulo# the actual command. Filter that out using wildcard before adding to DEPS. 88281806SrpauloDEPS += $(wildcard $(JMOD_CMD)) 89281806Srpauloifeq ($(EXTERNAL_BUILDJDK), false) 90281806Srpaulo DEPS += $(call CacheFind, $(JDK_OUTPUTDIR)/modules/jdk.jlink/jdk/tools/jmod) 91281806Srpauloendif 92281806Srpaulo 93281806Srpaulo# TODO: What about headers? 94281806Srpaulo# Create jmods in a temp dir and then move them into place to keep the 95281806Srpaulo# module path in $(IMAGES_OUTPUTDIR)/jmods valid at all times. 96281806Srpaulo$(JMODS_DIR)/$(MODULE).jmod: $(DEPS) 97189251Ssam $(call LogWarn, Creating $(patsubst $(OUTPUT_ROOT)/%, %, $@)) 98281806Srpaulo $(call MakeDir, $(@D) $(SUPPORT_OUTPUTDIR)/jmods) 99281806Srpaulo $(RM) $@ $(SUPPORT_OUTPUTDIR)/jmods/$(notdir $@) 100281806Srpaulo $(JMOD) create \ 101189251Ssam --module-version $(VERSION_SHORT) \ 102189251Ssam --os-name $(REQUIRED_OS_NAME) \ 103189251Ssam --os-arch $(OPENJDK_TARGET_CPU_LEGACY) \ 104189251Ssam --os-version $(REQUIRED_OS_VERSION) \ 105189251Ssam --module-path $(JMODS_DIR) \ 106281806Srpaulo --exclude '**{_the.*,*.diz,*.debuginfo,*.dSYM/**,*.dSYM,*.pdb,*.map}' \ 107252726Srpaulo $(JMOD_FLAGS) $(SUPPORT_OUTPUTDIR)/jmods/$(notdir $@) 108252726Srpaulo $(MV) $(SUPPORT_OUTPUTDIR)/jmods/$(notdir $@) $@ 109252726Srpaulo 110252726SrpauloTARGETS += $(IMAGES_OUTPUTDIR)/jmods/$(MODULE).jmod 111252726Srpaulo 112252726Srpaulo################################################################################ 113252726Srpaulo 114252726Srpauloall: $(TARGETS) 115252726Srpaulo 116189251Ssam################################################################################ 117252726Srpaulo