Makefile revision 5353
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normand#
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normand# Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normand# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normand#
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normand# This code is free software; you can redistribute it and/or modify it
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normand# under the terms of the GNU General Public License version 2 only, as
9afe19d634946d50eab30e3b90cb5cebcde39eeaDaniel Lezcano# published by the Free Software Foundation. Oracle designates this
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normand# particular file as subject to the "Classpath" exception as provided
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normand# by Oracle in the LICENSE file that accompanied this code.
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normand#
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normand# This code is distributed in the hope that it will be useful, but WITHOUT
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normand# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normand# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normand# version 2 for more details (a copy is included in the LICENSE file that
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normand# accompanied this code).
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normand#
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normand# You should have received a copy of the GNU General Public License version
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normand# 2 along with this work; if not, write to the Free Software Foundation,
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normand# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normand#
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normand# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normand# or visit www.oracle.com if you need additional information or have any
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normand# questions.
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normand#
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normand
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normand#
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normand# Makefile for building Pack200
91480a0f0a62732f3115d556b689d62d574294aeDaniel Lezcano#
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normand
724e753cb0055b84f896522e8c5ec45ad996c195Michel NormandBUILDDIR = ../../../..
724e753cb0055b84f896522e8c5ec45ad996c195Michel NormandPACKAGE = com.sun.java.util.jar.pack
724e753cb0055b84f896522e8c5ec45ad996c195Michel NormandLIBRARY = unpack
2a59a68183e55e38beedb6442938e31eb7d4749cSerge HallynPRODUCT = sun
2a59a68183e55e38beedb6442938e31eb7d4749cSerge HallynPGRM = unpack200
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normandinclude $(BUILDDIR)/common/Defs.gmk
00b3c2e2845792face31017e905f9b8b4ea48653Cedric Le Goater
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight EngenCPLUSPLUSLIBRARY=true
00b3c2e2845792face31017e905f9b8b4ea48653Cedric Le Goater
00b3c2e2845792face31017e905f9b8b4ea48653Cedric Le GoaterFILES_m = mapfile-vers
2a59a68183e55e38beedb6442938e31eb7d4749cSerge Hallyninclude $(BUILDDIR)/common/Mapfile-vers.gmk
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normand
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normand#
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen# Files to compile
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normand#
724e753cb0055b84f896522e8c5ec45ad996c195Michel NormandAUTO_FILES_JAVA_DIRS = com/sun/java/util/jar/pack
adaeaa992a6a7a6af923416a1c36b63858055533Daniel Lezcano
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normandinclude FILES_cpp.gmk
ded1d23faabc31a5bbbf5f52c17423c59f63e23aDaniel Lezcano
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight EngenFILES_export = $(PKGDIR)/NativeUnpack.java
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen#
ded1d23faabc31a5bbbf5f52c17423c59f63e23aDaniel Lezcano# Rules
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engeninclude $(BUILDDIR)/common/Library.gmk
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen
ded1d23faabc31a5bbbf5f52c17423c59f63e23aDaniel Lezcanobuild: unpacker
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen
ded1d23faabc31a5bbbf5f52c17423c59f63e23aDaniel Lezcanovpath %.cpp $(SHARE_SRC)/native/$(PKGDIR)
ded1d23faabc31a5bbbf5f52c17423c59f63e23aDaniel Lezcano
ded1d23faabc31a5bbbf5f52c17423c59f63e23aDaniel Lezcanoifeq ($(STANDALONE),true)
ded1d23faabc31a5bbbf5f52c17423c59f63e23aDaniel Lezcano ifneq ($(SYSTEM_ZLIB),true)
ded1d23faabc31a5bbbf5f52c17423c59f63e23aDaniel Lezcano ZIPOBJDIR = $(OUTPUTDIR)/tmp/sun/java.util.zip/zip/$(OBJDIRNAME)
ded1d23faabc31a5bbbf5f52c17423c59f63e23aDaniel Lezcano
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normand ZIPOBJS = $(ZIPOBJDIR)/zcrc32.$(OBJECT_SUFFIX) \
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normand $(ZIPOBJDIR)/deflate.$(OBJECT_SUFFIX) \
13f5be6276100761eaeddd77b7b55fbec6b0c9abSerge Hallyn $(ZIPOBJDIR)/trees.$(OBJECT_SUFFIX) \
13f5be6276100761eaeddd77b7b55fbec6b0c9abSerge Hallyn $(ZIPOBJDIR)/zadler32.$(OBJECT_SUFFIX) \
13f5be6276100761eaeddd77b7b55fbec6b0c9abSerge Hallyn $(ZIPOBJDIR)/compress.$(OBJECT_SUFFIX) \
67e571de63a8e465dc8f1b17e16744a1d3fb552cStéphane Graber $(ZIPOBJDIR)/zutil.$(OBJECT_SUFFIX) \
2a59a68183e55e38beedb6442938e31eb7d4749cSerge Hallyn $(ZIPOBJDIR)/inflate.$(OBJECT_SUFFIX) \
13f5be6276100761eaeddd77b7b55fbec6b0c9abSerge Hallyn $(ZIPOBJDIR)/infback.$(OBJECT_SUFFIX) \
13f5be6276100761eaeddd77b7b55fbec6b0c9abSerge Hallyn $(ZIPOBJDIR)/inftrees.$(OBJECT_SUFFIX) \
13f5be6276100761eaeddd77b7b55fbec6b0c9abSerge Hallyn $(ZIPOBJDIR)/inffast.$(OBJECT_SUFFIX)
13f5be6276100761eaeddd77b7b55fbec6b0c9abSerge Hallyn
13f5be6276100761eaeddd77b7b55fbec6b0c9abSerge Hallyn ZINCLUDE=-I$(SHARE_SRC)/native/java/util/zip/zlib-$(ZLIB_VERSION)
13f5be6276100761eaeddd77b7b55fbec6b0c9abSerge Hallyn OTHER_CXXFLAGS += $(ZINCLUDE)
13f5be6276100761eaeddd77b7b55fbec6b0c9abSerge Hallyn LDDFLAGS += $(ZIPOBJS)
2a59a68183e55e38beedb6442938e31eb7d4749cSerge Hallyn else
13f5be6276100761eaeddd77b7b55fbec6b0c9abSerge Hallyn LDDFLAGS += $(ZLIB_LIBS)
13f5be6276100761eaeddd77b7b55fbec6b0c9abSerge Hallyn OTHER_CXXFLAGS += $(ZLIB_CFLAGS) -DSYSTEM_ZLIB
2a59a68183e55e38beedb6442938e31eb7d4749cSerge Hallyn endif
2a59a68183e55e38beedb6442938e31eb7d4749cSerge Hallynelse
2a59a68183e55e38beedb6442938e31eb7d4749cSerge Hallyn OTHER_CXXFLAGS += -DNO_ZLIB -DUNPACK_JNI
2a59a68183e55e38beedb6442938e31eb7d4749cSerge Hallyn OTHER_LDLIBS += $(JVMLIB)
2a59a68183e55e38beedb6442938e31eb7d4749cSerge Hallynendif
2a59a68183e55e38beedb6442938e31eb7d4749cSerge Hallyn
ded1d23faabc31a5bbbf5f52c17423c59f63e23aDaniel LezcanoCXXFLAGS_DBG += -DFULL
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight EngenCXXFLAGS_OPT += -DPRODUCT
724e753cb0055b84f896522e8c5ec45ad996c195Michel NormandCXXFLAGS_COMMON += -DFULL
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engenifeq ($(PLATFORM), windows)
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen CXXFLAGS_COMMON += $(MS_RUNTIME_OPTION)
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen LDOUTPUT = -Fe
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen # JDK name required here
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen RC_FLAGS += /D "JDK_FNAME=$(PGRM).exe" \
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen /D "JDK_INTERNAL_NAME=$(PGRM)" \
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen /D "JDK_FTYPE=0x1L"
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normand
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen RES = $(OBJDIR)/$(PGRM).res
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engenelse
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen LDOUTPUT = -o #Have a space
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen LDDFLAGS += -lc
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen OTHER_LDLIBS += $(LIBCXX)
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen# setup the list of libraries to link in...
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engenifeq ($(PLATFORM), linux)
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engenifeq ("$(CC_VER_MAJOR)", "3")
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen OTHER_LDLIBS += -Wl,-Bstatic -lgcc_eh -Wl,-Bdynamic
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engenendif
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engenendif #LINUX
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engenendif #PLATFORM
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight EngenUNPACK_EXE = $(BINDIR)/unpack200$(EXE_SUFFIX)
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight EngenUNPACK_EXE_FILES_cpp = $(filter-out jni.cpp,$(FILES_cpp))
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight EngenUNPACK_EXE_FILES_cpp += main.cpp
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight EngenUNPACK_EXE_FILES_o = $(addprefix $(COBJDIR)/, \
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen $(notdir \
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen $(patsubst %.cpp,%.$(OBJECT_SUFFIX),$(UNPACK_EXE_FILES_cpp)) \
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen ))
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight EngenCOBJDIR = $(strip $(subst unpack,unpack-cmd,$(OBJDIR)))
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engenall: build
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engenbuild: prop pack200-tool
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engenprop:
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen $(MAKE) -C prop
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engenpack200-tool:
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen $(call make-launcher, pack200, com.sun.java.util.jar.pack.Driver, , --pack)
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen# ignore mapfile for non-product binary
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engenunpacker:
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen $(MAKE) $(UNPACK_EXE) STANDALONE=true LDMAPFLAGS_DBG=
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engenifeq ($(PLATFORM), windows)
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight EngenIMVERSIONVALUE=$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION).$(JDK_UPDATE_VER).$(COOKED_BUILD_NUMBER)
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight EngenSED_ALL_MANIFEST=$(SED) -e 's%IMVERSION%$(IMVERSIONVALUE)%g'
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engenupdatefiles::
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen $(CAT) $(TOPDIR)/src/windows/resource/unpack200_proto.exe.manifest | $(SED_ALL_MANIFEST) > $(OBJDIR)/unpack200.exe.manifest
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engenwinres:: $(RES)
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engenelse
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engenupdatefiles::
ae5c8b8ed5feb9a47c5007c986ce01ea39b5075fSerge Hallyn $(ECHO) "Manifest not required for Unix"
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engenwinres::
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen $(ECHO) "Resource files not required for Unix"
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engenendif
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen
2ac9aafca6793e74587df7b81a1b27a71a16caa9Serge Hallyn# Mapfile-vers.gmk, does not copy over the mapfile-vers-unpack200, when
2ac9aafca6793e74587df7b81a1b27a71a16caa9Serge Hallyn# the make utiliy is re-invoked, as in this case. In order to workaround
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen# this special case, the mapfile required for the unpack200 command, is
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen# explicitly copied over to the expected location.
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen$(UNPACK_EXE): $(UNPACK_EXE_FILES_o) updatefiles winres
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen $(prep-target)
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen $(RM) $(TEMPDIR)/mapfile-vers
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen $(CP) mapfile-vers-unpack200 $(TEMPDIR)/mapfile-vers
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen $(LINKER) $(LDDFLAGS) $(UNPACK_EXE_FILES_o) $(RES) $(LIBCXX) $(LDOUTPUT)$(TEMPDIR)/unpack200$(EXE_SUFFIX)
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engenifdef MT
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen $(MT) /manifest $(OBJDIR)/unpack200$(EXE_SUFFIX).manifest /outputresource:$(TEMPDIR)/unpack200$(EXE_SUFFIX);#1
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engenendif
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen $(CP) $(TEMPDIR)/unpack200$(EXE_SUFFIX) $(UNPACK_EXE)
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen @$(call binary_file_verification,$@)
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engenifeq ($(PLATFORM), windows)
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normand$(RES):: $(VERSIONINFO_RESOURCE)
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normand $(prep-target)
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normand $(RC) $(RC_FLAGS) $(CC_OBJECT_OUTPUT_FLAG)$(@) $(VERSIONINFO_RESOURCE)
724e753cb0055b84f896522e8c5ec45ad996c195Michel Normandendif
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen$(COBJDIR)/%.$(OBJECT_SUFFIX): %.cpp
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen $(prep-target)
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen $(COMPILE.cc) $(CC_OBJECT_OUTPUT_FLAG)$(COBJDIR)/$*.$(OBJECT_SUFFIX) $<
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen#
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen# Clean up.
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen#
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engenclean::
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen $(RM) -r $(CLASSDESTDIR)/com/sun/java/util/jar/pack $(TEMPDIR)
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen $(RM) -r $(OUTPUTDIR)/tmp/$(PRODUCT)/$(PACKAGE)
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen $(MAKE) -C prop clean
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen.PHONY: unpacker clean winres prop
ef6e34eec8d5a9f1447462d6080facb674b3ccdbDwight Engen