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