159 lines
3.4 KiB
Makefile
159 lines
3.4 KiB
Makefile
|
CC = gcc
|
||
|
CFLAGS = -O2 -Wall
|
||
|
|
||
|
# MAC_BUILD - set this to "universal" to build a 2-way fat library
|
||
|
MAC_BUILD = universal
|
||
|
|
||
|
# if ARCH set, disable universal build on the mac
|
||
|
ifdef ARCH
|
||
|
MAC_BUILD =
|
||
|
else
|
||
|
ARCH = $(shell uname -m)
|
||
|
endif
|
||
|
|
||
|
UNAME = $(shell uname -s)
|
||
|
|
||
|
ifeq ($(UNAME), Linux)
|
||
|
RANLIB=ranlib
|
||
|
CFLAGS+=-D_GNU_SOURCE -fPIC
|
||
|
endif
|
||
|
|
||
|
ifeq ($(UNAME), SunOS)
|
||
|
RANLIB=/bin/true
|
||
|
PATH +=:/usr/perl5/5.10.0/bin:/usr/perl5/5.12/bin
|
||
|
CFLAGS += -fPIC
|
||
|
ifeq ($(ARCH), i86pc)
|
||
|
ARCH = $(shell isainfo -k)
|
||
|
ifeq ($(ARCH), amd64)
|
||
|
ARCH = x86_64
|
||
|
else
|
||
|
ARCH = i386
|
||
|
endif
|
||
|
endif
|
||
|
ifeq ($(ARCH), x86_64)
|
||
|
CFLAGS += -m64
|
||
|
else
|
||
|
CFLAGS += -m32
|
||
|
endif
|
||
|
endif
|
||
|
|
||
|
ifeq ($(UNAME), FreeBSD)
|
||
|
RANLIB=ranlib
|
||
|
CFLAGS += -Wno-error=unknown-pragmas -I/usr/src/sys/cddl/compat/opensolaris -I/usr/src/sys/cddl/contrib/opensolaris/uts/common
|
||
|
CFLAGS += -fPIC
|
||
|
ifeq ($(ARCH), i386)
|
||
|
CFLAGS += -m32
|
||
|
endif
|
||
|
ifeq ($(ARCH), amd64)
|
||
|
ARCH = x86_64
|
||
|
endif
|
||
|
endif
|
||
|
|
||
|
ifeq ($(UNAME), Darwin)
|
||
|
RANLIB=ranlib
|
||
|
ifeq ($(MAC_BUILD), universal)
|
||
|
CFLAGS += -arch i386 -arch x86_64
|
||
|
else
|
||
|
CFLAGS += -arch $(ARCH)
|
||
|
endif
|
||
|
endif
|
||
|
|
||
|
# main library build
|
||
|
objects = usdt.o usdt_dof_file.o usdt_tracepoints.o usdt_probe.o usdt_dof.o usdt_dof_sections.o
|
||
|
headers = usdt.h usdt_internal.h
|
||
|
|
||
|
.c.o: $(headers)
|
||
|
|
||
|
all: libusdt.a
|
||
|
|
||
|
libusdt.a: $(objects) $(headers)
|
||
|
rm -f libusdt.a
|
||
|
$(AR) cru libusdt.a $(objects)
|
||
|
$(RANLIB) libusdt.a
|
||
|
|
||
|
# Tracepoints build.
|
||
|
#
|
||
|
# If on Darwin and building a universal library, manually assemble a
|
||
|
# two-way fat object file from both the 32 and 64 bit tracepoint asm
|
||
|
# files.
|
||
|
#
|
||
|
# Otherwise, just choose the appropriate asm file based on the build
|
||
|
# architecture.
|
||
|
|
||
|
ifeq ($(UNAME), Darwin)
|
||
|
ifeq ($(MAC_BUILD), universal)
|
||
|
|
||
|
usdt_tracepoints_i386.o: usdt_tracepoints_i386.s
|
||
|
$(CC) -arch i386 -o usdt_tracepoints_i386.o -c usdt_tracepoints_i386.s
|
||
|
|
||
|
usdt_tracepoints_x86_64.o: usdt_tracepoints_x86_64.s
|
||
|
$(CC) -arch x86_64 -o usdt_tracepoints_x86_64.o -c usdt_tracepoints_x86_64.s
|
||
|
|
||
|
usdt_tracepoints.o: usdt_tracepoints_i386.o usdt_tracepoints_x86_64.o
|
||
|
lipo -create -output usdt_tracepoints.o usdt_tracepoints_i386.o \
|
||
|
usdt_tracepoints_x86_64.o
|
||
|
|
||
|
else # Darwin, not universal
|
||
|
usdt_tracepoints.o: usdt_tracepoints_$(ARCH).s
|
||
|
$(CC) -arch $(ARCH) -o usdt_tracepoints.o -c usdt_tracepoints_$(ARCH).s
|
||
|
endif
|
||
|
|
||
|
else # not Darwin; FreeBSD and Illumos
|
||
|
|
||
|
ifeq ($(ARCH), x86_64)
|
||
|
usdt_tracepoints.o: usdt_tracepoints_x86_64.s
|
||
|
$(CC) $(CFLAGS) -o usdt_tracepoints.o -c usdt_tracepoints_x86_64.s
|
||
|
endif
|
||
|
ifeq ($(ARCH), i386)
|
||
|
usdt_tracepoints.o: usdt_tracepoints_i386.s
|
||
|
$(CC) $(CFLAGS) -o usdt_tracepoints.o -c usdt_tracepoints_i386.s
|
||
|
endif
|
||
|
|
||
|
endif
|
||
|
|
||
|
clean:
|
||
|
rm -f *.gch
|
||
|
rm -f *.o
|
||
|
rm -f libusdt.a
|
||
|
rm -f test_usdt
|
||
|
rm -f test_usdt32
|
||
|
rm -f test_usdt64
|
||
|
rm -f test_mem_usage
|
||
|
|
||
|
.PHONY: clean test
|
||
|
|
||
|
# testing
|
||
|
|
||
|
test_mem_usage: libusdt.a test_mem_usage.o
|
||
|
$(CC) $(CFLAGS) -o test_mem_usage test_mem_usage.o libusdt.a
|
||
|
|
||
|
ifeq ($(UNAME), Darwin)
|
||
|
ifeq ($(MAC_BUILD), universal)
|
||
|
test_usdt64: libusdt.a test_usdt.o
|
||
|
$(CC) -arch x86_64 -o test_usdt64 test_usdt.o libusdt.a
|
||
|
test_usdt32: libusdt.a test_usdt.o
|
||
|
$(CC) -arch i386 -o test_usdt32 test_usdt.o libusdt.a
|
||
|
else
|
||
|
test_usdt: libusdt.a test_usdt.o
|
||
|
$(CC) $(CFLAGS) -o test_usdt test_usdt.o libusdt.a
|
||
|
endif
|
||
|
else
|
||
|
test_usdt: libusdt.a test_usdt.o
|
||
|
$(CC) $(CFLAGS) -o test_usdt test_usdt.o libusdt.a
|
||
|
endif
|
||
|
|
||
|
ifeq ($(UNAME), Darwin)
|
||
|
ifeq ($(MAC_BUILD), universal)
|
||
|
test: test_usdt32 test_usdt64
|
||
|
sudo prove test.pl :: 64
|
||
|
sudo prove test.pl :: 32
|
||
|
else
|
||
|
test: test_usdt
|
||
|
sudo prove test.pl
|
||
|
endif
|
||
|
else
|
||
|
test: test_usdt
|
||
|
sudo prove test.pl
|
||
|
endif
|
||
|
|