1 #
   2 # Copyright (c) 2016, 2019, 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 
  31 GENSRC_DIR := $(SUPPORT_OUTPUTDIR)/gensrc/$(MODULE)
  32 SRC_DIR := $(TOPDIR)/src/$(MODULE)/share/classes
  33 
  34 ################################################################################
  35 
  36 PROC_SRC_SUBDIRS := \
  37     org.graalvm.compiler.hotspot.management \
  38     #
  39 
  40 PROC_SRC_DIRS := $(patsubst %, $(SRC_DIR)/%/src, $(PROC_SRC_SUBDIRS))
  41 
  42 PROC_SRCS := $(filter %.java, $(call FindFiles, $(PROC_SRC_DIRS)))
  43 
  44 ALL_SRC_DIRS := $(SRC_DIR) $(wildcard $(SRC_DIR)/*/src)
  45 SOURCEPATH := $(call PathList, $(ALL_SRC_DIRS))
  46 
  47 PROCESSOR_JARS := \
  48     $(BUILDTOOLS_OUTPUTDIR)/jdk.vm.compiler.serviceprovider.processor.jar \
  49     #
  50 PROCESSOR_PATH := $(call PathList, $(PROCESSOR_JARS))
  51 
  52 $(GENSRC_DIR)/_gensrc_proc_done: $(PROC_SRCS) $(PROCESSOR_JARS)
  53         $(call MakeDir, $(@D))
  54         $(eval $(call ListPathsSafely,PROC_SRCS,$(@D)/_gensrc_proc_files))
  55         $(JAVA) $(NEW_JAVAC) \
  56             -XDignore.symbol.file \
  57             --upgrade-module-path $(JDK_OUTPUTDIR)/modules --system none \
  58             -sourcepath $(SOURCEPATH) \
  59             -implicit:none \
  60             -proc:only \
  61             -processorpath $(PROCESSOR_PATH) \
  62             -d $(GENSRC_DIR) \
  63             -s $(GENSRC_DIR) \
  64             @$(@D)/_gensrc_proc_files
  65         $(TOUCH) $@
  66 
  67 TARGETS += $(GENSRC_DIR)/_gensrc_proc_done
  68 
  69 ################################################################################
  70 
  71 $(GENSRC_DIR)/module-info.java.extra: $(GENSRC_DIR)/_gensrc_proc_done
  72         $(ECHO) "" > $@;
  73         ($(CD) $(GENSRC_DIR)/META-INF/providers && \
  74             p=""; \
  75             impl=""; \
  76             for i in $$($(GREP) '^' * | $(SORT) -t ':' -k 2 | $(SED) 's/:.*//'); do \
  77               c=$$($(CAT) $$i | $(TR) -d '\n\r'); \
  78               if test x$$p != x$$c; then \
  79                 if test x$$p != x; then \
  80                   $(ECHO) "    ;" >> $@; \
  81                 fi; \
  82                 $(ECHO) "provides $$c with" >> $@; \
  83                 p=$$c; \
  84                 impl=""; \
  85               fi; \
  86               if test x$$impl != x; then \
  87                 $(ECHO) "  , $$i" >> $@; \
  88               else \
  89                 $(ECHO) "    $$i" >> $@; \
  90               fi; \
  91               impl=$$i; \
  92             done); \
  93         $(ECHO) "    ;" >> $@;
  94 
  95 TARGETS += $(GENSRC_DIR)/module-info.java.extra
  96 
  97 ################################################################################
  98 
  99 all: $(TARGETS)
 100 
 101 .PHONY: default all