blob: 0a230f7364fae0c793a436d7ec2fb4a16829193c [file] [log] [blame]
J. Duke319a3b92007-12-01 00:00:00 +00001#
2# Copyright 2003-2005 Sun Microsystems, Inc. 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. Sun designates this
8# particular file as subject to the "Classpath" exception as provided
9# by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
22# CA 95054 USA or visit www.sun.com if you need additional information or
23# have any questions.
24#
25
26#
27# Makefile for building Pack200
28#
29
30BUILDDIR = ../../../..
31PACKAGE = com.sun.java.util.jar.pack
32LIBRARY = unpack
33PRODUCT = sun
34PGRM = unpack200
35include $(BUILDDIR)/common/Defs.gmk
36
37CPLUSPLUSLIBRARY=true
38
39FILES_m = mapfile-vers
40include $(BUILDDIR)/common/Mapfile-vers.gmk
41
42#
43# Files to compile
44#
45AUTO_FILES_JAVA_DIRS = com/sun/java/util/jar/pack
46
47include FILES_cpp.gmk
48
49FILES_export = $(PKGDIR)/NativeUnpack.java
50
51#
52# Rules
53include $(BUILDDIR)/common/Library.gmk
54
55build: unpacker
56
57vpath %.cpp $(SHARE_SRC)/native/$(PKGDIR)
58
59
60
61
62
63ifeq ($(STANDALONE),true)
64 ZIPOBJDIR = $(OUTPUTDIR)/tmp/sun/java.util.zip/zip/$(OBJDIRNAME)
65
66 ZIPOBJS = $(ZIPOBJDIR)/zcrc32.$(OBJECT_SUFFIX) \
67 $(ZIPOBJDIR)/deflate.$(OBJECT_SUFFIX) \
68 $(ZIPOBJDIR)/trees.$(OBJECT_SUFFIX) \
69 $(ZIPOBJDIR)/zadler32.$(OBJECT_SUFFIX) \
70 $(ZIPOBJDIR)/zutil.$(OBJECT_SUFFIX) \
71 $(ZIPOBJDIR)/inflate.$(OBJECT_SUFFIX) \
72 $(ZIPOBJDIR)/infblock.$(OBJECT_SUFFIX) \
73 $(ZIPOBJDIR)/infcodes.$(OBJECT_SUFFIX) \
74 $(ZIPOBJDIR)/inftrees.$(OBJECT_SUFFIX) \
75 $(ZIPOBJDIR)/infutil.$(OBJECT_SUFFIX) \
76 $(ZIPOBJDIR)/inffast.$(OBJECT_SUFFIX)
77
78 ZINCLUDE=-I$(SHARE_SRC)/native/java/util/zip/zlib-1.1.3
79 OTHER_CXXFLAGS += $(ZINCLUDE)
80 LDDFLAGS += $(ZIPOBJS)
81else
82 OTHER_CXXFLAGS += -DNO_ZLIB -DUNPACK_JNI
83 OTHER_LDLIBS += $(JVMLIB)
84endif
85
86CXXFLAGS_DBG += -DFULL
87CXXFLAGS_OPT += -DPRODUCT
88CXXFLAGS_COMMON += -DFULL
89
90ifeq ($(PLATFORM), windows)
91 CXXFLAGS_COMMON += $(MS_RUNTIME_OPTION)
92 LDOUTPUT = -Fe
93
94 # J2SE name required here
95 RC_FLAGS += /D "J2SE_FNAME=$(PGRM).exe" \
96 /D "J2SE_INTERNAL_NAME=$(PGRM)" \
97 /D "J2SE_FTYPE=0x1L"
98
99 RES = $(OBJDIR)/$(PGRM).res
100
101 # Files built here do not compile with warning level 3 if warnings are fatal
102 COMPILER_WARNINGS_FATAL=false
103else
104 LDOUTPUT = -o #Have a space
105 LDDFLAGS += -lc
106 OTHER_LDLIBS += $(LIBCXX)
107# setup the list of libraries to link in...
108ifeq ($(PLATFORM), linux)
109ifeq ("$(CC_VER_MAJOR)", "3")
110 OTHER_LDLIBS += -Wl,-Bstatic -lgcc_eh -Wl,-Bdynamic
111endif
112endif #LINUX
113endif #PLATFORM
114
115UNPACK_EXE = $(BINDIR)/unpack200$(EXE_SUFFIX)
116
117UNPACK_EXE_FILES_cpp = $(filter-out jni.cpp,$(FILES_cpp))
118
119UNPACK_EXE_FILES_cpp += main.cpp
120
121UNPACK_EXE_FILES_o = $(addprefix $(COBJDIR)/, \
122 $(notdir \
123 $(patsubst %.cpp,%.$(OBJECT_SUFFIX),$(UNPACK_EXE_FILES_cpp)) \
124 ))
125
126COBJDIR = $(strip $(subst unpack,unpack-cmd,$(OBJDIR)))
127
128all: build
129
130build: prop
131
132prop:
133 $(MAKE) -C prop
134
135unpacker:
136 $(MAKE) $(UNPACK_EXE) STANDALONE=true LDMAPFLAGS_OPT= LDMAPFLAGS_DBG=
137
138ifeq ($(PLATFORM), windows)
139winres:: $(RES)
140else
141winres::
142 $(ECHO) "Resource files not required for Unix"
143endif
144
145$(UNPACK_EXE): $(UNPACK_EXE_FILES_o) winres
146 $(prep-target)
147 $(LINKER) $(LDDFLAGS) $(UNPACK_EXE_FILES_o) $(RES) $(LIBCXX) $(LDOUTPUT)$(TEMPDIR)/unpack200$(EXE_SUFFIX)
148 $(CP) $(TEMPDIR)/unpack200$(EXE_SUFFIX) $(UNPACK_EXE)
149
150
151ifeq ($(PLATFORM), windows)
152$(RES):: $(VERSIONINFO_RESOURCE)
153 $(prep-target)
154 $(RC) $(RC_FLAGS) $(CC_OBJECT_OUTPUT_FLAG)$(@) $(VERSIONINFO_RESOURCE)
155endif
156
157$(COBJDIR)/%.$(OBJECT_SUFFIX): %.cpp
158 $(prep-target)
159 $(COMPILE.cc) $(CC_OBJECT_OUTPUT_FLAG)$(COBJDIR)/$*.$(OBJECT_SUFFIX) $<
160
161#
162# Clean up.
163#
164clean::
165 $(RM) -r $(CLASSDESTDIR)/com/sun/java/util/jar/pack $(TEMPDIR)
166 $(RM) -r $(OUTPUTDIR)/tmp/$(PRODUCT)/$(PACKAGE)
167 $(MAKE) -C prop clean
168
169.PHONY: unpacker clean winres prop