aoqi@0: # aoqi@0: # Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. aoqi@0: # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. aoqi@0: # aoqi@0: # This code is free software; you can redistribute it and/or modify it aoqi@0: # under the terms of the GNU General Public License version 2 only, as aoqi@0: # published by the Free Software Foundation. aoqi@0: # aoqi@0: # This code is distributed in the hope that it will be useful, but WITHOUT aoqi@0: # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or aoqi@0: # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License aoqi@0: # version 2 for more details (a copy is included in the LICENSE file that aoqi@0: # accompanied this code). aoqi@0: # aoqi@0: # You should have received a copy of the GNU General Public License version aoqi@0: # 2 along with this work; if not, write to the Free Software Foundation, aoqi@0: # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. aoqi@0: # aoqi@0: # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA aoqi@0: # or visit www.oracle.com if you need additional information or have any aoqi@0: # questions. aoqi@0: # aoqi@0: # aoqi@0: aoqi@0: # Rules to build serviceability agent library, used by vm.make aoqi@0: aoqi@0: # libsaproc.so(dylib): serviceability agent aoqi@0: SAPROC = saproc aoqi@0: aoqi@0: ifeq ($(OS_VENDOR), Darwin) aoqi@0: LIBSAPROC = lib$(SAPROC).dylib aoqi@0: aoqi@0: LIBSAPROC_DEBUGINFO = lib$(SAPROC).dylib.dSYM aoqi@0: LIBSAPROC_DIZ = lib$(SAPROC).diz aoqi@0: else aoqi@0: LIBSAPROC = lib$(SAPROC).so aoqi@0: aoqi@0: LIBSAPROC_DEBUGINFO = lib$(SAPROC).debuginfo aoqi@0: LIBSAPROC_DIZ = lib$(SAPROC).diz aoqi@0: endif aoqi@0: aoqi@0: AGENT_DIR = $(GAMMADIR)/agent aoqi@0: aoqi@0: SASRCDIR = $(AGENT_DIR)/src/os/$(Platform_os_family) aoqi@0: aoqi@0: BSD_NON_STUB_SASRCFILES = $(SASRCDIR)/salibelf.c \ aoqi@0: $(SASRCDIR)/symtab.c \ aoqi@0: $(SASRCDIR)/libproc_impl.c \ aoqi@0: $(SASRCDIR)/ps_proc.c \ aoqi@0: $(SASRCDIR)/ps_core.c \ aoqi@0: $(SASRCDIR)/BsdDebuggerLocal.c \ aoqi@0: $(AGENT_DIR)/src/share/native/sadis.c aoqi@0: aoqi@0: DARWIN_NON_STUB_SASRCFILES = $(SASRCDIR)/symtab.c \ aoqi@0: $(SASRCDIR)/libproc_impl.c \ aoqi@0: $(SASRCDIR)/ps_core.c \ aoqi@0: $(SASRCDIR)/MacosxDebuggerLocal.m \ aoqi@0: $(AGENT_DIR)/src/share/native/sadis.c aoqi@0: aoqi@0: ifeq ($(OS_VENDOR), FreeBSD) aoqi@0: SASRCFILES = $(BSD_NON_STUB_SASRCFILES) aoqi@0: SALIBS = -lutil -lthread_db aoqi@0: SAARCH = $(ARCHFLAG) aoqi@0: else aoqi@0: ifeq ($(OS_VENDOR), Darwin) aoqi@0: SASRCFILES = $(DARWIN_NON_STUB_SASRCFILES) aoqi@0: SALIBS = -g -framework Foundation -F/System/Library/Frameworks/JavaVM.framework/Frameworks -framework JavaNativeFoundation -framework Security -framework CoreFoundation aoqi@0: #objc compiler blows up on -march=i586, perhaps it should not be included in the macosx intel 32-bit C++ compiles? aoqi@0: SAARCH = $(subst -march=i586,,$(ARCHFLAG)) aoqi@0: else aoqi@0: SASRCFILES = $(SASRCDIR)/StubDebuggerLocal.c aoqi@0: SALIBS = aoqi@0: SAARCH = $(ARCHFLAG) aoqi@0: endif aoqi@0: endif aoqi@0: aoqi@0: SAMAPFILE = $(SASRCDIR)/mapfile aoqi@0: aoqi@0: DEST_SAPROC = $(JDK_LIBDIR)/$(LIBSAPROC) aoqi@0: DEST_SAPROC_DEBUGINFO = $(JDK_LIBDIR)/$(LIBSAPROC_DEBUGINFO) aoqi@0: DEST_SAPROC_DIZ = $(JDK_LIBDIR)/$(LIBSAPROC_DIZ) aoqi@0: aoqi@0: # DEBUG_BINARIES overrides everything, use full -g debug information aoqi@0: ifeq ($(DEBUG_BINARIES), true) aoqi@0: SA_DEBUG_CFLAGS = -g aoqi@0: endif aoqi@0: aoqi@0: # if $(AGENT_DIR) does not exist, we don't build SA aoqi@0: # also, we don't build SA on Itanium, PPC, ARM or zero. aoqi@0: aoqi@0: ifneq ($(wildcard $(AGENT_DIR)),) aoqi@0: ifneq ($(filter-out ia64 arm ppc zero,$(SRCARCH)),) aoqi@0: BUILDLIBSAPROC = $(LIBSAPROC) aoqi@0: endif aoqi@0: endif aoqi@0: aoqi@0: aoqi@0: ifneq ($(OS_VENDOR), Darwin) aoqi@0: SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE)) aoqi@0: endif aoqi@0: SA_LFLAGS += $(LDFLAGS_HASH_STYLE) aoqi@0: aoqi@0: ifeq ($(OS_VENDOR), Darwin) aoqi@0: BOOT_JAVA_INCLUDES = -I$(BOOT_JAVA_HOME)/include \ aoqi@0: -I$(BOOT_JAVA_HOME)/include/$(shell uname -s | tr "[:upper:]" "[:lower:]") \ aoqi@0: -I/System/Library/Frameworks/JavaVM.framework/Headers aoqi@0: else aoqi@0: BOOT_JAVA_INCLUDES = -I$(BOOT_JAVA_HOME)/include \ aoqi@0: -I$(BOOT_JAVA_HOME)/include/$(shell uname -s | tr "[:upper:]" "[:lower:]") aoqi@0: endif aoqi@0: aoqi@0: $(LIBSAPROC): $(SASRCFILES) $(SAMAPFILE) aoqi@0: $(QUIETLY) if [ "$(BOOT_JAVA_HOME)" = "" ]; then \ aoqi@0: echo "ALT_BOOTDIR, BOOTDIR or JAVA_HOME needs to be defined to build SA"; \ aoqi@0: exit 1; \ aoqi@0: fi aoqi@0: @echo Making SA debugger back-end... aoqi@0: $(QUIETLY) $(CC) -D$(BUILDARCH) -D_GNU_SOURCE \ aoqi@0: $(SYMFLAG) $(SAARCH) $(SHARED_FLAG) $(PICFLAG) \ aoqi@0: -I$(SASRCDIR) \ aoqi@0: -I$(GENERATED) \ aoqi@0: $(BOOT_JAVA_INCLUDES) \ aoqi@0: $(SASRCFILES) \ aoqi@0: $(SA_LFLAGS) \ aoqi@0: $(SA_DEBUG_CFLAGS) \ aoqi@0: -o $@ \ aoqi@0: $(SALIBS) aoqi@0: ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) aoqi@0: ifeq ($(OS_VENDOR), Darwin) aoqi@0: $(DSYMUTIL) $@ aoqi@0: ifeq ($(ZIP_DEBUGINFO_FILES),1) aoqi@0: $(ZIPEXE) -q -r -y $(LIBSAPROC_DIZ) $(LIBSAPROC_DEBUGINFO) aoqi@0: $(RM) -r $(LIBSAPROC_DEBUGINFO) aoqi@0: endif aoqi@0: else aoqi@0: $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBSAPROC_DEBUGINFO) aoqi@0: $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBSAPROC_DEBUGINFO) $@ aoqi@0: ifeq ($(STRIP_POLICY),all_strip) aoqi@0: $(QUIETLY) $(STRIP) $@ aoqi@0: else aoqi@0: ifeq ($(STRIP_POLICY),min_strip) aoqi@0: $(QUIETLY) $(STRIP) -g $@ aoqi@0: # implied else here is no stripping at all aoqi@0: endif aoqi@0: endif aoqi@0: ifeq ($(ZIP_DEBUGINFO_FILES),1) aoqi@0: $(ZIPEXE) -q -y $(LIBSAPROC_DIZ) $(LIBSAPROC_DEBUGINFO) aoqi@0: $(RM) $(LIBSAPROC_DEBUGINFO) aoqi@0: endif aoqi@0: endif aoqi@0: endif aoqi@0: aoqi@0: install_saproc: $(BUILDLIBSAPROC) aoqi@0: @echo "Copying $(LIBSAPROC) to $(DEST_SAPROC)" aoqi@0: ifeq ($(OS_VENDOR), Darwin) aoqi@0: $(QUIETLY) test -d $(LIBSAPROC_DEBUGINFO) && \ aoqi@0: cp -f -r $(LIBSAPROC_DEBUGINFO) $(DEST_SAPROC_DEBUGINFO) aoqi@0: else aoqi@0: $(QUIETLY) test -f $(LIBSAPROC_DEBUGINFO) && \ aoqi@0: cp -f $(LIBSAPROC_DEBUGINFO) $(DEST_SAPROC_DEBUGINFO) aoqi@0: endif aoqi@0: $(QUIETLY) test -f $(LIBSAPROC_DIZ) && \ aoqi@0: cp -f $(LIBSAPROC_DIZ) $(DEST_SAPROC_DIZ) aoqi@0: $(QUIETLY) cp -f $(LIBSAPROC) $(DEST_SAPROC) && echo "Done" aoqi@0: aoqi@0: .PHONY: install_saproc