| 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 |
|
|
|
|