1 # 2 # Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved. 3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 # 5 # This code is free software; you can redistribute it and/or modify it 6 # under the terms of the GNU General Public License version 2 only, as 7 # published by the Free Software Foundation. Oracle designates this 8 # particular file as subject to the "Classpath" exception as provided 9 # by Oracle in the LICENSE file that accompanied this code. 10 # 11 # This code is distributed in the hope that it will be useful, but WITHOUT 12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 # version 2 for more details (a copy is included in the LICENSE file that 15 # accompanied this code). 16 # 17 # You should have received a copy of the GNU General Public License version 18 # 2 along with this work; if not, write to the Free Software Foundation, 19 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 # 21 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 # or visit www.oracle.com if you need additional information or have any 23 # questions. 24 # 25 26 default: all 27 28 include $(SPEC) 29 include MakeBase.gmk 30 include JavaCompilation.gmk 31 include Setup.gmk 32 33 # The jars created in this file are required for the exploded jdk image to function and 34 # cannot wait to be built in the images target. 35 36 ########################################################################################## 37 # Create manifest for security jars 38 # 39 # Include these extra attributes for now, should probably take out. 40 # 41 MAINMANIFEST := $(JDK_TOPDIR)/make/data/mainmanifest/manifest.mf 42 JCE_MANIFEST := $(JDK_OUTPUTDIR)/lib/_the.security.manifest.mf 43 44 $(JCE_MANIFEST): $(MAINMANIFEST) 45 $(MKDIR) -p $(@D) 46 $(RM) $@ $@.tmp 47 $(SED) -e "s#@@RELEASE@@#$(JDK_VERSION)#" \ 48 -e "s#@@COMPANY_NAME@@#$(COMPANY_NAME)#" \ 49 $(MAINMANIFEST) >> $@.tmp 50 $(ECHO) "Extension-Name: javax.crypto" >> $@.tmp 51 $(ECHO) "Implementation-Vendor-Id: com.sun" >> $@.tmp 52 $(MV) $@.tmp $@ 53 54 ########################################################################################## 55 # For security and crypto jars, always build the jar, but for closed, install the prebuilt 56 # signed version instead of the newly built jar. Unsigned jars are treated as intermediate 57 # targets and explicitly added to the TARGETS list. For open, signing is not needed. See 58 # SignJars.gmk for more information. 59 # 60 # The source for the crypto jars is not available for all licensees. The BUILD_CRYPTO 61 # variable is set to no if these jars can't be built to skip that step of the build. 62 # Note that for OPENJDK, the build will fail if BUILD_CRYPTO=no since then there is no 63 # other way to get the jars than to build them. 64 65 SUNPKCS11_JAR_DST := $(JDK_OUTPUTDIR)/lib/ext/sunpkcs11.jar 66 SUNPKCS11_JAR_UNSIGNED := $(JDK_OUTPUTDIR)/jce/unsigned/sunpkcs11.jar 67 68 $(eval $(call SetupArchive,BUILD_SUNPKCS11_JAR, , \ 69 SRCS := $(JDK_OUTPUTDIR)/classes_security, \ 70 SUFFIXES := .class, \ 71 INCLUDES := sun/security/pkcs11, \ 72 JAR := $(SUNPKCS11_JAR_UNSIGNED), \ 73 MANIFEST := $(JCE_MANIFEST), \ 74 SKIP_METAINF := true)) 75 76 $(SUNPKCS11_JAR_UNSIGNED): $(JCE_MANIFEST) 77 78 ifndef OPENJDK 79 SUNPKCS11_JAR_SRC := $(JDK_TOPDIR)/make/closed/tools/crypto/pkcs11/sunpkcs11.jar 80 $(SUNPKCS11_JAR_DST): $(SUNPKCS11_JAR_SRC) 81 @$(ECHO) $(LOG_INFO) Copying prebuilt $(@F) 82 $(install-file) 83 else 84 $(SUNPKCS11_JAR_DST): $(SUNPKCS11_JAR_UNSIGNED) 85 $(install-file) 86 endif 87 88 TARGETS += $(SUNPKCS11_JAR_UNSIGNED) $(SUNPKCS11_JAR_DST) 89 90 ########################################################################################## 91 92 SUNEC_JAR_DST := $(JDK_OUTPUTDIR)/lib/ext/sunec.jar 93 SUNEC_JAR_UNSIGNED := $(JDK_OUTPUTDIR)/jce/unsigned/sunec.jar 94 95 $(eval $(call SetupArchive,BUILD_SUNEC_JAR, , \ 96 SRCS := $(JDK_OUTPUTDIR)/classes_security, \ 97 SUFFIXES := .class, \ 98 INCLUDES := sun/security/ec, \ 99 JAR := $(SUNEC_JAR_UNSIGNED), \ 100 MANIFEST := $(JCE_MANIFEST), \ 101 SKIP_METAINF := true)) 102 103 $(SUNEC_JAR_UNSIGNED): $(JCE_MANIFEST) 104 105 ifndef OPENJDK 106 SUNEC_JAR_SRC := $(JDK_TOPDIR)/make/closed/tools/crypto/ec/sunec.jar 107 $(SUNEC_JAR_DST): $(SUNEC_JAR_SRC) 108 @$(ECHO) $(LOG_INFO) Copying prebuilt $(@F) 109 $(install-file) 110 else 111 $(SUNEC_JAR_DST): $(SUNEC_JAR_UNSIGNED) 112 $(install-file) 113 endif 114 115 TARGETS += $(SUNEC_JAR_UNSIGNED) $(SUNEC_JAR_DST) 116 117 ########################################################################################## 118 119 SUNJCE_PROVIDER_JAR_DST := $(JDK_OUTPUTDIR)/lib/ext/sunjce_provider.jar 120 SUNJCE_PROVIDER_JAR_UNSIGNED := $(JDK_OUTPUTDIR)/jce/unsigned/sunjce_provider.jar 121 122 ifneq ($(BUILD_CRYPTO), no) 123 $(eval $(call SetupArchive,BUILD_SUNJCE_PROVIDER_JAR, , \ 124 SRCS := $(JDK_OUTPUTDIR)/classes_security, \ 125 SUFFIXES := .class, \ 126 INCLUDES := com/sun/crypto/provider, \ 127 JAR := $(SUNJCE_PROVIDER_JAR_UNSIGNED), \ 128 MANIFEST := $(JCE_MANIFEST), \ 129 SKIP_METAINF := true)) 130 131 $(SUNJCE_PROVIDER_JAR_UNSIGNED): $(JCE_MANIFEST) 132 133 TARGETS += $(SUNJCE_PROVIDER_JAR_UNSIGNED) 134 endif 135 136 ifndef OPENJDK 137 SUNJCE_PROVIDER_JAR_SRC := $(JDK_TOPDIR)/make/closed/tools/crypto/jce/sunjce_provider.jar 138 $(SUNJCE_PROVIDER_JAR_DST): $(SUNJCE_PROVIDER_JAR_SRC) 139 @$(ECHO) $(LOG_INFO) Copying prebuilt $(@F) 140 $(install-file) 141 else 142 $(SUNJCE_PROVIDER_JAR_DST): $(SUNJCE_PROVIDER_JAR_UNSIGNED) 143 $(install-file) 144 endif 145 146 TARGETS += $(SUNJCE_PROVIDER_JAR_DST) 147 148 ########################################################################################## 149 150 JCE_JAR_DST := $(JDK_OUTPUTDIR)/lib/jce.jar 151 JCE_JAR_UNSIGNED := $(JDK_OUTPUTDIR)/jce/unsigned/jce.jar 152 153 ifneq ($(BUILD_CRYPTO), no) 154 $(eval $(call SetupArchive,BUILD_JCE_JAR, , \ 155 SRCS := $(JDK_OUTPUTDIR)/classes_security, \ 156 SUFFIXES := .class, \ 157 INCLUDES := javax/crypto sun/security/internal, \ 158 JAR := $(JCE_JAR_UNSIGNED), \ 159 MANIFEST := $(JCE_MANIFEST), \ 160 SKIP_METAINF := true)) 161 162 $(JCE_JAR_UNSIGNED): $(JCE_MANIFEST) 163 164 TARGETS += $(JCE_JAR_UNSIGNED) 165 endif 166 167 ifndef OPENJDK 168 JCE_JAR_SRC := $(JDK_TOPDIR)/make/closed/tools/crypto/jce/jce.jar 169 $(JCE_JAR_DST): $(JCE_JAR_SRC) 170 @$(ECHO) $(LOG_INFO) Copying prebuilt $(@F) 171 $(install-file) 172 else 173 $(JCE_JAR_DST): $(JCE_JAR_UNSIGNED) 174 $(install-file) 175 endif 176 177 TARGETS += $(JCE_JAR_DST) 178 179 ########################################################################################## 180 181 US_EXPORT_POLICY_JAR_UNLIMITED_DST := \ 182 $(JDK_OUTPUTDIR)/lib/security/policy/unlimited/US_export_policy.jar 183 US_EXPORT_POLICY_JAR_LIMITED_DST := \ 184 $(JDK_OUTPUTDIR)/lib/security/policy/limited/US_export_policy.jar 185 186 ifneq ($(BUILD_CRYPTO), no) 187 188 US_EXPORT_POLICY_JAR_LIMITED_UNSIGNED := \ 189 $(JDK_OUTPUTDIR)/jce/unsigned/policy/limited/US_export_policy.jar 190 US_EXPORT_POLICY_JAR_UNLIMITED_UNSIGNED := \ 191 $(JDK_OUTPUTDIR)/jce/unsigned/policy/unlimited/US_export_policy.jar 192 193 # 194 # TODO fix so that SetupArchive does not write files into SRCS 195 # then we don't need this extra copying 196 # 197 # NOTE: We currently do not place restrictions on our limited export 198 # policy. This was not a typo. This means we are shipping the same file 199 # for both limimted and unlimited US_export_policy.jar. 200 # 201 US_EXPORT_POLICY_JAR_SRC_DIR := $(JDK_TOPDIR)/make/data/cryptopolicy/unlimited 202 US_EXPORT_POLICY_JAR_TMP := \ 203 $(JDK_OUTPUTDIR)/jce/unsigned/policy/unlimited/US_export_policy_jar.tmp 204 205 $(US_EXPORT_POLICY_JAR_TMP)/%: $(US_EXPORT_POLICY_JAR_SRC_DIR)/% 206 $(install-file) 207 208 US_EXPORT_POLICY_JAR_DEPS := $(US_EXPORT_POLICY_JAR_TMP)/default_US_export.policy 209 210 $(eval $(call SetupArchive,BUILD_US_EXPORT_POLICY_JAR, $(US_EXPORT_POLICY_JAR_DEPS), \ 211 SRCS := $(US_EXPORT_POLICY_JAR_TMP), \ 212 SUFFIXES := .policy, \ 213 JAR := $(US_EXPORT_POLICY_JAR_UNLIMITED_UNSIGNED), \ 214 EXTRA_MANIFEST_ATTR := Crypto-Strength: unlimited, \ 215 SKIP_METAINF := true)) 216 217 $(US_EXPORT_POLICY_JAR_LIMITED_UNSIGNED): $(US_EXPORT_POLICY_JAR_UNLIMITED_UNSIGNED) 218 $(ECHO) $(LOG_INFO) Copying unlimited $(patsubst $(OUTPUT_ROOT)/%,%,$@) 219 $(install-file) 220 221 TARGETS += $(US_EXPORT_POLICY_JAR_LIMITED_UNSIGNED) \ 222 $(US_EXPORT_POLICY_JAR_UNLIMITED_UNSIGNED) 223 endif 224 225 ifndef OPENJDK 226 $(US_EXPORT_POLICY_JAR_UNLIMITED_DST): \ 227 $(JDK_TOPDIR)/make/closed/tools/crypto/jce/unlimited/US_export_policy.jar 228 $(ECHO) $(LOG_INFO) Copying prebuilt $(@F) 229 $(install-file) 230 $(US_EXPORT_POLICY_JAR_LIMITED_DST): \ 231 $(JDK_TOPDIR)/make/closed/tools/crypto/jce/limited/US_export_policy.jar 232 $(ECHO) $(LOG_INFO) Copying prebuilt $(@F) 233 $(install-file) 234 else 235 $(US_EXPORT_POLICY_JAR_UNLIMITED_DST): $(US_EXPORT_POLICY_JAR_UNLIMITED_UNSIGNED) 236 $(install-file) 237 $(US_EXPORT_POLICY_JAR_LIMITED_DST): $(US_EXPORT_POLICY_JAR_LIMITED_UNSIGNED) 238 $(install-file) 239 endif 240 241 TARGETS += $(US_EXPORT_POLICY_JAR_UNLIMITED_DST) $(US_EXPORT_POLICY_JAR_LIMITED_DST) 242 243 ########################################################################################## 244 245 LOCAL_POLICY_JAR_LIMITED_DST := \ 246 $(JDK_OUTPUTDIR)/lib/security/policy/limited/local_policy.jar 247 LOCAL_POLICY_JAR_UNLIMITED_DST := \ 248 $(JDK_OUTPUTDIR)/lib/security/policy/unlimited/local_policy.jar 249 250 ifneq ($(BUILD_CRYPTO), no) 251 252 LOCAL_POLICY_JAR_LIMITED_UNSIGNED := \ 253 $(JDK_OUTPUTDIR)/jce/unsigned/policy/limited/local_policy.jar 254 LOCAL_POLICY_JAR_UNLIMITED_UNSIGNED := \ 255 $(JDK_OUTPUTDIR)/jce/unsigned/policy/unlimited/local_policy.jar 256 257 # 258 # TODO fix so that SetupArchive does not write files into SRCS 259 # then we don't need this extra copying 260 # 261 LOCAL_POLICY_JAR_LIMITED_TMP := \ 262 $(JDK_OUTPUTDIR)/jce/unsigned/policy/limited/local_policy_jar.tmp 263 LOCAL_POLICY_JAR_UNLIMITED_TMP := \ 264 $(JDK_OUTPUTDIR)/jce/unsigned/policy/unlimited/local_policy_jar.tmp 265 266 $(LOCAL_POLICY_JAR_LIMITED_TMP)/%: $(JDK_TOPDIR)/make/data/cryptopolicy/limited/% 267 $(install-file) 268 269 $(LOCAL_POLICY_JAR_UNLIMITED_TMP)/%: $(JDK_TOPDIR)/make/data/cryptopolicy/unlimited/% 270 $(install-file) 271 272 $(eval $(call SetupArchive,BUILD_LOCAL_POLICY_JAR_LIMITED, \ 273 $(LOCAL_POLICY_JAR_LIMITED_TMP)/exempt_local.policy \ 274 $(LOCAL_POLICY_JAR_LIMITED_TMP)/default_local.policy, \ 275 SRCS := $(LOCAL_POLICY_JAR_LIMITED_TMP), \ 276 SUFFIXES := .policy, \ 277 JAR := $(LOCAL_POLICY_JAR_LIMITED_UNSIGNED), \ 278 EXTRA_MANIFEST_ATTR := Crypto-Strength: limited, \ 279 SKIP_METAINF := true)) 280 281 $(eval $(call SetupArchive,BUILD_LOCAL_POLICY_JAR_UNLIMITED, \ 282 $(LOCAL_POLICY_JAR_UNLIMITED_TMP)/default_local.policy, \ 283 SRCS := $(LOCAL_POLICY_JAR_UNLIMITED_TMP), \ 284 SUFFIXES := .policy, \ 285 JAR := $(LOCAL_POLICY_JAR_UNLIMITED_UNSIGNED), \ 286 EXTRA_MANIFEST_ATTR := Crypto-Strength: unlimited, \ 287 SKIP_METAINF := true)) 288 289 TARGETS += $(LOCAL_POLICY_JAR_LIMITED_UNSIGNED) $(LOCAL_POLICY_JAR_UNLIMITED_UNSIGNED) 290 291 ifndef OPENJDK 292 $(JDK_OUTPUTDIR)/jce/unsigned/policy/unlimited/README.txt: \ 293 $(JDK_TOPDIR)/make/closed/javax/crypto/doc/README.txt 294 $(install-file) 295 296 TARGETS += $(JDK_OUTPUTDIR)/jce/unsigned/policy/unlimited/README.txt 297 endif 298 endif 299 300 ifndef OPENJDK 301 $(LOCAL_POLICY_JAR_UNLIMITED_DST): $(JDK_TOPDIR)/make/closed/tools/crypto/jce/unlimited/local_policy.jar 302 $(ECHO) $(LOG_INFO) Copying prebuilt $(@F) 303 $(install-file) 304 $(LOCAL_POLICY_JAR_LIMITED_DST): $(JDK_TOPDIR)/make/closed/tools/crypto/jce/limited/local_policy.jar 305 $(ECHO) $(LOG_INFO) Copying prebuilt $(@F) 306 $(install-file) 307 else 308 $(LOCAL_POLICY_JAR_UNLIMITED_DST): $(LOCAL_POLICY_JAR_UNLIMITED_UNSIGNED) 309 $(install-file) 310 $(LOCAL_POLICY_JAR_LIMITED_DST): $(LOCAL_POLICY_JAR_LIMITED_UNSIGNED) 311 $(install-file) 312 endif 313 314 TARGETS += $(LOCAL_POLICY_JAR_UNLIMITED_DST) $(LOCAL_POLICY_JAR_LIMITED_DST) 315 316 ########################################################################################## 317 318 ifeq ($(OPENJDK_TARGET_OS), windows) 319 320 SUNMSCAPI_JAR_DST := $(JDK_OUTPUTDIR)/lib/ext/sunmscapi.jar 321 SUNMSCAPI_JAR_UNSIGNED := $(JDK_OUTPUTDIR)/jce/unsigned/sunmscapi.jar 322 323 $(eval $(call SetupArchive,BUILD_SUNMSCAPI_JAR, , \ 324 SRCS := $(JDK_OUTPUTDIR)/classes_security, \ 325 SUFFIXES := .class, \ 326 INCLUDES := sun/security/mscapi, \ 327 JAR := $(SUNMSCAPI_JAR_UNSIGNED), \ 328 MANIFEST := $(JCE_MANIFEST), \ 329 SKIP_METAINF := true)) 330 331 $(SUNMSCAPI_JAR_UNSIGNED): $(JCE_MANIFEST) 332 333 ifndef OPENJDK 334 SUNMSCAPI_JAR_SRC := $(JDK_TOPDIR)/make/closed/tools/crypto/mscapi/sunmscapi.jar 335 $(SUNMSCAPI_JAR_DST): $(SUNMSCAPI_JAR_SRC) 336 @$(ECHO) $(LOG_INFO) Copying prebuilt $(@F) 337 $(install-file) 338 else 339 $(SUNMSCAPI_JAR_DST): $(SUNMSCAPI_JAR_UNSIGNED) 340 $(install-file) 341 endif 342 343 TARGETS += $(SUNMSCAPI_JAR_UNSIGNED) $(SUNMSCAPI_JAR_DST) 344 345 endif 346 347 ########################################################################################## 348 349 ifeq ($(OPENJDK_TARGET_OS), solaris) 350 ifndef OPENJDK 351 352 UCRYPTO_JAR_DST := $(JDK_OUTPUTDIR)/lib/ext/ucrypto.jar 353 UCRYPTO_JAR_UNSIGNED := $(JDK_OUTPUTDIR)/jce/unsigned/ucrypto.jar 354 UCRYPTO_JAR_SRC := $(JDK_TOPDIR)/make/closed/tools/crypto/ucrypto/ucrypto.jar 355 356 $(eval $(call SetupArchive,BUILD_UCRYPTO_JAR, , \ 357 SRCS := $(JDK_OUTPUTDIR)/classes_security, \ 358 SUFFIXES := .class, \ 359 INCLUDES := com/oracle/security/ucrypto, \ 360 JAR := $(UCRYPTO_JAR_UNSIGNED), \ 361 MANIFEST := $(JCE_MANIFEST), \ 362 SKIP_METAINF := true)) 363 364 $(UCRYPTO_JAR_UNSIGNED): $(JCE_MANIFEST) 365 366 $(UCRYPTO_JAR_DST): $(UCRYPTO_JAR_SRC) 367 @$(ECHO) $(LOG_INFO) Copying prebuilt $(@F) 368 $(install-file) 369 370 TARGETS += $(UCRYPTO_JAR_UNSIGNED) $(UCRYPTO_JAR_DST) 371 372 endif 373 endif 374 375 all: $(TARGETS) 376 377 .PHONY: default all