|
CC = gcc |
|
CFLAGS = -O2 -Wall |
|
|
|
|
|
MAC_BUILD = universal |
|
|
|
|
|
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 |
|
|
|
|
|
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 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
|
usdt_tracepoints.o: usdt_tracepoints_$(ARCH).s |
|
$(CC) -arch $(ARCH) -o usdt_tracepoints.o -c usdt_tracepoints_$(ARCH).s |
|
endif |
|
|
|
else |
|
|
|
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 |
|
|
|
|
|
|
|
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 |
|
|
|
|