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