# $Id: Makefile,v 1.26.2.46 2010/11/07 19:48:14 mikpe Exp $ SHELL=/bin/sh ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/) CC=gcc CFLAGS=-O2 -fomit-frame-pointer -Wall BUILD_INCLDIR=../linux/include CPPFLAGS=-I$(BUILD_INCLDIR) LD=ld AR=ar ARFLAGS=ruv RANLIB=ranlib i386_ESOBJS=event_set_x86.o event_set_amd.o event_set_centaur.o\ event_set_p4.o event_set_p5.o event_set_p6.o x86_64_ESOBJS=event_set_x86.o event_set_amd.o event_set_p4.o ppc_ESOBJS=event_set_ppc.o arm_ESOBJS=event_set_arm.o EVENT_SET_OBJS=$($(ARCH)_ESOBJS) i386_OBJS=x86.o x86_64_OBJS=x86.o ppc_OBJS=ppc.o arm_OBJS=arm.o ARCH_OBJS=$($(ARCH)_OBJS) i386_H=x86.h x86_64_H=x86.h ppc_H=ppc.h arm_H=arm.h ARCH_H=$($(ARCH)_H) AR_OBJS=global.o misc.o virtual.o marshal.o $(EVENT_SET_OBJS) $(ARCH_OBJS) SO_OBJS=$(AR_OBJS:.o=.os) # This is exceedingly ugly. i386_ABIVER=5 x86_64_ABIVER=6 ppc_ABIVER=5 arm_ABIVER=0 SO_ABIVER=$($(ARCH)_ABIVER) SO_LIBVER=2.6.42 SO_NAME=libperfctr.so.$(SO_ABIVER) SO_LIB=libperfctr.so.$(SO_ABIVER).$(SO_LIBVER) HDEP=libperfctr.h $(BUILD_INCLDIR)/linux/perfctr.h $(BUILD_INCLDIR)/asm/perfctr.h i386_ASM_DIR=x86 x86_64_ASM_DIR=x86 ppc_ASM_DIR=powerpc arm_ASM_DIR=arm ARCH_ASM_DIR=asm-$($(ARCH)_ASM_DIR) INSTALL_FILES=$(BUILD_INCLDIR)/$(ARCH_ASM_DIR)/perfctr.h $(BUILD_INCLDIR)/linux/perfctr.h\ libperfctr.h libperfctr.a libperfctr.so perfctr_event_codes.h CLEAN_FILES=$(AR_OBJS) $(SO_OBJS) libperfctr.a libperfctr.so gen-event-codes perfctr_event_codes.h marshal.c marshal.h libperfctr.o # Prevent 16-byte stack alignment crap in gcc-2.95. CFLAGS += $(shell if $(CC) -mpreferred-stack-boundary=2 -S -o /dev/null -x c /dev/null > /dev/null 2>&1; then echo "-mpreferred-stack-boundary=2"; fi) .SUFFIXES: .os %.os: %.c $(COMPILE.c) -fPIC $(OUTPUT_OPTION) $< # this code does not need -fno-strict-aliasing default: $(INSTALL_FILES) libperfctr.o libperfctr.a: $(AR_OBJS) $(AR) $(ARFLAGS) libperfctr.a $(AR_OBJS) $(RANLIB) libperfctr.a # not installed, only built as a workaround for PAPI's broken Makefiles libperfctr.o: $(AR_OBJS) $(LD) -r -o $@ $(AR_OBJS) libperfctr.so: $(SO_OBJS) $(CC) -shared -o $@ -Wl,-soname,$(SO_NAME) $(SO_OBJS) $(AR_OBJS): $(HDEP) $(SO_OBJS): $(HDEP) $(EVENT_SET_OBJS): event_set.h $(BUILD_INCLDIR)/asm/perfctr.h: cd ..; make configure misc.o virtual.o global.o: marshal.h misc.o virtual.o: arch.h $(ARCH_H) marshal.o: marshal.c marshal.h marshal.c: ln -s ../linux/drivers/perfctr/marshal.c . marshal.h: ln -s ../linux/drivers/perfctr/marshal.h . perfctr_event_codes.h: gen-event-codes ./gen-event-codes > $@ gen-event-codes: gen-event-codes.c $(EVENT_SET_OBJS) $(LINK.c) $^ -o $@ install: $(INSTALL_FILES) -mkdir -p $(INCLDIR) $(INCLDIR)/asm $(INCLDIR)/linux cp -f libperfctr.h $(INCLDIR)/ cp perfctr_event_codes.h $(INCLDIR)/ cp -f ../linux/include/$(ARCH_ASM_DIR)/perfctr.h $(INCLDIR)/asm/ cp -f ../linux/include/linux/perfctr.h $(INCLDIR)/linux/ -mkdir -p $(LIBDIR) cp libperfctr.a $(LIBDIR)/ cp libperfctr.so $(LIBDIR)/$(SO_LIB) ln -sf $(SO_LIB) $(LIBDIR)/$(SO_NAME) ln -sf $(SO_NAME) $(LIBDIR)/libperfctr.so distclean realclean: clean clean: rm -f $(CLEAN_FILES)