make/launcher/Launcher-jdk.pack.gmk
author ihse
Tue, 18 Sep 2018 13:32:40 +0200
changeset 51783 4482acfef2a5
parent 50884 11b3e9c1aa5e
child 51853 ec62d6cab037
child 56873 af61810ccd5b
child 56900 d5d542d50e3c
permissions -rw-r--r--
8210729: Clean up macosx static library handling Reviewed-by: erikj

#
# Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#

include LauncherCommon.gmk

$(eval $(call SetupBuildLauncher, pack200, \
    MAIN_MODULE := java.base, \
    MAIN_CLASS := com.sun.java.util.jar.pack.Driver, \
))

################################################################################
# The order of the object files on the link command line affects the size of the resulting
# binary (at least on linux) which causes the size to differ between old and new build.

# Tell the compiler not to export any functions unless declared so in
# the source code. On Windows, this is the default and cannot be changed.
# On Mac, we have always exported all symbols, probably due to oversight
# and/or misunderstanding. To emulate this, don't hide any symbols
# by default.
# On AIX/xlc we need at least xlc 13.1 for the symbol hiding
# Also provide an override for non-conformant libraries.
ifeq ($(TOOLCHAIN_TYPE), gcc)
  CXXFLAGS_JDKEXE += -fvisibility=hidden
  LDFLAGS_JDKEXE += -Wl,--exclude-libs,ALL
else ifeq ($(TOOLCHAIN_TYPE), clang)
  ifneq ($(OPENJDK_TARGET_OS), macosx)
    CXXFLAGS_JDKEXE += -fvisibility=hidden
  endif
else ifeq ($(TOOLCHAIN_TYPE), solstudio)
  CXXFLAGS_JDKEXE += -xldscope=hidden
else ifeq ($(TOOLCHAIN_TYPE), xlc)
  ifneq ($(CC_VERSION_NUMBER), 12.1)
    CXXFLAGS_JDKEXE += -qvisibility=hidden
  endif
endif

UNPACKEXE_SRC := $(TOPDIR)/src/jdk.pack/share/native/common-unpack \
    $(TOPDIR)/src/jdk.pack/share/native/unpack200
UNPACKEXE_CFLAGS := -I$(TOPDIR)/src/jdk.pack/share/native/common-unpack \
    -I$(TOPDIR)/src/java.base/share/native/libjava \
    -I$(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjava

ifeq ($(USE_EXTERNAL_LIBZ), true)
  UNPACKEXE_CFLAGS += -DSYSTEM_ZLIB
  UNPACKEXE_LIBS := -lz
else
  UNPACKEXE_CFLAGS += -I$(TOPDIR)/src/java.base/share/native/libzip/zlib
  UNPACKEXE_ZIPOBJS := $(SUPPORT_OUTPUTDIR)/native/java.base/libzip/zcrc32$(OBJ_SUFFIX) \
      $(SUPPORT_OUTPUTDIR)/native/java.base/libzip/deflate$(OBJ_SUFFIX) \
      $(SUPPORT_OUTPUTDIR)/native/java.base/libzip/trees$(OBJ_SUFFIX) \
      $(SUPPORT_OUTPUTDIR)/native/java.base/libzip/zadler32$(OBJ_SUFFIX) \
      $(SUPPORT_OUTPUTDIR)/native/java.base/libzip/compress$(OBJ_SUFFIX) \
      $(SUPPORT_OUTPUTDIR)/native/java.base/libzip/zutil$(OBJ_SUFFIX) \
      $(SUPPORT_OUTPUTDIR)/native/java.base/libzip/inflate$(OBJ_SUFFIX) \
      $(SUPPORT_OUTPUTDIR)/native/java.base/libzip/infback$(OBJ_SUFFIX) \
      $(SUPPORT_OUTPUTDIR)/native/java.base/libzip/inftrees$(OBJ_SUFFIX) \
      $(SUPPORT_OUTPUTDIR)/native/java.base/libzip/inffast$(OBJ_SUFFIX)

endif

$(eval $(call SetupJdkExecutable, BUILD_UNPACKEXE, \
    NAME := unpack200, \
    SRC := $(UNPACKEXE_SRC), \
    TOOLCHAIN := TOOLCHAIN_LINK_CXX, \
    OPTIMIZATION := LOW, \
    CFLAGS := $(UNPACKEXE_CFLAGS) $(CXXFLAGS_JDKEXE) -DFULL, \
    CFLAGS_release := -DPRODUCT, \
    CFLAGS_linux := -fPIC, \
    CFLAGS_solaris := -KPIC, \
    CFLAGS_macosx := -fPIC, \
    LDFLAGS := $(UNPACKEXE_ZIPOBJS) \
        $(LDFLAGS_JDKEXE) $(LDFLAGS_CXX_JDK) \
        $(call SET_SHARED_LIBRARY_ORIGIN), \
    LIBS := $(UNPACKEXE_LIBS) $(LIBCXX), \
    OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/unpackexe, \
    MANIFEST := $(TOPDIR)/src/jdk.pack/windows/native/unpack200/unpack200_proto.exe.manifest, \
    MANIFEST_VERSION := $(VERSION_NUMBER_FOUR_POSITIONS), \
))

ifneq ($(USE_EXTERNAL_LIBZ), true)

  $(BUILD_UNPACKEXE): $(UNPACKEXE_ZIPOBJS)

endif

TARGETS += $(BUILD_UNPACKEXE)

################################################################################