125 LIBS += -lm
126
127 ifeq ($(USE_CLANG),)
128 LIBS += -pthread
129 endif
130
131 # By default, link the *.o into the library, not the executable.
132 LINK_INTO$(LINK_INTO) = LIBJVM
133
134 JDK_LIBDIR = $(JAVA_HOME)/lib/$(LIBARCH)
135
136 #----------------------------------------------------------------------
137 # jvm_db & dtrace
138 include $(MAKEFILES_DIR)/dtrace.make
139
140 #----------------------------------------------------------------------
141 # JVM
142
143 JVM = jvm
144 ifeq ($(OS_VENDOR), Darwin)
145 LIBJVM = lib$(JVM).dylib
146 CFLAGS += -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE
147
148 LIBJVM_DEBUGINFO = lib$(JVM).dylib.dSYM
149 LIBJVM_DIZ = lib$(JVM).diz
150 else
151 LIBJVM = lib$(JVM).so
152
153 LIBJVM_DEBUGINFO = lib$(JVM).debuginfo
154 LIBJVM_DIZ = lib$(JVM).diz
155 endif
156
157 SPECIAL_PATHS:=adlc c1 gc opto shark libadt
158
159 SOURCE_PATHS=\
160 $(shell find $(HS_COMMON_SRC)/share/vm/* -type d \! \
161 \( -name DUMMY $(foreach dir,$(SPECIAL_PATHS),-o -name $(dir)) \))
162 SOURCE_PATHS+=$(HS_COMMON_SRC)/os/$(Platform_os_family)/vm
163 SOURCE_PATHS+=$(HS_COMMON_SRC)/os/posix/vm
164 SOURCE_PATHS+=$(HS_COMMON_SRC)/cpu/$(Platform_arch)/vm
165 SOURCE_PATHS+=$(HS_COMMON_SRC)/os_cpu/$(Platform_os_arch)/vm
166
167 CORE_PATHS=$(foreach path,$(SOURCE_PATHS),$(call altsrc,$(path)) $(path))
168 CORE_PATHS+=$(GENERATED)/jvmtifiles $(GENERATED)/tracefiles
244 # For Darwin: add _ prefix and remove trailing ;
245 mapfile_extra: $(MAPFILE_SHARE) $(MAPFILE_EXT)
246 rm -f $@
247 ifeq ($(OS_VENDOR), Darwin)
248 cat $(MAPFILE_SHARE) $(MAPFILE_EXT) | \
249 sed -e 's/#.*//g' -e 's/[ ]*//g' -e 's/;//g' | \
250 awk '{ if ($$0 ~ ".") { print "\t\t_" $$0 } }' \
251 > $@
252 else
253 cat $(MAPFILE_SHARE) $(MAPFILE_EXT) > $@
254 endif
255
256 mapfile : $(MAPFILE) mapfile_extra vm.def
257 rm -f $@
258 awk '{ if ($$0 ~ "INSERT VTABLE SYMBOLS HERE") \
259 { system ("cat mapfile_extra vm.def"); } \
260 else \
261 { print $$0 } \
262 }' > $@ < $(MAPFILE)
263
264 mapfile_reorder : mapfile $(REORDERFILE)
265 rm -f $@
266 cat $^ > $@
267
268 vm.def: $(Res_Files) $(Obj_Files)
269 sh $(GAMMADIR)/make/bsd/makefiles/build_vm_def.sh *.o > $@
270
271 mapfile_ext:
272 rm -f $@
273 touch $@
274 if [ -f $(HS_ALT_MAKE)/bsd/makefiles/mapfile-ext ]; then \
275 cat $(HS_ALT_MAKE)/bsd/makefiles/mapfile-ext > $@; \
276 fi
277
278 STATIC_CXX = false
279
280 ifeq ($(LINK_INTO),AOUT)
281 LIBJVM.o =
282 LIBJVM_MAPFILE =
283 LIBS_VM = $(LIBS)
284 else
285 LIBJVM.o = $(JVM_OBJ_FILES)
286 LIBJVM_MAPFILE$(LDNOMAP) = mapfile_reorder
287 LFLAGS_VM$(LDNOMAP) += $(MAPFLAG:FILENAME=$(LIBJVM_MAPFILE))
288 LFLAGS_VM += $(SONAMEFLAG:SONAME=$(LIBJVM))
289
290 ifeq ($(OS_VENDOR), Darwin)
291 LFLAGS_VM += -Xlinker -rpath -Xlinker @loader_path/.
292 LFLAGS_VM += -Xlinker -rpath -Xlinker @loader_path/..
293 LFLAGS_VM += -Xlinker -install_name -Xlinker @rpath/$(@F)
294 else
295 LFLAGS_VM += -Wl,-z,defs
296 endif
297
298 # JVM is statically linked with libgcc[_s] and libstdc++; this is needed to
299 # get around library dependency and compatibility issues. Must use gcc not
300 # g++ to link.
301 ifeq ($(STATIC_CXX), true)
302 LFLAGS_VM += $(STATIC_LIBGCC)
303 LIBS_VM += $(STATIC_STDCXX)
304 LINK_VM = $(LINK_LIB.CC)
305 else
306 LINK_VM = $(LINK_LIB.CXX)
307 endif
308
309 LIBS_VM += $(LIBS)
310 endif
311 ifeq ($(JVM_VARIANT_ZERO), true)
312 LIBS_VM += $(LIBFFI_LIBS)
313 endif
328
329 ifneq ($(JVM_BASE_ADDR),)
330 # By default shared library is linked at base address == 0. Modify the
331 # linker script if JVM prefers a different base location. It can also be
332 # implemented with 'prelink -r'. But 'prelink' is not (yet) available on
333 # our build platform (AS-2.1).
334 LD_SCRIPT = libjvm.so.lds
335 $(LD_SCRIPT): $(LIBJVM_MAPFILE)
336 $(QUIETLY) { \
337 rm -rf $@; \
338 $(LINK_VM) -Wl,--verbose $(LFLAGS_VM) 2>&1 | \
339 sed -e '/^======/,/^======/!d' \
340 -e '/^======/d' \
341 -e 's/0\( + SIZEOF_HEADERS\)/$(JVM_BASE_ADDR)\1/' \
342 > $@; \
343 }
344 LD_SCRIPT_FLAG = -Wl,-T,$(LD_SCRIPT)
345 endif
346
347 $(LIBJVM): $(LIBJVM.o) $(LIBJVM_MAPFILE) $(LD_SCRIPT)
348 $(QUIETLY) { \
349 echo $(LOG_INFO) Linking vm...; \
350 $(LINK_LIB.CXX/PRE_HOOK) \
351 $(LINK_VM) $(LD_SCRIPT_FLAG) \
352 $(LFLAGS_VM) -o $@ $(sort $(LIBJVM.o)) $(LIBS_VM); \
353 $(LINK_LIB.CXX/POST_HOOK) \
354 rm -f $@.1; ln -s $@ $@.1; \
355 }
356
357 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
358 ifeq ($(OS_VENDOR), Darwin)
359 $(DSYMUTIL) $@
360 ifeq ($(ZIP_DEBUGINFO_FILES),1)
361 $(ZIPEXE) -q -r -y $(LIBJVM_DIZ) $(LIBJVM_DEBUGINFO)
362 $(RM) -r $(LIBJVM_DEBUGINFO)
363 endif
364 else
365 $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJVM_DEBUGINFO)
366 $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@
367 ifeq ($(STRIP_POLICY),all_strip)
368 $(QUIETLY) $(STRIP) $@
369 else
370 ifeq ($(STRIP_POLICY),min_strip)
371 $(QUIETLY) $(STRIP) -g $@
372 # implied else here is no stripping at all
373 endif
374 endif
375 ifeq ($(ZIP_DEBUGINFO_FILES),1)
376 $(ZIPEXE) -q -y $(LIBJVM_DIZ) $(LIBJVM_DEBUGINFO)
393 $(QUIETLY) test ! -f $(LIBJVM_DEBUGINFO) || \
394 $(CP) -f $(LIBJVM_DEBUGINFO) $(DEST_JVM_DEBUGINFO)
395 endif
396 $(QUIETLY) test ! -f $(LIBJVM_DIZ) || \
397 $(CP) -f $(LIBJVM_DIZ) $(DEST_JVM_DIZ)
398 $(QUIETLY) $(CP) -f $(LIBJVM) $(DEST_JVM) && echo "Done"
399
400 #----------------------------------------------------------------------
401 # Other files
402
403 # Signal interposition library
404 include $(MAKEFILES_DIR)/jsig.make
405
406 # Serviceability agent
407 include $(MAKEFILES_DIR)/saproc.make
408
409 #----------------------------------------------------------------------
410
411 ifeq ($(OS_VENDOR), Darwin)
412 # no libjvm_db for macosx
413 build: $(LIBJVM) $(LAUNCHER) $(LIBJSIG) $(BUILDLIBSAPROC) dtraceCheck
414 echo "Doing vm.make build:"
415 else
416 build: $(LIBJVM) $(LAUNCHER) $(LIBJSIG) $(LIBJVM_DB) $(BUILDLIBSAPROC)
417 endif
418
419 install: install_jvm install_jsig install_saproc
420
421 .PHONY: default build install install_jvm
|
125 LIBS += -lm
126
127 ifeq ($(USE_CLANG),)
128 LIBS += -pthread
129 endif
130
131 # By default, link the *.o into the library, not the executable.
132 LINK_INTO$(LINK_INTO) = LIBJVM
133
134 JDK_LIBDIR = $(JAVA_HOME)/lib/$(LIBARCH)
135
136 #----------------------------------------------------------------------
137 # jvm_db & dtrace
138 include $(MAKEFILES_DIR)/dtrace.make
139
140 #----------------------------------------------------------------------
141 # JVM
142
143 JVM = jvm
144 ifeq ($(OS_VENDOR), Darwin)
145 LIBJVM = lib$(JVM).$(LIBRARY_SUFFIX)
146 CFLAGS += -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE
147
148 LIBJVM_DEBUGINFO = lib$(JVM).$(LIBRARY_SUFFIX).dSYM
149 LIBJVM_DIZ = lib$(JVM).diz
150 else
151 LIBJVM = lib$(JVM).so
152
153 LIBJVM_DEBUGINFO = lib$(JVM).debuginfo
154 LIBJVM_DIZ = lib$(JVM).diz
155 endif
156
157 SPECIAL_PATHS:=adlc c1 gc opto shark libadt
158
159 SOURCE_PATHS=\
160 $(shell find $(HS_COMMON_SRC)/share/vm/* -type d \! \
161 \( -name DUMMY $(foreach dir,$(SPECIAL_PATHS),-o -name $(dir)) \))
162 SOURCE_PATHS+=$(HS_COMMON_SRC)/os/$(Platform_os_family)/vm
163 SOURCE_PATHS+=$(HS_COMMON_SRC)/os/posix/vm
164 SOURCE_PATHS+=$(HS_COMMON_SRC)/cpu/$(Platform_arch)/vm
165 SOURCE_PATHS+=$(HS_COMMON_SRC)/os_cpu/$(Platform_os_arch)/vm
166
167 CORE_PATHS=$(foreach path,$(SOURCE_PATHS),$(call altsrc,$(path)) $(path))
168 CORE_PATHS+=$(GENERATED)/jvmtifiles $(GENERATED)/tracefiles
244 # For Darwin: add _ prefix and remove trailing ;
245 mapfile_extra: $(MAPFILE_SHARE) $(MAPFILE_EXT)
246 rm -f $@
247 ifeq ($(OS_VENDOR), Darwin)
248 cat $(MAPFILE_SHARE) $(MAPFILE_EXT) | \
249 sed -e 's/#.*//g' -e 's/[ ]*//g' -e 's/;//g' | \
250 awk '{ if ($$0 ~ ".") { print "\t\t_" $$0 } }' \
251 > $@
252 else
253 cat $(MAPFILE_SHARE) $(MAPFILE_EXT) > $@
254 endif
255
256 mapfile : $(MAPFILE) mapfile_extra vm.def
257 rm -f $@
258 awk '{ if ($$0 ~ "INSERT VTABLE SYMBOLS HERE") \
259 { system ("cat mapfile_extra vm.def"); } \
260 else \
261 { print $$0 } \
262 }' > $@ < $(MAPFILE)
263
264 ifeq ($(STATIC_BUILD),true)
265 EXPORTED_SYMBOLS = libjvm.symbols
266
267 libjvm.symbols : mapfile
268 $(CP) mapfile libjvm.symbols
269
270 else
271 EXPORTED_SYMBOLS =
272 endif
273
274 mapfile_reorder : mapfile $(REORDERFILE)
275 rm -f $@
276 cat $^ > $@
277
278 vm.def: $(Res_Files) $(Obj_Files)
279 sh $(GAMMADIR)/make/bsd/makefiles/build_vm_def.sh *.o > $@
280
281 mapfile_ext:
282 rm -f $@
283 touch $@
284 if [ -f $(HS_ALT_MAKE)/bsd/makefiles/mapfile-ext ]; then \
285 cat $(HS_ALT_MAKE)/bsd/makefiles/mapfile-ext > $@; \
286 fi
287
288 STATIC_CXX = false
289
290 ifeq ($(LINK_INTO),AOUT)
291 LIBJVM.o =
292 LIBJVM_MAPFILE =
293 LIBS_VM = $(LIBS)
294 else
295 LIBJVM.o = $(JVM_OBJ_FILES)
296 LIBJVM_MAPFILE$(LDNOMAP) = mapfile_reorder
297 LFLAGS_VM$(LDNOMAP) += $(MAPFLAG:FILENAME=$(LIBJVM_MAPFILE))
298 LFLAGS_VM += $(SONAMEFLAG:SONAME=$(LIBJVM))
299
300 ifeq ($(OS_VENDOR), Darwin)
301 ifneq ($(STATIC_BUILD),true)
302 LFLAGS_VM += -Xlinker -rpath -Xlinker @loader_path/.
303 LFLAGS_VM += -Xlinker -rpath -Xlinker @loader_path/..
304 LFLAGS_VM += -Xlinker -install_name -Xlinker @rpath/$(@F)
305 endif
306 else
307 LFLAGS_VM += -Wl,-z,defs
308 endif
309
310 # JVM is statically linked with libgcc[_s] and libstdc++; this is needed to
311 # get around library dependency and compatibility issues. Must use gcc not
312 # g++ to link.
313 ifeq ($(STATIC_CXX), true)
314 LFLAGS_VM += $(STATIC_LIBGCC)
315 LIBS_VM += $(STATIC_STDCXX)
316 LINK_VM = $(LINK_LIB.CC)
317 else
318 LINK_VM = $(LINK_LIB.CXX)
319 endif
320
321 LIBS_VM += $(LIBS)
322 endif
323 ifeq ($(JVM_VARIANT_ZERO), true)
324 LIBS_VM += $(LIBFFI_LIBS)
325 endif
340
341 ifneq ($(JVM_BASE_ADDR),)
342 # By default shared library is linked at base address == 0. Modify the
343 # linker script if JVM prefers a different base location. It can also be
344 # implemented with 'prelink -r'. But 'prelink' is not (yet) available on
345 # our build platform (AS-2.1).
346 LD_SCRIPT = libjvm.so.lds
347 $(LD_SCRIPT): $(LIBJVM_MAPFILE)
348 $(QUIETLY) { \
349 rm -rf $@; \
350 $(LINK_VM) -Wl,--verbose $(LFLAGS_VM) 2>&1 | \
351 sed -e '/^======/,/^======/!d' \
352 -e '/^======/d' \
353 -e 's/0\( + SIZEOF_HEADERS\)/$(JVM_BASE_ADDR)\1/' \
354 > $@; \
355 }
356 LD_SCRIPT_FLAG = -Wl,-T,$(LD_SCRIPT)
357 endif
358
359 $(LIBJVM): $(LIBJVM.o) $(LIBJVM_MAPFILE) $(LD_SCRIPT)
360 ifeq ($(STATIC_BUILD),true)
361 echo Linking static vm...;
362 $(LINK_LIB.CC) $@ $(LIBJVM.o)
363 else
364 $(QUIETLY) { \
365 echo $(LOG_INFO) Linking vm...; \
366 $(LINK_LIB.CXX/PRE_HOOK) \
367 $(LINK_VM) $(LD_SCRIPT_FLAG) \
368 $(LFLAGS_VM) -o $@ $(sort $(LIBJVM.o)) $(LIBS_VM); \
369 $(LINK_LIB.CXX/POST_HOOK) \
370 rm -f $@.1; ln -s $@ $@.1; \
371 }
372
373 endif
374
375 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
376 ifeq ($(OS_VENDOR), Darwin)
377 $(DSYMUTIL) $@
378 ifeq ($(ZIP_DEBUGINFO_FILES),1)
379 $(ZIPEXE) -q -r -y $(LIBJVM_DIZ) $(LIBJVM_DEBUGINFO)
380 $(RM) -r $(LIBJVM_DEBUGINFO)
381 endif
382 else
383 $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJVM_DEBUGINFO)
384 $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@
385 ifeq ($(STRIP_POLICY),all_strip)
386 $(QUIETLY) $(STRIP) $@
387 else
388 ifeq ($(STRIP_POLICY),min_strip)
389 $(QUIETLY) $(STRIP) -g $@
390 # implied else here is no stripping at all
391 endif
392 endif
393 ifeq ($(ZIP_DEBUGINFO_FILES),1)
394 $(ZIPEXE) -q -y $(LIBJVM_DIZ) $(LIBJVM_DEBUGINFO)
411 $(QUIETLY) test ! -f $(LIBJVM_DEBUGINFO) || \
412 $(CP) -f $(LIBJVM_DEBUGINFO) $(DEST_JVM_DEBUGINFO)
413 endif
414 $(QUIETLY) test ! -f $(LIBJVM_DIZ) || \
415 $(CP) -f $(LIBJVM_DIZ) $(DEST_JVM_DIZ)
416 $(QUIETLY) $(CP) -f $(LIBJVM) $(DEST_JVM) && echo "Done"
417
418 #----------------------------------------------------------------------
419 # Other files
420
421 # Signal interposition library
422 include $(MAKEFILES_DIR)/jsig.make
423
424 # Serviceability agent
425 include $(MAKEFILES_DIR)/saproc.make
426
427 #----------------------------------------------------------------------
428
429 ifeq ($(OS_VENDOR), Darwin)
430 # no libjvm_db for macosx
431 build: $(LIBJVM) $(LAUNCHER) $(LIBJSIG) $(BUILDLIBSAPROC) dtraceCheck $(EXPORTED_SYMBOLS)
432 echo "Doing vm.make build:"
433 else
434 build: $(LIBJVM) $(LAUNCHER) $(LIBJSIG) $(LIBJVM_DB) $(BUILDLIBSAPROC) $(EXPORTED_SYMBOLS)
435 endif
436
437 install: install_jvm install_jsig install_saproc
438
439 .PHONY: default build install install_jvm
|