mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	perf jvmti: Plug compilation into perf build
Compile jvmti agent as part of the perf build. The agent library is
called libperf-jvmti.so and is installed in default place together with
other files:
  $ make libperf-jvmti.so
    BUILD:   Doing 'make -j4' parallel build
    ...
    CC       jvmti/libjvmti.o
    CC       jvmti/jvmti_agent.o
    LD       jvmti/jvmti-in.o
    LINK     libperf-jvmti.so
  $ make DESTDIR=/tmp/krava/ install-bin
  ...
  $ find /tmp/krava/ | grep libperf
  /tmp/krava/lib64/libperf-jvmti.so
  /tmp/krava/lib64/libperf-gtk.so
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Tested-by: Stephane Eranian <eranian@google.com>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: William Cohen <wcohen@redhat.com>
Link: http://lkml.kernel.org/r/1478093749-5602-4-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
			
			
This commit is contained in:
		
							parent
							
								
									285932a258
								
							
						
					
					
						commit
						d4dfdf00d4
					
				
					 4 changed files with 58 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -758,6 +758,31 @@ ifndef NO_AUXTRACE
 | 
			
		|||
  endif
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
ifndef NO_JVMTI
 | 
			
		||||
  ifneq (,$(wildcard /usr/sbin/update-java-alternatives))
 | 
			
		||||
    JDIR=$(shell /usr/sbin/update-java-alternatives -l | head -1 | awk '{print $$3}')
 | 
			
		||||
  else
 | 
			
		||||
    ifneq (,$(wildcard /usr/sbin/alternatives))
 | 
			
		||||
      JDIR=$(shell alternatives --display java | tail -1 | cut -d' ' -f 5 | sed 's%/jre/bin/java.%%g')
 | 
			
		||||
    endif
 | 
			
		||||
  endif
 | 
			
		||||
  ifndef JDIR
 | 
			
		||||
    $(warning No alternatives command found, you need to set JDIR= to point to the root of your Java directory)
 | 
			
		||||
    NO_JVMTI := 1
 | 
			
		||||
  endif
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
ifndef NO_JVMTI
 | 
			
		||||
  FEATURE_CHECK_CFLAGS-jvmti := -I$(JDIR)/include -I$(JDIR)/include/linux
 | 
			
		||||
  $(call feature_check,jvmti)
 | 
			
		||||
  ifeq ($(feature-jvmti), 1)
 | 
			
		||||
    $(call detected_var,JDIR)
 | 
			
		||||
  else
 | 
			
		||||
    $(warning No openjdk development package found, please install JDK package)
 | 
			
		||||
    NO_JVMTI := 1
 | 
			
		||||
  endif
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
# Among the variables below, these:
 | 
			
		||||
#   perfexecdir
 | 
			
		||||
#   template_dir
 | 
			
		||||
| 
						 | 
				
			
			@ -850,6 +875,7 @@ ifeq ($(VF),1)
 | 
			
		|||
  $(call print_var,sysconfdir)
 | 
			
		||||
  $(call print_var,LIBUNWIND_DIR)
 | 
			
		||||
  $(call print_var,LIBDW_DIR)
 | 
			
		||||
  $(call print_var,JDIR)
 | 
			
		||||
 | 
			
		||||
  ifeq ($(dwarf-post-unwind),1)
 | 
			
		||||
    $(call feature_print_text,"DWARF post unwind library", $(dwarf-post-unwind-text))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -86,6 +86,8 @@ include ../scripts/utilities.mak
 | 
			
		|||
#
 | 
			
		||||
# Define FEATURES_DUMP to provide features detection dump file
 | 
			
		||||
# and bypass the feature detection
 | 
			
		||||
#
 | 
			
		||||
# Define NO_JVMTI if you do not want jvmti agent built
 | 
			
		||||
 | 
			
		||||
# As per kernel Makefile, avoid funny character set dependencies
 | 
			
		||||
unexport LC_ALL
 | 
			
		||||
| 
						 | 
				
			
			@ -283,6 +285,12 @@ ifndef NO_PERF_READ_VDSOX32
 | 
			
		|||
PROGRAMS += $(OUTPUT)perf-read-vdsox32
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
LIBJVMTI = libperf-jvmti.so
 | 
			
		||||
 | 
			
		||||
ifndef NO_JVMTI
 | 
			
		||||
PROGRAMS += $(OUTPUT)$(LIBJVMTI)
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
# what 'all' will build and 'install' will install, in perfexecdir
 | 
			
		||||
ALL_PROGRAMS = $(PROGRAMS) $(SCRIPTS)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -551,6 +559,16 @@ $(OUTPUT)perf-read-vdsox32: perf-read-vdso.c util/find-vdso-map.c
 | 
			
		|||
	$(QUIET_CC)$(CC) -mx32 $(filter -static,$(LDFLAGS)) -Wall -Werror -o $@ perf-read-vdso.c
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
ifndef NO_JVMTI
 | 
			
		||||
LIBJVMTI_IN := $(OUTPUT)jvmti/jvmti-in.o
 | 
			
		||||
 | 
			
		||||
$(LIBJVMTI_IN): FORCE
 | 
			
		||||
	$(Q)$(MAKE) -f $(srctree)/tools/build/Makefile.build dir=jvmti obj=jvmti
 | 
			
		||||
 | 
			
		||||
$(OUTPUT)$(LIBJVMTI): $(LIBJVMTI_IN)
 | 
			
		||||
	$(QUIET_LINK)$(CC) -shared -Wl,-soname -Wl,$(LIBJVMTI) -o $@ $< -lelf -lrt
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
$(patsubst perf-%,%.o,$(PROGRAMS)): $(wildcard */*.h)
 | 
			
		||||
 | 
			
		||||
LIBPERF_IN := $(OUTPUT)libperf-in.o
 | 
			
		||||
| 
						 | 
				
			
			@ -687,6 +705,10 @@ endif
 | 
			
		|||
ifndef NO_PERF_READ_VDSOX32
 | 
			
		||||
	$(call QUIET_INSTALL, perf-read-vdsox32) \
 | 
			
		||||
		$(INSTALL) $(OUTPUT)perf-read-vdsox32 '$(DESTDIR_SQ)$(bindir_SQ)';
 | 
			
		||||
endif
 | 
			
		||||
ifndef NO_JVMTI
 | 
			
		||||
	$(call QUIET_INSTALL, $(LIBJVMTI)) \
 | 
			
		||||
		$(INSTALL) $(OUTPUT)$(LIBJVMTI) '$(DESTDIR_SQ)$(libdir_SQ)';
 | 
			
		||||
endif
 | 
			
		||||
	$(call QUIET_INSTALL, libexec) \
 | 
			
		||||
		$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)'
 | 
			
		||||
| 
						 | 
				
			
			@ -754,7 +776,7 @@ clean:: $(LIBTRACEEVENT)-clean $(LIBAPI)-clean $(LIBBPF)-clean $(LIBSUBCMD)-clea
 | 
			
		|||
	$(call QUIET_CLEAN, core-objs)  $(RM) $(LIB_FILE) $(OUTPUT)perf-archive $(OUTPUT)perf-with-kcore $(LANG_BINDINGS)
 | 
			
		||||
	$(Q)find $(if $(OUTPUT),$(OUTPUT),.) -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete
 | 
			
		||||
	$(Q)$(RM) $(OUTPUT).config-detected
 | 
			
		||||
	$(call QUIET_CLEAN, core-progs) $(RM) $(ALL_PROGRAMS) perf perf-read-vdso32 perf-read-vdsox32 $(OUTPUT)pmu-events/jevents
 | 
			
		||||
	$(call QUIET_CLEAN, core-progs) $(RM) $(ALL_PROGRAMS) perf perf-read-vdso32 perf-read-vdsox32 $(OUTPUT)pmu-events/jevents $(OUTPUT)$(LIBJVMTI).so
 | 
			
		||||
	$(call QUIET_CLEAN, core-gen)   $(RM)  *.spec *.pyc *.pyo */*.pyc */*.pyo $(OUTPUT)common-cmds.h TAGS tags cscope* $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)FEATURE-DUMP $(OUTPUT)util/*-bison* $(OUTPUT)util/*-flex* \
 | 
			
		||||
		$(OUTPUT)util/intel-pt-decoder/inat-tables.c $(OUTPUT)fixdep \
 | 
			
		||||
		$(OUTPUT)tests/llvm-src-{base,kbuild,prologue,relocation}.c \
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										8
									
								
								tools/perf/jvmti/Build
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								tools/perf/jvmti/Build
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,8 @@
 | 
			
		|||
jvmti-y += libjvmti.o
 | 
			
		||||
jvmti-y += jvmti_agent.o
 | 
			
		||||
 | 
			
		||||
CFLAGS_jvmti         = -fPIC -DPIC -I$(JDIR)/include -I$(JDIR)/include/linux
 | 
			
		||||
CFLAGS_REMOVE_jvmti  = -Wmissing-declarations
 | 
			
		||||
CFLAGS_REMOVE_jvmti += -Wstrict-prototypes
 | 
			
		||||
CFLAGS_REMOVE_jvmti += -Wextra
 | 
			
		||||
CFLAGS_REMOVE_jvmti += -Wwrite-strings
 | 
			
		||||
| 
						 | 
				
			
			@ -106,7 +106,7 @@ make_minimal        := NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1
 | 
			
		|||
make_minimal        += NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1
 | 
			
		||||
make_minimal        += NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1
 | 
			
		||||
make_minimal        += NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1
 | 
			
		||||
make_minimal        += NO_LIBCRYPTO=1 NO_SDT=1
 | 
			
		||||
make_minimal        += NO_LIBCRYPTO=1 NO_SDT=1 NO_JVMTI=1
 | 
			
		||||
 | 
			
		||||
# $(run) contains all available tests
 | 
			
		||||
run := make_pure
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue