annotate build/linux/makefiles/vm.make @ 0:a61af66fc99e jdk7-b24

Initial load
author duke
date Sat, 01 Dec 2007 00:00:00 +0000
parents
children c7c777385a15
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1 #
a61af66fc99e Initial load
duke
parents:
diff changeset
2 # Copyright 1999-2007 Sun Microsystems, Inc. All Rights Reserved.
a61af66fc99e Initial load
duke
parents:
diff changeset
3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
a61af66fc99e Initial load
duke
parents:
diff changeset
4 #
a61af66fc99e Initial load
duke
parents:
diff changeset
5 # This code is free software; you can redistribute it and/or modify it
a61af66fc99e Initial load
duke
parents:
diff changeset
6 # under the terms of the GNU General Public License version 2 only, as
a61af66fc99e Initial load
duke
parents:
diff changeset
7 # published by the Free Software Foundation.
a61af66fc99e Initial load
duke
parents:
diff changeset
8 #
a61af66fc99e Initial load
duke
parents:
diff changeset
9 # This code is distributed in the hope that it will be useful, but WITHOUT
a61af66fc99e Initial load
duke
parents:
diff changeset
10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
a61af66fc99e Initial load
duke
parents:
diff changeset
11 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
a61af66fc99e Initial load
duke
parents:
diff changeset
12 # version 2 for more details (a copy is included in the LICENSE file that
a61af66fc99e Initial load
duke
parents:
diff changeset
13 # accompanied this code).
a61af66fc99e Initial load
duke
parents:
diff changeset
14 #
a61af66fc99e Initial load
duke
parents:
diff changeset
15 # You should have received a copy of the GNU General Public License version
a61af66fc99e Initial load
duke
parents:
diff changeset
16 # 2 along with this work; if not, write to the Free Software Foundation,
a61af66fc99e Initial load
duke
parents:
diff changeset
17 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
a61af66fc99e Initial load
duke
parents:
diff changeset
18 #
a61af66fc99e Initial load
duke
parents:
diff changeset
19 # Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
a61af66fc99e Initial load
duke
parents:
diff changeset
20 # CA 95054 USA or visit www.sun.com if you need additional information or
a61af66fc99e Initial load
duke
parents:
diff changeset
21 # have any questions.
a61af66fc99e Initial load
duke
parents:
diff changeset
22 #
a61af66fc99e Initial load
duke
parents:
diff changeset
23 #
a61af66fc99e Initial load
duke
parents:
diff changeset
24
a61af66fc99e Initial load
duke
parents:
diff changeset
25 # Rules to build JVM and related libraries, included from vm.make in the build
a61af66fc99e Initial load
duke
parents:
diff changeset
26 # directory.
a61af66fc99e Initial load
duke
parents:
diff changeset
27
a61af66fc99e Initial load
duke
parents:
diff changeset
28 # Common build rules.
a61af66fc99e Initial load
duke
parents:
diff changeset
29 MAKEFILES_DIR=$(GAMMADIR)/build/$(Platform_os_family)/makefiles
a61af66fc99e Initial load
duke
parents:
diff changeset
30 include $(MAKEFILES_DIR)/rules.make
a61af66fc99e Initial load
duke
parents:
diff changeset
31
a61af66fc99e Initial load
duke
parents:
diff changeset
32 default: build
a61af66fc99e Initial load
duke
parents:
diff changeset
33
a61af66fc99e Initial load
duke
parents:
diff changeset
34 #----------------------------------------------------------------------
a61af66fc99e Initial load
duke
parents:
diff changeset
35 # Defs
a61af66fc99e Initial load
duke
parents:
diff changeset
36
a61af66fc99e Initial load
duke
parents:
diff changeset
37 GENERATED = ../generated
a61af66fc99e Initial load
duke
parents:
diff changeset
38
a61af66fc99e Initial load
duke
parents:
diff changeset
39 # read a generated file defining the set of .o's and the .o .h dependencies
a61af66fc99e Initial load
duke
parents:
diff changeset
40 include $(GENERATED)/Dependencies
a61af66fc99e Initial load
duke
parents:
diff changeset
41
a61af66fc99e Initial load
duke
parents:
diff changeset
42 # read machine-specific adjustments (%%% should do this via buildtree.make?)
a61af66fc99e Initial load
duke
parents:
diff changeset
43 include $(MAKEFILES_DIR)/$(BUILDARCH).make
a61af66fc99e Initial load
duke
parents:
diff changeset
44
a61af66fc99e Initial load
duke
parents:
diff changeset
45 # set VPATH so make knows where to look for source files
a61af66fc99e Initial load
duke
parents:
diff changeset
46 # Src_Dirs is everything in src/share/vm/*, plus the right os/*/vm and cpu/*/vm
a61af66fc99e Initial load
duke
parents:
diff changeset
47 # The incls directory contains generated header file lists for inclusion.
a61af66fc99e Initial load
duke
parents:
diff changeset
48 # The adfiles directory contains ad_<arch>.[ch]pp.
a61af66fc99e Initial load
duke
parents:
diff changeset
49 # The jvmtifiles directory contains jvmti*.[ch]pp
a61af66fc99e Initial load
duke
parents:
diff changeset
50 Src_Dirs_V = $(GENERATED)/adfiles $(GENERATED)/jvmtifiles ${Src_Dirs} $(GENERATED)/incls
a61af66fc99e Initial load
duke
parents:
diff changeset
51 VPATH += $(Src_Dirs_V:%=%:)
a61af66fc99e Initial load
duke
parents:
diff changeset
52
a61af66fc99e Initial load
duke
parents:
diff changeset
53 # set INCLUDES for C preprocessor
a61af66fc99e Initial load
duke
parents:
diff changeset
54 Src_Dirs_I = $(PRECOMPILED_HEADER_DIR) $(GENERATED)/adfiles $(GENERATED)/jvmtifiles ${Src_Dirs} $(GENERATED)
a61af66fc99e Initial load
duke
parents:
diff changeset
55 INCLUDES += $(Src_Dirs_I:%=-I%)
a61af66fc99e Initial load
duke
parents:
diff changeset
56
a61af66fc99e Initial load
duke
parents:
diff changeset
57 ifeq (${VERSION}, debug)
a61af66fc99e Initial load
duke
parents:
diff changeset
58 SYMFLAG = -g
a61af66fc99e Initial load
duke
parents:
diff changeset
59 else
a61af66fc99e Initial load
duke
parents:
diff changeset
60 SYMFLAG =
a61af66fc99e Initial load
duke
parents:
diff changeset
61 endif
a61af66fc99e Initial load
duke
parents:
diff changeset
62
a61af66fc99e Initial load
duke
parents:
diff changeset
63 # HOTSPOT_RELEASE_VERSION and HOTSPOT_BUILD_VERSION are defined
a61af66fc99e Initial load
duke
parents:
diff changeset
64 # in $(GAMMADIR)/make/defs.make
a61af66fc99e Initial load
duke
parents:
diff changeset
65 ifeq ($(HOTSPOT_BUILD_VERSION),)
a61af66fc99e Initial load
duke
parents:
diff changeset
66 BUILD_VERSION = -DHOTSPOT_RELEASE_VERSION="\"$(HOTSPOT_RELEASE_VERSION)\""
a61af66fc99e Initial load
duke
parents:
diff changeset
67 else
a61af66fc99e Initial load
duke
parents:
diff changeset
68 BUILD_VERSION = -DHOTSPOT_RELEASE_VERSION="\"$(HOTSPOT_RELEASE_VERSION)-$(HOTSPOT_BUILD_VERSION)\""
a61af66fc99e Initial load
duke
parents:
diff changeset
69 endif
a61af66fc99e Initial load
duke
parents:
diff changeset
70
a61af66fc99e Initial load
duke
parents:
diff changeset
71 # The following variables are defined in the generated flags.make file.
a61af66fc99e Initial load
duke
parents:
diff changeset
72 BUILD_VERSION = -DHOTSPOT_RELEASE_VERSION="\"$(HS_BUILD_VER)\""
a61af66fc99e Initial load
duke
parents:
diff changeset
73 JRE_VERSION = -DJRE_RELEASE_VERSION="\"$(JRE_RELEASE_VER)\""
a61af66fc99e Initial load
duke
parents:
diff changeset
74 BUILD_TARGET = -DHOTSPOT_BUILD_TARGET="\"$(TARGET)\""
a61af66fc99e Initial load
duke
parents:
diff changeset
75 BUILD_USER = -DHOTSPOT_BUILD_USER="\"$(HOTSPOT_BUILD_USER)\""
a61af66fc99e Initial load
duke
parents:
diff changeset
76 VM_DISTRO = -DHOTSPOT_VM_DISTRO="\"$(HOTSPOT_VM_DISTRO)\""
a61af66fc99e Initial load
duke
parents:
diff changeset
77
a61af66fc99e Initial load
duke
parents:
diff changeset
78 CPPFLAGS = \
a61af66fc99e Initial load
duke
parents:
diff changeset
79 ${SYSDEFS} \
a61af66fc99e Initial load
duke
parents:
diff changeset
80 ${INCLUDES} \
a61af66fc99e Initial load
duke
parents:
diff changeset
81 ${BUILD_VERSION} \
a61af66fc99e Initial load
duke
parents:
diff changeset
82 ${BUILD_TARGET} \
a61af66fc99e Initial load
duke
parents:
diff changeset
83 ${BUILD_USER} \
a61af66fc99e Initial load
duke
parents:
diff changeset
84 ${JRE_VERSION} \
a61af66fc99e Initial load
duke
parents:
diff changeset
85 ${VM_DISTRO}
a61af66fc99e Initial load
duke
parents:
diff changeset
86
a61af66fc99e Initial load
duke
parents:
diff changeset
87 # CFLAGS_WARN holds compiler options to suppress/enable warnings.
a61af66fc99e Initial load
duke
parents:
diff changeset
88 CFLAGS += $(CFLAGS_WARN/BYFILE)
a61af66fc99e Initial load
duke
parents:
diff changeset
89
a61af66fc99e Initial load
duke
parents:
diff changeset
90 # Do not use C++ exception handling
a61af66fc99e Initial load
duke
parents:
diff changeset
91 CFLAGS += $(CFLAGS/NOEX)
a61af66fc99e Initial load
duke
parents:
diff changeset
92
a61af66fc99e Initial load
duke
parents:
diff changeset
93 # Extra flags from gnumake's invocation or environment
a61af66fc99e Initial load
duke
parents:
diff changeset
94 CFLAGS += $(EXTRA_CFLAGS)
a61af66fc99e Initial load
duke
parents:
diff changeset
95
a61af66fc99e Initial load
duke
parents:
diff changeset
96 LIBS += -lm -ldl -lpthread
a61af66fc99e Initial load
duke
parents:
diff changeset
97
a61af66fc99e Initial load
duke
parents:
diff changeset
98 # By default, link the *.o into the library, not the executable.
a61af66fc99e Initial load
duke
parents:
diff changeset
99 LINK_INTO$(LINK_INTO) = LIBJVM
a61af66fc99e Initial load
duke
parents:
diff changeset
100
a61af66fc99e Initial load
duke
parents:
diff changeset
101 JDK_LIBDIR = $(JAVA_HOME)/jre/lib/$(LIBARCH)
a61af66fc99e Initial load
duke
parents:
diff changeset
102
a61af66fc99e Initial load
duke
parents:
diff changeset
103 #----------------------------------------------------------------------
a61af66fc99e Initial load
duke
parents:
diff changeset
104 # jvm_db & dtrace
a61af66fc99e Initial load
duke
parents:
diff changeset
105 include $(MAKEFILES_DIR)/dtrace.make
a61af66fc99e Initial load
duke
parents:
diff changeset
106
a61af66fc99e Initial load
duke
parents:
diff changeset
107 #----------------------------------------------------------------------
a61af66fc99e Initial load
duke
parents:
diff changeset
108 # JVM
a61af66fc99e Initial load
duke
parents:
diff changeset
109
a61af66fc99e Initial load
duke
parents:
diff changeset
110 JVM = jvm$(G_SUFFIX)
a61af66fc99e Initial load
duke
parents:
diff changeset
111 LIBJVM = lib$(JVM).so
a61af66fc99e Initial load
duke
parents:
diff changeset
112
a61af66fc99e Initial load
duke
parents:
diff changeset
113 JVM_OBJ_FILES = $(Obj_Files)
a61af66fc99e Initial load
duke
parents:
diff changeset
114
a61af66fc99e Initial load
duke
parents:
diff changeset
115 vm_version.o: $(filter-out vm_version.o,$(JVM_OBJ_FILES))
a61af66fc99e Initial load
duke
parents:
diff changeset
116
a61af66fc99e Initial load
duke
parents:
diff changeset
117 mapfile : $(MAPFILE)
a61af66fc99e Initial load
duke
parents:
diff changeset
118 rm -f $@
a61af66fc99e Initial load
duke
parents:
diff changeset
119 cat $^ > $@
a61af66fc99e Initial load
duke
parents:
diff changeset
120
a61af66fc99e Initial load
duke
parents:
diff changeset
121 mapfile_reorder : mapfile $(REORDERFILE)
a61af66fc99e Initial load
duke
parents:
diff changeset
122 rm -f $@
a61af66fc99e Initial load
duke
parents:
diff changeset
123 cat $^ > $@
a61af66fc99e Initial load
duke
parents:
diff changeset
124
a61af66fc99e Initial load
duke
parents:
diff changeset
125 STATIC_CXX = true
a61af66fc99e Initial load
duke
parents:
diff changeset
126
a61af66fc99e Initial load
duke
parents:
diff changeset
127 ifeq ($(LINK_INTO),AOUT)
a61af66fc99e Initial load
duke
parents:
diff changeset
128 LIBJVM.o =
a61af66fc99e Initial load
duke
parents:
diff changeset
129 LIBJVM_MAPFILE =
a61af66fc99e Initial load
duke
parents:
diff changeset
130 LIBS_VM = $(LIBS)
a61af66fc99e Initial load
duke
parents:
diff changeset
131 else
a61af66fc99e Initial load
duke
parents:
diff changeset
132 LIBJVM.o = $(JVM_OBJ_FILES)
a61af66fc99e Initial load
duke
parents:
diff changeset
133 LIBJVM_MAPFILE$(LDNOMAP) = mapfile_reorder
a61af66fc99e Initial load
duke
parents:
diff changeset
134 LFLAGS_VM$(LDNOMAP) += $(MAPFLAG:FILENAME=$(LIBJVM_MAPFILE))
a61af66fc99e Initial load
duke
parents:
diff changeset
135 LFLAGS_VM += $(SONAMEFLAG:SONAME=$(LIBJVM))
a61af66fc99e Initial load
duke
parents:
diff changeset
136
a61af66fc99e Initial load
duke
parents:
diff changeset
137 # JVM is statically linked with libgcc[_s] and libstdc++; this is needed to
a61af66fc99e Initial load
duke
parents:
diff changeset
138 # get around library dependency and compatibility issues. Must use gcc not
a61af66fc99e Initial load
duke
parents:
diff changeset
139 # g++ to link.
a61af66fc99e Initial load
duke
parents:
diff changeset
140 ifeq ($(STATIC_CXX), true)
a61af66fc99e Initial load
duke
parents:
diff changeset
141 LFLAGS_VM += $(STATIC_LIBGCC)
a61af66fc99e Initial load
duke
parents:
diff changeset
142 LIBS_VM += $(STATIC_STDCXX)
a61af66fc99e Initial load
duke
parents:
diff changeset
143 else
a61af66fc99e Initial load
duke
parents:
diff changeset
144 LIBS_VM += -lstdc++
a61af66fc99e Initial load
duke
parents:
diff changeset
145 endif
a61af66fc99e Initial load
duke
parents:
diff changeset
146
a61af66fc99e Initial load
duke
parents:
diff changeset
147 LIBS_VM += $(LIBS)
a61af66fc99e Initial load
duke
parents:
diff changeset
148 endif
a61af66fc99e Initial load
duke
parents:
diff changeset
149
a61af66fc99e Initial load
duke
parents:
diff changeset
150 LINK_VM = $(LINK_LIB.c)
a61af66fc99e Initial load
duke
parents:
diff changeset
151
a61af66fc99e Initial load
duke
parents:
diff changeset
152 # rule for building precompiled header
a61af66fc99e Initial load
duke
parents:
diff changeset
153 $(PRECOMPILED_HEADER): $(Precompiled_Files)
a61af66fc99e Initial load
duke
parents:
diff changeset
154 $(QUIETLY) echo Generating precompiled header $@
a61af66fc99e Initial load
duke
parents:
diff changeset
155 $(QUIETLY) mkdir -p $(PRECOMPILED_HEADER_DIR)/incls
a61af66fc99e Initial load
duke
parents:
diff changeset
156 $(QUIETLY) $(COMPILE.CC) -x c++-header -c $(GENERATED)/incls/_precompiled.incl -o $@ $(COMPILE_DONE)
a61af66fc99e Initial load
duke
parents:
diff changeset
157
a61af66fc99e Initial load
duke
parents:
diff changeset
158 # making the library:
a61af66fc99e Initial load
duke
parents:
diff changeset
159
a61af66fc99e Initial load
duke
parents:
diff changeset
160 ifneq ($(JVM_BASE_ADDR),)
a61af66fc99e Initial load
duke
parents:
diff changeset
161 # By default shared library is linked at base address == 0. Modify the
a61af66fc99e Initial load
duke
parents:
diff changeset
162 # linker script if JVM prefers a different base location. It can also be
a61af66fc99e Initial load
duke
parents:
diff changeset
163 # implemented with 'prelink -r'. But 'prelink' is not (yet) available on
a61af66fc99e Initial load
duke
parents:
diff changeset
164 # our build platform (AS-2.1).
a61af66fc99e Initial load
duke
parents:
diff changeset
165 LD_SCRIPT = libjvm.so.lds
a61af66fc99e Initial load
duke
parents:
diff changeset
166 $(LD_SCRIPT): $(LIBJVM_MAPFILE)
a61af66fc99e Initial load
duke
parents:
diff changeset
167 $(QUIETLY) { \
a61af66fc99e Initial load
duke
parents:
diff changeset
168 rm -rf $@; \
a61af66fc99e Initial load
duke
parents:
diff changeset
169 $(LINK_VM) -Wl,--verbose $(LFLAGS_VM) 2>&1 | \
a61af66fc99e Initial load
duke
parents:
diff changeset
170 sed -e '/^======/,/^======/!d' \
a61af66fc99e Initial load
duke
parents:
diff changeset
171 -e '/^======/d' \
a61af66fc99e Initial load
duke
parents:
diff changeset
172 -e 's/0\( + SIZEOF_HEADERS\)/$(JVM_BASE_ADDR)\1/' \
a61af66fc99e Initial load
duke
parents:
diff changeset
173 > $@; \
a61af66fc99e Initial load
duke
parents:
diff changeset
174 }
a61af66fc99e Initial load
duke
parents:
diff changeset
175 LD_SCRIPT_FLAG = -Wl,-T,$(LD_SCRIPT)
a61af66fc99e Initial load
duke
parents:
diff changeset
176 endif
a61af66fc99e Initial load
duke
parents:
diff changeset
177
a61af66fc99e Initial load
duke
parents:
diff changeset
178 # With more recent Redhat releases (or the cutting edge version Fedora), if
a61af66fc99e Initial load
duke
parents:
diff changeset
179 # SELinux is configured to be enabled, the runtime linker will fail to apply
a61af66fc99e Initial load
duke
parents:
diff changeset
180 # the text relocation to libjvm.so considering that it is built as a non-PIC
a61af66fc99e Initial load
duke
parents:
diff changeset
181 # DSO. To workaround that, we run chcon to libjvm.so after it is built. See
a61af66fc99e Initial load
duke
parents:
diff changeset
182 # details in bug 6538311.
a61af66fc99e Initial load
duke
parents:
diff changeset
183 $(LIBJVM): $(LIBJVM.o) $(LIBJVM_MAPFILE) $(LD_SCRIPT)
a61af66fc99e Initial load
duke
parents:
diff changeset
184 $(QUIETLY) { \
a61af66fc99e Initial load
duke
parents:
diff changeset
185 echo Linking vm...; \
a61af66fc99e Initial load
duke
parents:
diff changeset
186 $(LINK_LIB.CC/PRE_HOOK) \
a61af66fc99e Initial load
duke
parents:
diff changeset
187 $(LINK_VM) $(LD_SCRIPT_FLAG) \
a61af66fc99e Initial load
duke
parents:
diff changeset
188 $(LFLAGS_VM) -o $@ $(LIBJVM.o) $(LIBS_VM); \
a61af66fc99e Initial load
duke
parents:
diff changeset
189 $(LINK_LIB.CC/POST_HOOK) \
a61af66fc99e Initial load
duke
parents:
diff changeset
190 rm -f $@.1; ln -s $@ $@.1; \
a61af66fc99e Initial load
duke
parents:
diff changeset
191 if [ -x /usr/sbin/selinuxenabled ] ; then \
a61af66fc99e Initial load
duke
parents:
diff changeset
192 /usr/sbin/selinuxenabled; \
a61af66fc99e Initial load
duke
parents:
diff changeset
193 if [ $$? = 0 ] ; then \
a61af66fc99e Initial load
duke
parents:
diff changeset
194 /usr/bin/chcon -t textrel_shlib_t $@; \
a61af66fc99e Initial load
duke
parents:
diff changeset
195 if [ $$? != 0 ]; then \
a61af66fc99e Initial load
duke
parents:
diff changeset
196 echo "ERROR: Cannot chcon $@"; exit 1; \
a61af66fc99e Initial load
duke
parents:
diff changeset
197 fi \
a61af66fc99e Initial load
duke
parents:
diff changeset
198 fi \
a61af66fc99e Initial load
duke
parents:
diff changeset
199 fi \
a61af66fc99e Initial load
duke
parents:
diff changeset
200 }
a61af66fc99e Initial load
duke
parents:
diff changeset
201
a61af66fc99e Initial load
duke
parents:
diff changeset
202 DEST_JVM = $(JDK_LIBDIR)/$(VM_SUBDIR)/$(LIBJVM)
a61af66fc99e Initial load
duke
parents:
diff changeset
203
a61af66fc99e Initial load
duke
parents:
diff changeset
204 install_jvm: $(LIBJVM)
a61af66fc99e Initial load
duke
parents:
diff changeset
205 @echo "Copying $(LIBJVM) to $(DEST_JVM)"
a61af66fc99e Initial load
duke
parents:
diff changeset
206 $(QUIETLY) cp -f $(LIBJVM) $(DEST_JVM) && echo "Done"
a61af66fc99e Initial load
duke
parents:
diff changeset
207
a61af66fc99e Initial load
duke
parents:
diff changeset
208 #----------------------------------------------------------------------
a61af66fc99e Initial load
duke
parents:
diff changeset
209 # Other files
a61af66fc99e Initial load
duke
parents:
diff changeset
210
a61af66fc99e Initial load
duke
parents:
diff changeset
211 # Gamma launcher
a61af66fc99e Initial load
duke
parents:
diff changeset
212 include $(MAKEFILES_DIR)/launcher.make
a61af66fc99e Initial load
duke
parents:
diff changeset
213
a61af66fc99e Initial load
duke
parents:
diff changeset
214 # Signal interposition library
a61af66fc99e Initial load
duke
parents:
diff changeset
215 include $(MAKEFILES_DIR)/jsig.make
a61af66fc99e Initial load
duke
parents:
diff changeset
216
a61af66fc99e Initial load
duke
parents:
diff changeset
217 # Serviceability agent
a61af66fc99e Initial load
duke
parents:
diff changeset
218 include $(MAKEFILES_DIR)/saproc.make
a61af66fc99e Initial load
duke
parents:
diff changeset
219
a61af66fc99e Initial load
duke
parents:
diff changeset
220 #----------------------------------------------------------------------
a61af66fc99e Initial load
duke
parents:
diff changeset
221
a61af66fc99e Initial load
duke
parents:
diff changeset
222 build: $(LIBJVM) $(LAUNCHER) $(LIBJSIG) $(LIBJVM_DB) checkAndBuildSA
a61af66fc99e Initial load
duke
parents:
diff changeset
223
a61af66fc99e Initial load
duke
parents:
diff changeset
224 install: install_jvm install_jsig install_saproc
a61af66fc99e Initial load
duke
parents:
diff changeset
225
a61af66fc99e Initial load
duke
parents:
diff changeset
226 .PHONY: default build install install_jvm