make/launcher/LauncherCommon.gmk
changeset 51825 e3632b4706c4
parent 51811 4be08a5102b0
child 51853 ec62d6cab037
equal deleted inserted replaced
51824:9777d724ace8 51825:e3632b4706c4
    22 # or visit www.oracle.com if you need additional information or have any
    22 # or visit www.oracle.com if you need additional information or have any
    23 # questions.
    23 # questions.
    24 #
    24 #
    25 
    25 
    26 include JdkNativeCompilation.gmk
    26 include JdkNativeCompilation.gmk
    27 
       
    28 ORIGIN_ARG := $(call SET_EXECUTABLE_ORIGIN,/../lib/jli)
       
    29 
       
    30 # Applications expect to be able to link against libjawt without invoking
       
    31 # System.loadLibrary("jawt") first. This was the behaviour described in the
       
    32 # devloper documentation of JAWT and what worked with OpenJDK6.
       
    33 ifneq ($(findstring $(OPENJDK_TARGET_OS), linux solaris), )
       
    34   ORIGIN_ARG += $(call SET_EXECUTABLE_ORIGIN,/../lib)
       
    35 endif
       
    36 
    27 
    37 # Tell the compiler not to export any functions unless declared so in
    28 # Tell the compiler not to export any functions unless declared so in
    38 # the source code. On Windows, this is the default and cannot be changed.
    29 # the source code. On Windows, this is the default and cannot be changed.
    39 # On Mac, we have always exported all symbols, probably due to oversight
    30 # On Mac, we have always exported all symbols, probably due to oversight
    40 # and/or misunderstanding. To emulate this, don't hide any symbols
    31 # and/or misunderstanding. To emulate this, don't hide any symbols
    84 # EXTRA_JAVA_ARGS Processed into a -DEXTRA_JAVA_ARGS and is prepended
    75 # EXTRA_JAVA_ARGS Processed into a -DEXTRA_JAVA_ARGS and is prepended
    85 #     before JAVA_ARGS to CFLAGS, primarily to allow long string literal
    76 #     before JAVA_ARGS to CFLAGS, primarily to allow long string literal
    86 #     compile time defines exceeding Visual Studio 2013 limitations.
    77 #     compile time defines exceeding Visual Studio 2013 limitations.
    87 # CFLAGS   Additional CFLAGS
    78 # CFLAGS   Additional CFLAGS
    88 # CFLAGS_windows   Additional CFLAGS_windows
    79 # CFLAGS_windows   Additional CFLAGS_windows
    89 # LIBS_unix   Additional LIBS_unix
       
    90 # LIBS_windows   Additional LIBS_windows
       
    91 # LDFLAGS_solaris Additional LDFLAGS_solaris
    80 # LDFLAGS_solaris Additional LDFLAGS_solaris
    92 # RC_FLAGS   Additional RC_FLAGS
    81 # RC_FLAGS   Additional RC_FLAGS
    93 # MACOSX_SIGNED   On macosx, sign this binary
    82 # MACOSX_SIGNED   On macosx, sign this binary
    94 # OPTIMIZATION   Override default optimization level (LOW)
    83 # OPTIMIZATION   Override default optimization level (LOW)
    95 # OUTPUT_DIR   Override default output directory
    84 # OUTPUT_DIR   Override default output directory
   117   endif
   106   endif
   118   $1_JAVA_ARGS_STR := '{ $$(strip $$(foreach a, \
   107   $1_JAVA_ARGS_STR := '{ $$(strip $$(foreach a, \
   119       $$(addprefix -J, $$($1_JAVA_ARGS)) $$($1_LAUNCHER_CLASS), "$$a"$(COMMA) )) }'
   108       $$(addprefix -J, $$($1_JAVA_ARGS)) $$($1_LAUNCHER_CLASS), "$$a"$(COMMA) )) }'
   120   $1_CFLAGS += -DJAVA_ARGS=$$($1_JAVA_ARGS_STR)
   109   $1_CFLAGS += -DJAVA_ARGS=$$($1_JAVA_ARGS_STR)
   121 
   110 
   122   $1_LIBS :=
       
   123   ifeq ($(OPENJDK_TARGET_OS), macosx)
   111   ifeq ($(OPENJDK_TARGET_OS), macosx)
   124     ifeq ($$($1_MACOSX_SIGNED), true)
   112     ifeq ($$($1_MACOSX_SIGNED), true)
   125       $1_PLIST_FILE := Info-privileged.plist
   113       $1_PLIST_FILE := Info-privileged.plist
   126         $1_CODESIGN := true
   114         $1_CODESIGN := true
   127     else
   115     else
   128       $1_PLIST_FILE := Info-cmdline.plist
   116       $1_PLIST_FILE := Info-cmdline.plist
   129     endif
   117     endif
   130 
   118 
   131     $1_LDFLAGS += -Wl,-all_load \
   119     $1_LDFLAGS += -sectcreate __TEXT __info_plist $(MACOSX_PLIST_DIR)/$$($1_PLIST_FILE)
   132         -sectcreate __TEXT __info_plist $(MACOSX_PLIST_DIR)/$$($1_PLIST_FILE)
   120 
   133     ifeq ($(STATIC_BUILD), true)
   121     ifeq ($(STATIC_BUILD), true)
   134       $1_LDFLAGS += -exported_symbols_list \
   122       $1_LDFLAGS += -exported_symbols_list \
   135               $(SUPPORT_OUTPUTDIR)/build-static/exported.symbols
   123               $(SUPPORT_OUTPUTDIR)/build-static/exported.symbols
   136       $1_LIBS += \
   124       $1_LIBS += \
   137           $$(shell $(FIND) $(SUPPORT_OUTPUTDIR)/modules_libs/java.base -name "*.a") \
   125           $$(shell $(FIND) $(SUPPORT_OUTPUTDIR)/modules_libs/java.base -name "*.a") \
   141           -framework CoreFoundation \
   129           -framework CoreFoundation \
   142           -framework Foundation \
   130           -framework Foundation \
   143           -framework SystemConfiguration \
   131           -framework SystemConfiguration \
   144           -lstdc++ -liconv
   132           -lstdc++ -liconv
   145     endif
   133     endif
   146     $1_LIBS += -framework Cocoa -framework Security \
       
   147         -framework ApplicationServices
       
   148   endif
       
   149 
       
   150   ifeq ($(OPENJDK_TARGET_OS), aix)
       
   151     $1_LDFLAGS += -L$(SUPPORT_OUTPUTDIR)/native/java.base
       
   152     $1_LIBS += -ljli_static
       
   153   endif
   134   endif
   154 
   135 
   155   ifeq ($(USE_EXTERNAL_LIBZ), true)
   136   ifeq ($(USE_EXTERNAL_LIBZ), true)
   156     $1_LIBS += -lz
   137     $1_LIBS += -lz
   157   endif
   138   endif
   170           $$($1_CFLAGS), \
   151           $$($1_CFLAGS), \
   171       CFLAGS_linux := -fPIC, \
   152       CFLAGS_linux := -fPIC, \
   172       CFLAGS_solaris := -KPIC -DHAVE_GETHRTIME, \
   153       CFLAGS_solaris := -KPIC -DHAVE_GETHRTIME, \
   173       CFLAGS_windows := $$($1_CFLAGS_windows), \
   154       CFLAGS_windows := $$($1_CFLAGS_windows), \
   174       LDFLAGS := $$(LDFLAGS_JDKEXE) \
   155       LDFLAGS := $$(LDFLAGS_JDKEXE) \
   175           $$(ORIGIN_ARG) \
   156           $$(call SET_EXECUTABLE_ORIGIN) \
   176           $$($1_LDFLAGS), \
   157           $$($1_LDFLAGS), \
   177       LDFLAGS_linux := \
   158       LDFLAGS_linux := $$(call SET_EXECUTABLE_ORIGIN,/../lib) \
   178           -L$(call FindLibDirForModule, java.base)/jli, \
   159           -L$(call FindLibDirForModule, java.base), \
   179       LDFLAGS_macosx := \
   160       LDFLAGS_macosx := $$(call SET_EXECUTABLE_ORIGIN,/../lib) \
   180           -L$(call FindLibDirForModule, java.base)/jli, \
   161           -L$(call FindLibDirForModule, java.base), \
   181       LDFLAGS_solaris := $$($1_LDFLAGS_solaris) \
   162       LDFLAGS_solaris := $$(call SET_EXECUTABLE_ORIGIN,/../lib) \
   182           -L$(call FindLibDirForModule, java.base)/jli, \
   163           -L$(call FindLibDirForModule, java.base), \
       
   164       LDFLAGS_aix := -L$(SUPPORT_OUTPUTDIR)/native/java.base, \
   183       LIBS := $(JDKEXE_LIBS) $$($1_LIBS), \
   165       LIBS := $(JDKEXE_LIBS) $$($1_LIBS), \
   184       LIBS_unix := $$($1_LIBS_unix), \
   166       LIBS_linux := -ljli -lpthread $(LIBDL), \
   185       LIBS_linux := -lpthread -ljli $(LIBDL), \
   167       LIBS_macosx := -ljli -framework Cocoa -framework Security \
   186       LIBS_macosx := -ljli, \
   168           -framework ApplicationServices, \
   187       LIBS_solaris := -ljli -lthread $(LIBDL), \
   169       LIBS_solaris := -ljli -lthread $(LIBDL), \
       
   170       LIBS_aix := -ljli_static, \
   188       LIBS_windows := $$($1_WINDOWS_JLI_LIB) \
   171       LIBS_windows := $$($1_WINDOWS_JLI_LIB) \
   189           $(SUPPORT_OUTPUTDIR)/native/java.base/libjava/java.lib advapi32.lib \
   172           $(SUPPORT_OUTPUTDIR)/native/java.base/libjava/java.lib, \
   190           $$($1_LIBS_windows), \
       
   191       OUTPUT_DIR := $$($1_OUTPUT_DIR), \
   173       OUTPUT_DIR := $$($1_OUTPUT_DIR), \
   192       VERSIONINFO_RESOURCE := $$($1_VERSION_INFO_RESOURCE), \
   174       VERSIONINFO_RESOURCE := $$($1_VERSION_INFO_RESOURCE), \
   193       EXTRA_RC_FLAGS := $$($1_EXTRA_RC_FLAGS), \
   175       EXTRA_RC_FLAGS := $$($1_EXTRA_RC_FLAGS), \
   194       MANIFEST := $(JAVA_MANIFEST), \
   176       MANIFEST := $(JAVA_MANIFEST), \
   195       MANIFEST_VERSION := $(VERSION_NUMBER_FOUR_POSITIONS), \
   177       MANIFEST_VERSION := $(VERSION_NUMBER_FOUR_POSITIONS), \