Makefile revision 2362
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf#
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf# Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf#
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf# This code is free software; you can redistribute it and/or modify it
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf# under the terms of the GNU General Public License version 2 only, as
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf# published by the Free Software Foundation. Oracle designates this
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf# particular file as subject to the "Classpath" exception as provided
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf# by Oracle in the LICENSE file that accompanied this code.
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf#
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf# This code is distributed in the hope that it will be useful, but WITHOUT
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf# version 2 for more details (a copy is included in the LICENSE file that
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf# accompanied this code).
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf#
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf# You should have received a copy of the GNU General Public License version
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf# 2 along with this work; if not, write to the Free Software Foundation,
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf#
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf# or visit www.oracle.com if you need additional information or have any
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf# questions.
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf#
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf#
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf# Makefile for building Pack200
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf#
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillfBUILDDIR = ../../../..
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillfMODULE = pack200
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillfPACKAGE = com.sun.java.util.jar.pack
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillfLIBRARY = unpack
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillfPRODUCT = sun
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillfPGRM = unpack200
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillfinclude $(BUILDDIR)/common/Defs.gmk
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillfCPLUSPLUSLIBRARY=true
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillfFILES_m = mapfile-vers
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillfinclude $(BUILDDIR)/common/Mapfile-vers.gmk
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf#
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf# Files to compile
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf#
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillfAUTO_FILES_JAVA_DIRS = com/sun/java/util/jar/pack
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillfinclude FILES_cpp.gmk
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillfFILES_export = $(PKGDIR)/NativeUnpack.java
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf#
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf# Rules
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillfinclude $(BUILDDIR)/common/Library.gmk
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillfbuild: unpacker
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillfvpath %.cpp $(SHARE_SRC)/native/$(PKGDIR)
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillfifeq ($(STANDALONE),true)
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf ZIPOBJDIR = $(OUTPUTDIR)/tmp/sun/java.util.zip/zip/$(OBJDIRNAME)
ba7b222e36bac28710a7f43739283302b617e7f5Glenn Barry
ba7b222e36bac28710a7f43739283302b617e7f5Glenn Barry ZIPOBJS = $(ZIPOBJDIR)/zcrc32.$(OBJECT_SUFFIX) \
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf $(ZIPOBJDIR)/deflate.$(OBJECT_SUFFIX) \
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf $(ZIPOBJDIR)/trees.$(OBJECT_SUFFIX) \
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf $(ZIPOBJDIR)/zadler32.$(OBJECT_SUFFIX) \
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf $(ZIPOBJDIR)/compress.$(OBJECT_SUFFIX) \
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf $(ZIPOBJDIR)/zutil.$(OBJECT_SUFFIX) \
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf $(ZIPOBJDIR)/inflate.$(OBJECT_SUFFIX) \
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf $(ZIPOBJDIR)/infback.$(OBJECT_SUFFIX) \
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf $(ZIPOBJDIR)/inftrees.$(OBJECT_SUFFIX) \
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf $(ZIPOBJDIR)/inffast.$(OBJECT_SUFFIX)
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf ZINCLUDE=-I$(SHARE_SRC)/native/java/util/zip/zlib-$(ZLIB_VERSION)
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf OTHER_CXXFLAGS += $(ZINCLUDE)
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf LDDFLAGS += $(ZIPOBJS)
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillfelse
159d09a20817016f09b3ea28d1bdada4a336bb91Mark Phalan OTHER_CXXFLAGS += -DNO_ZLIB -DUNPACK_JNI
159d09a20817016f09b3ea28d1bdada4a336bb91Mark Phalan OTHER_LDLIBS += $(JVMLIB)
159d09a20817016f09b3ea28d1bdada4a336bb91Mark Phalanendif
159d09a20817016f09b3ea28d1bdada4a336bb91Mark Phalan
159d09a20817016f09b3ea28d1bdada4a336bb91Mark PhalanCXXFLAGS_DBG += -DFULL
159d09a20817016f09b3ea28d1bdada4a336bb91Mark PhalanCXXFLAGS_OPT += -DPRODUCT
159d09a20817016f09b3ea28d1bdada4a336bb91Mark PhalanCXXFLAGS_COMMON += -DFULL
159d09a20817016f09b3ea28d1bdada4a336bb91Mark Phalan
159d09a20817016f09b3ea28d1bdada4a336bb91Mark Phalanifeq ($(PLATFORM), windows)
159d09a20817016f09b3ea28d1bdada4a336bb91Mark Phalan CXXFLAGS_COMMON += $(MS_RUNTIME_OPTION)
159d09a20817016f09b3ea28d1bdada4a336bb91Mark Phalan LDOUTPUT = -Fe
159d09a20817016f09b3ea28d1bdada4a336bb91Mark Phalan
159d09a20817016f09b3ea28d1bdada4a336bb91Mark Phalan # JDK name required here
159d09a20817016f09b3ea28d1bdada4a336bb91Mark Phalan RC_FLAGS += /D "JDK_FNAME=$(PGRM).exe" \
159d09a20817016f09b3ea28d1bdada4a336bb91Mark Phalan /D "JDK_INTERNAL_NAME=$(PGRM)" \
159d09a20817016f09b3ea28d1bdada4a336bb91Mark Phalan /D "JDK_FTYPE=0x1L"
159d09a20817016f09b3ea28d1bdada4a336bb91Mark Phalan
159d09a20817016f09b3ea28d1bdada4a336bb91Mark Phalan RES = $(OBJDIR)/$(PGRM).res
159d09a20817016f09b3ea28d1bdada4a336bb91Mark Phalanelse
159d09a20817016f09b3ea28d1bdada4a336bb91Mark Phalan LDOUTPUT = -o #Have a space
159d09a20817016f09b3ea28d1bdada4a336bb91Mark Phalan LDDFLAGS += -lc
159d09a20817016f09b3ea28d1bdada4a336bb91Mark Phalan OTHER_LDLIBS += $(LIBCXX)
159d09a20817016f09b3ea28d1bdada4a336bb91Mark Phalan# setup the list of libraries to link in...
159d09a20817016f09b3ea28d1bdada4a336bb91Mark Phalanifeq ($(PLATFORM), linux)
159d09a20817016f09b3ea28d1bdada4a336bb91Mark Phalanifeq ("$(CC_VER_MAJOR)", "3")
159d09a20817016f09b3ea28d1bdada4a336bb91Mark Phalan OTHER_LDLIBS += -Wl,-Bstatic -lgcc_eh -Wl,-Bdynamic
159d09a20817016f09b3ea28d1bdada4a336bb91Mark Phalanendif
159d09a20817016f09b3ea28d1bdada4a336bb91Mark Phalanendif #LINUX
159d09a20817016f09b3ea28d1bdada4a336bb91Mark Phalanendif #PLATFORM
159d09a20817016f09b3ea28d1bdada4a336bb91Mark Phalan
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillfUNPACK_EXE = $(BINDIR)/unpack200$(EXE_SUFFIX)
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillfUNPACK_EXE_FILES_cpp = $(filter-out jni.cpp,$(FILES_cpp))
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillfUNPACK_EXE_FILES_cpp += main.cpp
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillfUNPACK_EXE_FILES_o = $(addprefix $(COBJDIR)/, \
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf $(notdir \
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf $(patsubst %.cpp,%.$(OBJECT_SUFFIX),$(UNPACK_EXE_FILES_cpp)) \
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf ))
54925bf60766fbb4f1f2d7c843721406a7b7a3fbwillf
COBJDIR = $(strip $(subst unpack,unpack-cmd,$(OBJDIR)))
all: build
build: prop pack200-tool
prop:
$(MAKE) -C prop
pack200-tool:
$(call make-launcher, pack200, com.sun.java.util.jar.pack.Driver, , --pack)
unpacker:
$(MAKE) $(UNPACK_EXE) STANDALONE=true LDMAPFLAGS_OPT= LDMAPFLAGS_DBG=
ifeq ($(PLATFORM), windows)
IMVERSIONVALUE=$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION).$(JDK_UPDATE_VER).$(COOKED_BUILD_NUMBER)
SED_ALL_MANIFEST=$(SED) -e 's%IMVERSION%$(IMVERSIONVALUE)%g'
updatefiles::
$(CAT) $(TOPDIR)/src/windows/resource/unpack200_proto.exe.manifest | $(SED_ALL_MANIFEST) > $(OBJDIR)/unpack200.exe.manifest
winres:: $(RES)
else
updatefiles::
$(ECHO) "Manifest not required for Unix"
winres::
$(ECHO) "Resource files not required for Unix"
endif
$(UNPACK_EXE): $(UNPACK_EXE_FILES_o) updatefiles winres
$(prep-target)
$(LINKER) $(LDDFLAGS) $(UNPACK_EXE_FILES_o) $(RES) $(LIBCXX) $(LDOUTPUT)$(TEMPDIR)/unpack200$(EXE_SUFFIX)
ifdef MT
$(MT) /manifest $(OBJDIR)/unpack200$(EXE_SUFFIX).manifest /outputresource:$(TEMPDIR)/unpack200$(EXE_SUFFIX);#1
endif
$(CP) $(TEMPDIR)/unpack200$(EXE_SUFFIX) $(UNPACK_EXE)
$(install-module-file)
ifeq ($(PLATFORM), windows)
$(RES):: $(VERSIONINFO_RESOURCE)
$(prep-target)
$(RC) $(RC_FLAGS) $(CC_OBJECT_OUTPUT_FLAG)$(@) $(VERSIONINFO_RESOURCE)
endif
$(COBJDIR)/%.$(OBJECT_SUFFIX): %.cpp
$(prep-target)
$(COMPILE.cc) $(CC_OBJECT_OUTPUT_FLAG)$(COBJDIR)/$*.$(OBJECT_SUFFIX) $<
#
# Clean up.
#
clean::
$(RM) -r $(CLASSDESTDIR)/com/sun/java/util/jar/pack $(TEMPDIR)
$(RM) -r $(OUTPUTDIR)/tmp/$(PRODUCT)/$(PACKAGE)
$(MAKE) -C prop clean
.PHONY: unpacker clean winres prop