1#
2# Copyright (c) 2011, 2020, 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################################################################################
27# Install the launcher name, release version string, full version
28# string and the runtime name into the VersionProps.java file.
29
30ifeq ($(COMPANY_NAME), N/A)
31  VENDOR=Oracle Corporation
32else
33  VENDOR=$(COMPANY_NAME)
34endif
35
36$(eval $(call SetupTextFileProcessing, BUILD_VERSION_JAVA, \
37    SOURCE_FILES := $(TOPDIR)/src/java.base/share/classes/java/lang/VersionProps.java.template, \
38    OUTPUT_FILE := $(SUPPORT_OUTPUTDIR)/gensrc/java.base/java/lang/VersionProps.java, \
39    REPLACEMENTS := \
40        @@LAUNCHER_NAME@@ => $(LAUNCHER_NAME) ; \
41        @@RUNTIME_NAME@@ => $(RUNTIME_NAME) ; \
42        @@VERSION_SHORT@@ => $(VERSION_SHORT) ; \
43        @@VERSION_STRING@@ => $(VERSION_STRING) ; \
44        @@VERSION_NUMBER@@ => $(VERSION_NUMBER) ; \
45        @@VERSION_PRE@@ => $(VERSION_PRE) ; \
46        @@VERSION_BUILD@@ => $(VERSION_BUILD) ; \
47        @@VERSION_OPT@@ => $(VERSION_OPT) ; \
48        @@VERSION_DATE@@ => $(VERSION_DATE) ; \
49        @@VENDOR_VERSION_STRING@@ => $(VENDOR_VERSION_STRING) ; \
50        @@VENDOR@@ => $(VENDOR) ; \
51        @@VENDOR_URL@@ => $(VENDOR_URL) ; \
52        @@VENDOR_URL_BUG@@ => $(VENDOR_URL_BUG) ; \
53        @@VENDOR_URL_VM_BUG@@ => $(VENDOR_URL_VM_BUG), \
54))
55
56GENSRC_JAVA_BASE += $(BUILD_VERSION_JAVA)
57
58################################################################################
59
60ifneq ($(filter $(TOOLCHAIN_TYPE), gcc clang), )
61  # Need to specify language since the template file has a non standard
62  # extension.
63  CPP_FLAGS += -x c
64else ifeq ($(TOOLCHAIN_TYPE), microsoft)
65  CPP_FLAGS += -nologo
66endif
67
68# Generate a java source file from a template through the C preprocessor for the
69# target system. First extract the copyright notice at the start of the file.
70# Run the preprocessor. Filter out the default compiler stderr output on
71# Windows. Filter out all the header files output. Remove all "PREFIX_" strings
72# that were added to variable references in the template files to avoid being
73# matched by the preprocessor. Remove any #line directives left by the
74# preprocessor.
75define generate-preproc-src
76	$(call MakeDir, $(@D))
77	( $(NAWK) '/@@END_COPYRIGHT@@/{exit}1' $< && \
78	  $(CPP) $(CPP_FLAGS) $(SYSROOT_CFLAGS) $(CFLAGS_JDKLIB) $< \
79	      2> >($(GREP) -v '^$(<F)$$' >&2) \
80	      | $(NAWK) '/@@START_HERE@@/,0' \
81	      |  $(SED) -e 's/@@START_HERE@@/\/\/ AUTOMATICALLY GENERATED FILE - DO NOT EDIT/' \
82	      -e 's/PREFIX_//' -e 's/^#.*//' \
83	) > $@
84endef
85
86GENSRC_SOR_FILE += $(SUPPORT_OUTPUTDIR)/gensrc/java.base/sun/nio/ch/SocketOptionRegistry.java
87
88$(GENSRC_SOR_FILE): \
89    $(TOPDIR)/src/java.base/share/classes/sun/nio/ch/SocketOptionRegistry.java.template
90	$(generate-preproc-src)
91
92GENSRC_JAVA_BASE += $(GENSRC_SOR_FILE)
93
94################################################################################
95
96ifneq ($(OPENJDK_TARGET_OS), windows)
97
98  GENSRC_UC_FILE := $(SUPPORT_OUTPUTDIR)/gensrc/java.base/sun/nio/fs/UnixConstants.java
99
100  $(GENSRC_UC_FILE): \
101      $(TOPDIR)/src/java.base/unix/classes/sun/nio/fs/UnixConstants.java.template
102	$(generate-preproc-src)
103
104  GENSRC_JAVA_BASE += $(GENSRC_UC_FILE)
105
106endif
107
108################################################################################
109
110ifeq ($(OPENJDK_TARGET_OS), solaris)
111
112  GENSRC_SC_FILE := $(SUPPORT_OUTPUTDIR)/gensrc/java.base/sun/nio/fs/SolarisConstants.java
113
114  $(GENSRC_SC_FILE): \
115      $(TOPDIR)/src/java.base/solaris/classes/sun/nio/fs/SolarisConstants.java.template
116	$(generate-preproc-src)
117
118  GENSRC_JAVA_BASE += $(GENSRC_SC_FILE)
119
120endif
121
122################################################################################
123# Create the javax/crypto/JceSecurity.class, using the build default.
124#
125ifeq ($(UNLIMITED_CRYPTO), true)
126    JCE_DEFAULT_POLICY = unlimited
127else
128    JCE_DEFAULT_POLICY = limited
129endif
130
131ifneq ($(wildcard $(TOPDIR)/src/java.base/share/classes/javax/crypto/JceSecurity.java.template), )
132  $(eval $(call SetupTextFileProcessing, BUILD_JCESECURITY_JAVA, \
133      SOURCE_FILES := $(TOPDIR)/src/java.base/share/classes/javax/crypto/JceSecurity.java.template, \
134      OUTPUT_FILE := $(SUPPORT_OUTPUTDIR)/gensrc/java.base/javax/crypto/JceSecurity.java, \
135      REPLACEMENTS := \
136        @@JCE_DEFAULT_POLICY@@ => $(JCE_DEFAULT_POLICY), \
137  ))
138
139  GENSRC_JAVA_BASE += $(BUILD_JCESECURITY_JAVA)
140endif
141