ifeq ($(CC),cc)
CC := gcc
endif
CFLAGS += -Wall -Os -fPIC

TARGETS := privilege-mac-priv.so privilege-solaris.so

KERNEL_NAME = $(shell uname -s)
ifeq ($(findstring FreeBSD,$(KERNEL_NAME)),FreeBSD)
default:	privilege-mac-priv.so
else ifeq ($(KERNEL_NAME),SunOS)
default:	privilege-solaris.so
else
default:
	@printf "No default target for '%s'.\\nUse '%s <target> [...]' for cross-building; where targets are:\\n" "$(KERNEL_NAME)" "$(MAKE)"
	@for i in $(TARGETS); do echo "	$$i"; done
endif

ifdef WITH_BASH_SOURCE
ifndef WITH_BASH_BUILD
WITH_BASH_BUILD := $(WITH_BASH_SOURCE)
endif
SED ?= sed
BASH_HEADERS := builtins.h shell.h config.h config-top.h config-bot.h command.h stdc.h general.h alias.h bashtypes.h chartypes.h xmalloc.h bashansi.h bashjmp.h posixjmp.h syntax.h error.h variables.h array.h assoc.h hashlib.h conftypes.h arrayfunc.h quit.h sig.h maxpath.h unwind_prot.h dispose_cmd.h make_cmd.h ocache.h subst.h pathnames.h externs.h bashgetopt.h
BASH_HEADERS := $(addprefix build/bash/,$(BASH_HEADERS))
CFLAGS += -I build
privilege.o list.o mac-priv.o solaris.o:	build/bash $(BASH_HEADERS)
clean:	clean-build-headers

build/bash:
	mkdir -p $@
build/bash/bashgetopt.h:	$(WITH_BASH_SOURCE)/builtins/bashgetopt.h
	$(SED) 's/^#include <stdc\.h>/#include "stdc\.h"/' $< > $@
build/bash/%.h:	$(WITH_BASH_BUILD)/%.h
	ln -s $< $@
build/bash/%.h:	$(WITH_BASH_SOURCE)/%.h
	ln -s $< $@
build/bash/%.h:	$(WITH_BASH_SOURCE)/include/%.h
	ln -s $< $@
clean-build-headers:
	rm -f $(BASH_HEADERS)
endif

privilege-mac-priv.so:	privilege.o list.o mac-priv.o
	$(CC) $(LDFLAGS) --shared $^ -o $@ $(LIBS)

privilege-solaris.so:	privilege.o list.o solaris.o
	$(CC) $(LDFLAGS) --shared $^ -o $@ $(LIBS)

clean:
	rm -f *.o $(TARGETS)
