1 # 2 # Copyright (c) 2013, 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_DST := $(JDK_OUTPUTDIR)/lib/security/US_export_policy.jar 182 183 ifneq ($(BUILD_CRYPTO), no) 184 185 US_EXPORT_POLICY_JAR_LIMITED_UNSIGNED := \ 186 $(JDK_OUTPUTDIR)/jce/unsigned/policy/limited/US_export_policy.jar 187 US_EXPORT_POLICY_JAR_UNLIMITED_UNSIGNED := \ 188 $(JDK_OUTPUTDIR)/jce/unsigned/policy/unlimited/US_export_policy.jar 189 190 # 191 # TODO fix so that SetupArchive does not write files into SRCS 192 # then we don't need this extra copying 193 # 194 # NOTE: We currently do not place restrictions on our limited export 195 # policy. This was not a typo. This means we are shipping the same file 196 # for both limimted and unlimited US_export_policy.jar. 197 # 198 US_EXPORT_POLICY_JAR_SRC_DIR := $(JDK_TOPDIR)/make/data/cryptopolicy/unlimited 199 US_EXPORT_POLICY_JAR_TMP := \ 200 $(JDK_OUTPUTDIR)/jce/unsigned/policy/unlimited/US_export_policy_jar.tmp 201 202 $(US_EXPORT_POLICY_JAR_TMP)/%: $(US_EXPORT_POLICY_JAR_SRC_DIR)/% 203 $(install-file) 204 205 US_EXPORT_POLICY_JAR_DEPS := $(US_EXPORT_POLICY_JAR_TMP)/default_US_export.policy 206 207 $(eval $(call SetupArchive,BUILD_US_EXPORT_POLICY_JAR, $(US_EXPORT_POLICY_JAR_DEPS), \ 208 SRCS := $(US_EXPORT_POLICY_JAR_TMP), \ 209 SUFFIXES := .policy, \ 210 JAR := $(US_EXPORT_POLICY_JAR_UNLIMITED_UNSIGNED), \ 211 EXTRA_MANIFEST_ATTR := Crypto-Strength: unlimited, \ 212 SKIP_METAINF := true)) 213 214 $(US_EXPORT_POLICY_JAR_LIMITED_UNSIGNED): $(US_EXPORT_POLICY_JAR_UNLIMITED_UNSIGNED) 215 $(ECHO) $(LOG_INFO) Copying unlimited $(patsubst $(OUTPUT_ROOT)/%,%,$@) 216 $(install-file) 217 218 TARGETS += $(US_EXPORT_POLICY_JAR_LIMITED_UNSIGNED) \ 219 $(US_EXPORT_POLICY_JAR_UNLIMITED_UNSIGNED) 220 endif 221 222 ifndef OPENJDK 223 ifeq ($(UNLIMITED_CRYPTO), true) 224 $(error No prebuilt unlimited crypto jars available) 225 endif 226 $(US_EXPORT_POLICY_JAR_DST): $(JDK_TOPDIR)/make/closed/tools/crypto/jce/US_export_policy.jar 227 $(ECHO) $(LOG_INFO) Copying prebuilt $(@F) 228 $(install-file) 229 else 230 ifeq ($(UNLIMITED_CRYPTO), true) 231 $(US_EXPORT_POLICY_JAR_DST): $(US_EXPORT_POLICY_JAR_UNLIMITED_UNSIGNED) 232 $(install-file) 233 else 234 $(US_EXPORT_POLICY_JAR_DST): $(US_EXPORT_POLICY_JAR_LIMITED_UNSIGNED) 235 $(install-file) 236 endif 237 endif 238 239 TARGETS += $(US_EXPORT_POLICY_JAR_DST) 240 241 ########################################################################################## 242 243 LOCAL_POLICY_JAR_DST := $(JDK_OUTPUTDIR)/lib/security/local_policy.jar 244 245 ifneq ($(BUILD_CRYPTO), no) 246 247 LOCAL_POLICY_JAR_LIMITED_UNSIGNED := \ 248 $(JDK_OUTPUTDIR)/jce/unsigned/policy/limited/local_policy.jar 249 LOCAL_POLICY_JAR_UNLIMITED_UNSIGNED := \ 250 $(JDK_OUTPUTDIR)/jce/unsigned/policy/unlimited/local_policy.jar 251 252 # 253 # TODO fix so that SetupArchive does not write files into SRCS 254 # then we don't need this extra copying 255 # 256 LOCAL_POLICY_JAR_LIMITED_TMP := \ 257 $(JDK_OUTPUTDIR)/jce/unsigned/policy/limited/local_policy_jar.tmp 258 LOCAL_POLICY_JAR_UNLIMITED_TMP := \ 259 $(JDK_OUTPUTDIR)/jce/unsigned/policy/unlimited/local_policy_jar.tmp 260 261 $(LOCAL_POLICY_JAR_LIMITED_TMP)/%: $(JDK_TOPDIR)/make/data/cryptopolicy/limited/% 262 $(install-file) 263 264 $(LOCAL_POLICY_JAR_UNLIMITED_TMP)/%: $(JDK_TOPDIR)/make/data/cryptopolicy/unlimited/% 265 $(install-file) 266 267 $(eval $(call SetupArchive,BUILD_LOCAL_POLICY_JAR_LIMITED, \ 268 $(LOCAL_POLICY_JAR_LIMITED_TMP)/exempt_local.policy \ 269 $(LOCAL_POLICY_JAR_LIMITED_TMP)/default_local.policy, \ 270 SRCS := $(LOCAL_POLICY_JAR_LIMITED_TMP), \ 271 SUFFIXES := .policy, \ 272 JAR := $(LOCAL_POLICY_JAR_LIMITED_UNSIGNED), \ 273 EXTRA_MANIFEST_ATTR := Crypto-Strength: limited, \ 274 SKIP_METAINF := true)) 275 276 $(eval $(call SetupArchive,BUILD_LOCAL_POLICY_JAR_UNLIMITED, \ 277 $(LOCAL_POLICY_JAR_UNLIMITED_TMP)/default_local.policy, \ 278 SRCS := $(LOCAL_POLICY_JAR_UNLIMITED_TMP), \ 279 SUFFIXES := .policy, \ 280 JAR := $(LOCAL_POLICY_JAR_UNLIMITED_UNSIGNED), \ 281 EXTRA_MANIFEST_ATTR := Crypto-Strength: unlimited, \ 282 SKIP_METAINF := true)) 283 284 TARGETS += $(LOCAL_POLICY_JAR_LIMITED_UNSIGNED) $(LOCAL_POLICY_JAR_UNLIMITED_UNSIGNED) 285 286 ifndef OPENJDK 287 $(JDK_OUTPUTDIR)/jce/unsigned/policy/unlimited/README.txt: \ 288 $(JDK_TOPDIR)/make/closed/javax/crypto/doc/README.txt 289 $(install-file) 290 291 TARGETS += $(JDK_OUTPUTDIR)/jce/unsigned/policy/unlimited/README.txt 292 endif 293 endif 294 295 ifndef OPENJDK 296 $(LOCAL_POLICY_JAR_DST): $(JDK_TOPDIR)/make/closed/tools/crypto/jce/local_policy.jar 297 $(ECHO) $(LOG_INFO) Copying prebuilt $(@F) 298 $(install-file) 299 else 300 ifeq ($(UNLIMITED_CRYPTO), true) 301 $(LOCAL_POLICY_JAR_DST): $(LOCAL_POLICY_JAR_UNLIMITED_UNSIGNED) 302 $(install-file) 303 else 304 $(LOCAL_POLICY_JAR_DST): $(LOCAL_POLICY_JAR_LIMITED_UNSIGNED) 305 $(install-file) 306 endif 307 endif 308 309 TARGETS += $(LOCAL_POLICY_JAR_DST) 310 311 ########################################################################################## 312 313 ifeq ($(OPENJDK_TARGET_OS), windows) 314 315 SUNMSCAPI_JAR_DST := $(JDK_OUTPUTDIR)/lib/ext/sunmscapi.jar 316 SUNMSCAPI_JAR_UNSIGNED := $(JDK_OUTPUTDIR)/jce/unsigned/sunmscapi.jar 317 318 $(eval $(call SetupArchive,BUILD_SUNMSCAPI_JAR, , \ 319 SRCS := $(JDK_OUTPUTDIR)/classes_security, \ 320 SUFFIXES := .class, \ 321 INCLUDES := sun/security/mscapi, \ 322 JAR := $(SUNMSCAPI_JAR_UNSIGNED), \ 323 MANIFEST := $(JCE_MANIFEST), \ 324 SKIP_METAINF := true)) 325 326 $(SUNMSCAPI_JAR_UNSIGNED): $(JCE_MANIFEST) 327 328 ifndef OPENJDK 329 SUNMSCAPI_JAR_SRC := $(JDK_TOPDIR)/make/closed/tools/crypto/mscapi/sunmscapi.jar 330 $(SUNMSCAPI_JAR_DST): $(SUNMSCAPI_JAR_SRC) 331 @$(ECHO) $(LOG_INFO) Copying prebuilt $(@F) 332 $(install-file) 333 else 334 $(SUNMSCAPI_JAR_DST): $(SUNMSCAPI_JAR_UNSIGNED) 335 $(install-file) 336 endif 337 338 TARGETS += $(SUNMSCAPI_JAR_UNSIGNED) $(SUNMSCAPI_JAR_DST) 339 340 endif 341 342 ########################################################################################## 343 344 ifeq ($(OPENJDK_TARGET_OS), solaris) 345 ifndef OPENJDK 346 347 UCRYPTO_JAR_DST := $(JDK_OUTPUTDIR)/lib/ext/ucrypto.jar 348 UCRYPTO_JAR_UNSIGNED := $(JDK_OUTPUTDIR)/jce/unsigned/ucrypto.jar 349 UCRYPTO_JAR_SRC := $(JDK_TOPDIR)/make/closed/tools/crypto/ucrypto/ucrypto.jar 350 351 $(eval $(call SetupArchive,BUILD_UCRYPTO_JAR, , \ 352 SRCS := $(JDK_OUTPUTDIR)/classes_security, \ 353 SUFFIXES := .class, \ 354 INCLUDES := com/oracle/security/ucrypto, \ 355 JAR := $(UCRYPTO_JAR_UNSIGNED), \ 356 MANIFEST := $(JCE_MANIFEST), \ 357 SKIP_METAINF := true)) 358 359 $(UCRYPTO_JAR_UNSIGNED): $(JCE_MANIFEST) 360 361 $(UCRYPTO_JAR_DST): $(UCRYPTO_JAR_SRC) 362 @$(ECHO) $(LOG_INFO) Copying prebuilt $(@F) 363 $(install-file) 364 365 TARGETS += $(UCRYPTO_JAR_UNSIGNED) $(UCRYPTO_JAR_DST) 366 367 endif 368 endif 369 370 all: $(TARGETS) 371 372 .PHONY: default all