make/common/JdkNativeCompilation.gmk
changeset 49244 995a5556edfa
child 50471 f0aeede1b855
child 56311 e05b4241302b
equal deleted inserted replaced
49243:176b3da8ce61 49244:995a5556edfa
       
     1 #
       
     2 # Copyright (c) 2018, 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 ifndef _JDK_NATIVE_COMPILATION_GMK
       
    27 _JDK_NATIVE_COMPILATION_GMK := 1
       
    28 
       
    29 ifeq ($(_MAKEBASE_GMK), )
       
    30   $(error You must include MakeBase.gmk prior to including JdkNativeCompilation.gmk)
       
    31 endif
       
    32 
       
    33 include NativeCompilation.gmk
       
    34 
       
    35 # Setup make rules for creating a native shared library with suitable defaults
       
    36 # for the OpenJDK project.
       
    37 #
       
    38 # Parameter 1 is the name of the rule. This name is used as variable prefix,
       
    39 # and the targets generated are listed in a variable by that name.
       
    40 #
       
    41 # Remaining parameters are named arguments. These are all passed on to
       
    42 # SetupNativeCompilation, except for 
       
    43 #   EXTRA_RC_FLAGS -- additional RC_FLAGS to append.
       
    44 SetupJdkLibrary = $(NamedParamsMacroTemplate)
       
    45 define SetupJdkLibraryBody
       
    46   ifeq ($$($1_OUTPUT_DIR), )
       
    47     $1_OUTPUT_DIR := $$(call FindLibDirForModule, $$(MODULE))
       
    48   endif
       
    49 
       
    50   ifeq ($$($1_OBJECT_DIR), )
       
    51     $1_OBJECT_DIR := $$(SUPPORT_OUTPUTDIR)/native/$$(MODULE)/lib$$($1_NAME)
       
    52   endif
       
    53 
       
    54   ifeq ($$($1_VERSIONINFO_RESOURCE), )
       
    55     $1_VERSIONINFO_RESOURCE := $$(GLOBAL_VERSION_INFO_RESOURCE)
       
    56   else ifeq ($$($1_VERSIONINFO_RESOURCE), DISABLE)
       
    57     $1_VERSIONINFO_RESOURCE :=
       
    58   endif
       
    59 
       
    60   ifeq ($$($1_RC_FLAGS), )
       
    61     $1_RC_FLAGS :=  $(RC_FLAGS) \
       
    62         -D "JDK_FNAME=$$($1_NAME).dll" \
       
    63         -D "JDK_INTERNAL_NAME=$$($1_NAME)" \
       
    64         -D "JDK_FTYPE=0x2L"
       
    65   else ifeq ($$($1_RC_FLAGS), DISABLE)
       
    66     $1_RC_FLAGS :=
       
    67   endif
       
    68 
       
    69   $1_RC_FLAGS += $$($1_EXTRA_RC_FLAGS)
       
    70 
       
    71   # Since we reuse the rule name ($1), all our arguments will pass through.
       
    72   # We lose in transparency, but gain in brevity in this call...
       
    73   $$(eval $$(call SetupNativeCompilation, $1, ))
       
    74 endef
       
    75 
       
    76 # Setup make rules for creating a native executable with suitable defaults for
       
    77 # the OpenJDK project.
       
    78 #
       
    79 # Parameter 1 is the name of the rule. This name is used as variable prefix,
       
    80 # and the targets generated are listed in a variable by that name.
       
    81 #
       
    82 # Remaining parameters are named arguments. These are all passed on to
       
    83 # SetupNativeCompilation, except for 
       
    84 #   EXTRA_RC_FLAGS -- additional RC_FLAGS to append.
       
    85 SetupJdkExecutable = $(NamedParamsMacroTemplate)
       
    86 define SetupJdkExecutableBody
       
    87   $1_TYPE := EXECUTABLE
       
    88 
       
    89   ifeq ($$($1_OUTPUT_DIR), )
       
    90     $1_OUTPUT_DIR := $$(call FindExecutableDirForModule, $$(MODULE))
       
    91   endif
       
    92 
       
    93   ifeq ($$($1_OBJECT_DIR), )
       
    94     $1_OBJECT_DIR := $$(SUPPORT_OUTPUTDIR)/native/$$(MODULE)/$$($1_NAME)
       
    95   endif
       
    96 
       
    97   ifeq ($$($1_VERSIONINFO_RESOURCE), )
       
    98     $1_VERSIONINFO_RESOURCE := $$(GLOBAL_VERSION_INFO_RESOURCE)
       
    99   else ifeq ($$($1_VERSIONINFO_RESOURCE), DISABLE)
       
   100     $1_VERSIONINFO_RESOURCE :=
       
   101   endif
       
   102 
       
   103   ifeq ($$($1_RC_FLAGS), )
       
   104     $1_RC_FLAGS :=  $(RC_FLAGS) \
       
   105         -D "JDK_FNAME=$$($1_NAME).exe" \
       
   106         -D "JDK_INTERNAL_NAME=$$($1_NAME)" \
       
   107         -D "JDK_FTYPE=0x01L"
       
   108   else ifeq ($$($1_RC_FLAGS), DISABLE)
       
   109     $1_RC_FLAGS :=
       
   110   endif
       
   111 
       
   112   $1_RC_FLAGS += $$($1_EXTRA_RC_FLAGS)
       
   113 
       
   114   # Since we reuse the rule name ($1), all our arguments will pass through.
       
   115   # We lose in transparency, but gain in brevity in this call...
       
   116   $$(eval $$(call SetupNativeCompilation, $1))
       
   117 endef
       
   118 
       
   119 endif # _JDK_NATIVE_COMPILATION_GMK