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