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 default: all
  27 
  28 include $(SPEC)
  29 include MakeBase.gmk
  30 include Modules.gmk
  31 include JavaCompilation.gmk
  32 include SetupJavaCompilers.gmk
  33 include TextFileProcessing.gmk
  34 
  35 ################################################################################
  36 
  37 $(eval $(call IncludeCustomExtension, CompileTools.gmk))
  38 
  39 ################################################################################
  40 
  41 # Use += to be able to add to this from a custom extension
  42 BUILD_TOOLS_SRC_DIRS += \
  43     $(call FindAllToolsDirs) \
  44     $(TOPDIR)/make/jdk/src/classes \
  45     $(BUILDTOOLS_OUTPUTDIR)/interim_tzdb_classes \
  46     #
  47 
  48 $(eval $(call SetupJavaCompilation, BUILD_TOOLS_JDK, \
  49     SETUP := GENERATE_OLDBYTECODE, \
  50     SRC := $(BUILD_TOOLS_SRC_DIRS), \
  51     EXCLUDES := \
  52         build/tools/classlist \
  53         build/tools/jigsaw \
  54         build/tools/depend \
  55         org/openjdk/buildtools/symbolgenerator \
  56         , \
  57     BIN := $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes, \
  58     ADD_JAVAC_FLAGS := \
  59         --add-exports java.desktop/sun.awt=ALL-UNNAMED \
  60         --add-exports java.base/sun.text=ALL-UNNAMED \
  61         , \
  62 ))
  63 
  64 TARGETS += $(BUILD_TOOLS_JDK)
  65 
  66 $(eval $(call SetupCopyFiles, COPY_NIMBUS_TEMPLATES, \
  67     SRC := $(TOPDIR)/src/java.desktop/share/classes/javax/swing/plaf/nimbus, \
  68     DEST := $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes/org/openjdk/buildtools/generatenimbus/resources, \
  69     FILES := $(wildcard $(TOPDIR)/src/java.desktop/share/classes/javax/swing/plaf/nimbus/*.template), \
  70 ))
  71 
  72 TARGETS += $(COPY_NIMBUS_TEMPLATES)
  73 
  74 ################################################################################
  75 
  76 $(eval $(call SetupJavaCompilation, COMPILE_DEPEND, \
  77     SETUP := GENERATE_OLDBYTECODE, \
  78     SRC := $(TOPDIR)/make/jdk/src/classes, \
  79     INCLUDES := build/tools/depend, \
  80     BIN := $(BUILDTOOLS_OUTPUTDIR)/depend, \
  81 ))
  82 
  83 DEPEND_SERVICE_PROVIDER := $(BUILDTOOLS_OUTPUTDIR)/depend/META-INF/services/com.sun.source.util.Plugin
  84 
  85 $(DEPEND_SERVICE_PROVIDER):
  86         $(call MakeDir, $(BUILDTOOLS_OUTPUTDIR)/depend/META-INF/services)
  87         $(ECHO) build.tools.depend.Depend > $@
  88 
  89 TARGETS += $(COMPILE_DEPEND) $(DEPEND_SERVICE_PROVIDER)
  90 
  91 ################################################################################
  92 
  93 # To be able to call the javascript filter when generating man pages using
  94 # pandoc, we need to create this executable wrapper script.
  95 ifeq ($(ENABLE_PANDOC), true)
  96   # PANDOC_TROFF_MANPAGE_FILTER is duplicated for export in ToolsJdk.gmk.
  97   PANDOC_TROFF_MANPAGE_FILTER := \
  98       $(BUILDTOOLS_OUTPUTDIR)/manpages/pandoc-troff-manpage-filter
  99   PANDOC_TROFF_MANPAGE_FILTER_SETUP := \
 100       $(BUILDTOOLS_OUTPUTDIR)/manpages/_pandoc_troff_manpage_filter_setup.marker
 101 
 102   # Create a usable instance of the wrapper script that calls the pandoc filter
 103   # (which is written in javascript).
 104   $(eval $(call SetupTextFileProcessing, CREATE_PANDOC_TROFF_MANPAGE_FILTER, \
 105       SOURCE_FILES := $(TOPDIR)/make/scripts/pandoc-troff-manpage-filter.sh.template, \
 106       OUTPUT_FILE := $(PANDOC_TROFF_MANPAGE_FILTER), \
 107       REPLACEMENTS := \
 108           @@BOOT_JDK@@ => $(BOOT_JDK) ; \
 109           @@TOPDIR@@ => $(TOPDIR) ; \
 110           @@JJS_FLAGS@@ => $(addprefix -J, $(JAVA_FLAGS_SMALL)), \
 111   ))
 112 
 113   # Created script must be made executable
 114   $(PANDOC_TROFF_MANPAGE_FILTER_SETUP): $(CREATE_PANDOC_TROFF_MANPAGE_FILTER)
 115         $(CHMOD) a+rx $(PANDOC_TROFF_MANPAGE_FILTER)
 116         $(TOUCH) $@
 117 
 118   TARGETS += $(PANDOC_TROFF_MANPAGE_FILTER_SETUP)
 119 
 120   # PANDOC_HTML_MANPAGE_FILTER is duplicated for export in ToolsJdk.gmk.
 121   PANDOC_HTML_MANPAGE_FILTER := \
 122       $(BUILDTOOLS_OUTPUTDIR)/manpages/pandoc-html-manpage-filter
 123   PANDOC_HTML_MANPAGE_FILTER_SETUP := \
 124       $(BUILDTOOLS_OUTPUTDIR)/manpages/_pandoc_html_manpage_filter_setup.marker
 125 
 126   # Create a usable instance of the wrapper script that calls the pandoc filter
 127   # (which is written in javascript).
 128   $(eval $(call SetupTextFileProcessing, CREATE_PANDOC_HTML_MANPAGE_FILTER, \
 129       SOURCE_FILES := $(TOPDIR)/make/scripts/pandoc-html-manpage-filter.sh.template, \
 130       OUTPUT_FILE := $(PANDOC_HTML_MANPAGE_FILTER), \
 131       REPLACEMENTS := \
 132           @@BOOT_JDK@@ => $(BOOT_JDK) ; \
 133           @@TOPDIR@@ => $(TOPDIR) ; \
 134           @@JJS_FLAGS@@ => $(addprefix -J, $(JAVA_FLAGS_SMALL)), \
 135   ))
 136 
 137   # Created script must be made executable
 138   $(PANDOC_HTML_MANPAGE_FILTER_SETUP): $(CREATE_PANDOC_HTML_MANPAGE_FILTER)
 139         $(CHMOD) a+rx $(PANDOC_HTML_MANPAGE_FILTER)
 140         $(TOUCH) $@
 141 
 142   TARGETS += $(PANDOC_HTML_MANPAGE_FILTER_SETUP)
 143 endif
 144 
 145 all: $(TARGETS)