1 #
   2 # Copyright (c) 2011, 2017, 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 LIB_DST_DIR := $(SUPPORT_OUTPUTDIR)/modules_libs/$(MODULE)
  27 CONF_DST_DIR := $(SUPPORT_OUTPUTDIR)/modules_conf/$(MODULE)
  28 LEGAL_DST_DIR := $(SUPPORT_OUTPUTDIR)/modules_legal/$(MODULE)
  29 COMMON_LEGAL_DST_DIR := $(SUPPORT_OUTPUTDIR)/modules_legal/common
  30 
  31 ################################################################################
  32 #
  33 # Copy exported include headers files to output directory, if present.
  34 #
  35 
  36 INCLUDE_TARGET_DIR := $(SUPPORT_OUTPUTDIR)/modules_include/$(MODULE)
  37 INCLUDE_SOURCE_DIR := $(TOPDIR)/src/$(MODULE)/share/native/include
  38 
  39 ifneq ($(wildcard $(INCLUDE_SOURCE_DIR)/*), )
  40   $(eval $(call SetupCopyFiles, COPY_EXPORTED_INCLUDE, \
  41       SRC := $(INCLUDE_SOURCE_DIR), \
  42       DEST := $(INCLUDE_TARGET_DIR), \
  43       FILES := $(filter %.h, $(call CacheFind, $(INCLUDE_SOURCE_DIR))), \
  44   ))
  45 
  46   TARGETS += $(COPY_EXPORTED_INCLUDE)
  47 endif
  48 
  49 # Use the most specific of OS and OS_TYPE.
  50 INCLUDE_SOURCE_OS_DIR := $(TOPDIR)/src/$(MODULE)/$(OPENJDK_TARGET_OS)/native/include
  51 ifeq ($(wildcard $(INCLUDE_SOURCE_OS_DIR)/*), )
  52   INCLUDE_SOURCE_OS_DIR := $(TOPDIR)/src/$(MODULE)/$(OPENJDK_TARGET_OS_TYPE)/native/include
  53 endif
  54 
  55 ifneq ($(wildcard $(INCLUDE_SOURCE_OS_DIR)/*), )
  56   $(eval $(call SetupCopyFiles, COPY_EXPORTED_INCLUDE_OS, \
  57       SRC := $(INCLUDE_SOURCE_OS_DIR), \
  58       DEST := $(INCLUDE_TARGET_DIR)/$(OPENJDK_TARGET_OS_INCLUDE_SUBDIR), \
  59       FILES := $(filter %.h, $(call CacheFind, $(INCLUDE_SOURCE_OS_DIR))), \
  60   ))
  61 
  62   TARGETS += $(COPY_EXPORTED_INCLUDE_OS)
  63 endif
  64 
  65 ################################################################################
  66 # Setup make rules for copying legal files. This is only needed if the files
  67 # need to be filtered due to optional components being enabled/disabled.
  68 # Otherwise CreateJmods.gmk will find the legal files in the original src dirs.
  69 #
  70 # Parameter 1 is the name of the rule.
  71 #
  72 # Remaining parameters are named arguments. These include:
  73 #   EXCLUDES : List of filenames to exclude from copy
  74 SetupCopyLegalFiles = $(NamedParamsMacroTemplate)
  75 define SetupCopyLegalFilesBody
  76   $$(foreach f, $$(filter-out $$(addprefix %/, $$($1_EXCLUDES)), \
  77       $$(wildcard $$(addsuffix /*, $$(call FindModuleLegalSrcDirs, $$(MODULE))))), \
  78     $$(eval $$(call SetupCopyFiles, $1_$$(notdir $$f), \
  79         DEST := $$(LEGAL_DST_DIR), \
  80         FILES := $$f, \
  81     )) \
  82     $$(eval $1 += $$($1_$$(notdir $$f))) \
  83   )
  84 endef