xref: /freebsd/contrib/capsicum-test/GNUmakefile (revision 955a3f9ad586f38395e66127f9f2f4afbf3d5a94)
18ac5aef8SEnji CooperOS:=$(shell uname)
28ac5aef8SEnji Cooper
38ac5aef8SEnji Cooper# Set ARCH to 32 or x32 for i386/x32 ABIs
48ac5aef8SEnji CooperARCH?=64
58ac5aef8SEnji CooperARCHFLAG=-m$(ARCH)
68ac5aef8SEnji Cooper
7*955a3f9aSAlex Richardsonifeq ($(OS),FreeBSD)
8*955a3f9aSAlex RichardsonEXTRA_LIBS=-lprocstat
9*955a3f9aSAlex Richardsonendif
10*955a3f9aSAlex Richardson
118ac5aef8SEnji Cooperifeq ($(OS),Linux)
128ac5aef8SEnji CooperPROCESSOR:=$(shell uname -p)
138ac5aef8SEnji Cooper
148ac5aef8SEnji Cooperifneq ($(wildcard /usr/lib/$(PROCESSOR)-linux-gnu),)
158ac5aef8SEnji Cooper# Can use standard Debian location for static libraries.
168ac5aef8SEnji CooperPLATFORM_LIBDIR=/usr/lib/$(PROCESSOR)-linux-gnu
178ac5aef8SEnji Cooperelse
188ac5aef8SEnji Cooper# Attempt to determine library location from gcc configuration.
198ac5aef8SEnji CooperPLATFORM_LIBDIR=$(shell gcc -v 2>&1 | grep "Configured with:" | sed 's/.*--libdir=\(\/usr\/[^ ]*\).*/\1/g')
208ac5aef8SEnji Cooperendif
218ac5aef8SEnji Cooper
228ac5aef8SEnji Cooper# Override for explicitly specified ARCHFLAG.
238ac5aef8SEnji Cooper# Use locally compiled libcaprights in this case, on the
248ac5aef8SEnji Cooper# assumption that any installed version is 64-bit.
258ac5aef8SEnji Cooperifeq ($(ARCHFLAG),-m32)
268ac5aef8SEnji CooperPROCESSOR=i386
278ac5aef8SEnji CooperPLATFORM_LIBDIR=/usr/lib32
288ac5aef8SEnji CooperLIBCAPRIGHTS=./libcaprights.a
298ac5aef8SEnji Cooperendif
308ac5aef8SEnji Cooperifeq ($(ARCHFLAG),-mx32)
318ac5aef8SEnji CooperPROCESSOR=x32
328ac5aef8SEnji CooperPLATFORM_LIBDIR=/usr/libx32
338ac5aef8SEnji CooperLIBCAPRIGHTS=./libcaprights.a
348ac5aef8SEnji Cooperendif
358ac5aef8SEnji Cooper
368ac5aef8SEnji Cooper# Detect presence of libsctp in normal Debian location
378ac5aef8SEnji Cooperifneq ($(wildcard $(PLATFORM_LIBDIR)/libsctp.a),)
388ac5aef8SEnji CooperLIBSCTP=-lsctp
398ac5aef8SEnji CooperCXXFLAGS=-DHAVE_SCTP
408ac5aef8SEnji Cooperendif
418ac5aef8SEnji Cooper
428ac5aef8SEnji Cooperifneq ($(LIBCAPRIGHTS),)
438ac5aef8SEnji Cooper# Build local libcaprights.a (assuming ./configure
448ac5aef8SEnji Cooper# has already been done in libcaprights/)
458ac5aef8SEnji CooperLOCAL_LIBS=$(LIBCAPRIGHTS)
468ac5aef8SEnji CooperLIBCAPRIGHTS_OBJS=libcaprights/capsicum.o libcaprights/linux-bpf-capmode.o libcaprights/procdesc.o libcaprights/signal.o
478ac5aef8SEnji CooperLOCAL_CLEAN=$(LOCAL_LIBS) $(LIBCAPRIGHTS_OBJS)
488ac5aef8SEnji Cooperelse
498ac5aef8SEnji Cooper# Detect installed libcaprights static library.
508ac5aef8SEnji Cooperifneq ($(wildcard $(PLATFORM_LIBDIR)/libcaprights.a),)
518ac5aef8SEnji CooperLIBCAPRIGHTS=$(PLATFORM_LIBDIR)/libcaprights.a
528ac5aef8SEnji Cooperelse
538ac5aef8SEnji Cooperifneq ($(wildcard /usr/lib/libcaprights.a),)
548ac5aef8SEnji CooperLIBCAPRIGHTS=/usr/lib/libcaprights.a
558ac5aef8SEnji Cooperendif
568ac5aef8SEnji Cooperendif
578ac5aef8SEnji Cooperendif
588ac5aef8SEnji Cooper
598ac5aef8SEnji Cooperendif
608ac5aef8SEnji Cooper
618ac5aef8SEnji Cooper# Extra test programs for arch-transition tests
628ac5aef8SEnji CooperEXTRA_PROGS = mini-me.32 mini-me.64
638ac5aef8SEnji Cooperifneq ($(wildcard /usr/include/gnu/stubs-x32.h),)
648ac5aef8SEnji CooperEXTRA_PROGS += mini-me.x32
658ac5aef8SEnji Cooperendif
668ac5aef8SEnji Cooper
678ac5aef8SEnji Cooper# Chain on to the master makefile
688ac5aef8SEnji Cooperinclude makefile
698ac5aef8SEnji Cooper
708ac5aef8SEnji Cooper./libcaprights.a: $(LIBCAPRIGHTS_OBJS)
718ac5aef8SEnji Cooper	ar cr $@ $^
728ac5aef8SEnji Cooper
738ac5aef8SEnji Cooper# Small static programs of known architectures
748ac5aef8SEnji Cooper# These may require additional packages to be installed; for example, for Debian:
758ac5aef8SEnji Cooper#  - libc6-dev-i386 provides 32-bit headers for a 64-bit system
768ac5aef8SEnji Cooper#  - libc6-dev-x32 provides headers for the x32 ABI.
778ac5aef8SEnji Coopermini-me.32: mini-me.c
788ac5aef8SEnji Cooper	$(CC) $(CFLAGS) -m32 -static -o $@ $<
798ac5aef8SEnji Coopermini-me.x32: mini-me.c
808ac5aef8SEnji Cooper	$(CC) $(CFLAGS) -mx32 -static -o $@ $<
818ac5aef8SEnji Coopermini-me.64: mini-me.c
828ac5aef8SEnji Cooper	$(CC) $(CFLAGS) -m64 -static -o $@ $<
83