NAME ?= sailfishaccesscontrol ROOT ?= /tmp/test-$(NAME) PREFIX ?= /usr LIBDIR ?= $(PREFIX)/lib INCDIR ?= $(PREFIX)/include/$(NAME) PKGCFGDIR ?= $(LIBDIR)/pkgconfig SO ?= .so.0 TEMPLATE_COPY = sed\ -e 's:@NAME@:${NAME}:g'\ -e 's:@VERSION@:${VERSION}:g'\ -e 's:@ROOT@:${ROOT}:g'\ -e 's:@PREFIX@:${PREFIX}:g'\ -e 's:@LIBDIR@:${LIBDIR}:g'\ -e 's:@INCDIR@:${INCDIR}:g'\ -e 's:@DOCDIR@:${DOCDIR}:g'\ -e 's:@MANDIR@:${MANDIR}:g'\ -e 's:@PKGCFGDIR@:${PKGCFGDIR}:g'\ < $< > $@ # ---------------------------------------------------------------------------- # Global Flags # ---------------------------------------------------------------------------- CPPFLAGS += -D_GNU_SOURCE CFLAGS += -Wall CFLAGS += -Wmissing-prototypes CFLAGS += -Wunused-result CFLAGS += -W CFLAGS += -std=c99 CFLAGS += -O2 CFLAGS += -fPIC CFLAGS += -g LDFLAGS += -fPIC LDFLAGS += -g LDLIBS += -Wl,--as-needed # flags from pkgtool PKG_NAMES := glib-2.0 PKG_CFLAGS := $(shell pkg-config --cflags $(PKG_NAMES)) PKG_LDLIBS := $(shell pkg-config --libs $(PKG_NAMES)) CFLAGS += $(PKG_CFLAGS) LDLIBS += $(PKG_LDLIBS) # ---------------------------------------------------------------------------- # Top Level Targets # ---------------------------------------------------------------------------- TARGETS += lib$(NAME)$(SO) .PHONY: build clean distclean mostlyclean install build:: $(TARGETS) extra:: $(EXTRA) all:: build extra clean:: mostlyclean $(RM) $(TARGETS) $(EXTRA) distclean:: clean mostlyclean:: $(RM) *.o *~ install:: $(addprefix install-,libsailfishaccesscontrol libsailfishaccesscontrol-dev) # ---------------------------------------------------------------------------- # Pattern rules # ---------------------------------------------------------------------------- install-%-lib: $(if $<, install -m755 -d $(ROOT)$(LIBDIR)) $(if $<, install -m755 $^ $(ROOT)$(LIBDIR)) install-%-inc: $(if $<, install -m755 -d $(ROOT)$(INCDIR)) $(if $<, install -m644 $^ $(ROOT)$(INCDIR)) %.pc : %.pc.tpl ; $(TEMPLATE_COPY) % : %.tpl ; $(TEMPLATE_COPY) % : %.o $(CC) -o $@ $^ $(LDFLAGS) $(LDLIBS) $(CFLAGS) %$(SO): LDFLAGS += -shared -Wl,-soname,$@ %$(SO): $(CC) -o $@ $^ $(LDFLAGS) $(LDLIBS) $(CFLAGS) %.pic.o : CFLAGS += -fPIC %.pic.o : CFLAGS += -fvisibility=hidden %.pic.o : %.c @echo "Compile Dynamic: $<" @$(CC) -o $@ -c $< $(CPPFLAGS) $(CFLAGS) %.o : %.c @echo "Compile Static: $<" @$(CC) -o $@ -c $< $(CPPFLAGS) $(CFLAGS) # ---------------------------------------------------------------------------- # libsailfishaccesscontrol # ---------------------------------------------------------------------------- lib$(NAME)_src =\ sailfishaccesscontrol.c lib$(NAME)_obj = $(libsailfishaccesscontrol_src:.c=.o) lib$(NAME)$(SO) : $(libsailfishaccesscontrol_obj:.o=.pic.o) install-lib$(NAME)-dll: lib$(NAME)$(SO) install-lib$(NAME):: $(addprefix install-lib$(NAME)-, dll) mkdir -p $(ROOT)$(LIBDIR)/ install -m755 lib$(NAME)$(SO) $(ROOT)$(LIBDIR)/ # ---------------------------------------------------------------------------- # libsailfishaccesscontrol-dev # ---------------------------------------------------------------------------- install-libsailfishaccesscontrol-dev-inc: sailfishaccesscontrol.h install-libsailfishaccesscontrol-dev:: $(addprefix install-libsailfishaccesscontrol-dev-, lib inc) $(NAME).pc ln -sf lib$(NAME)$(SO) $(ROOT)$(LIBDIR)/lib$(NAME).so install -m755 -d $(ROOT)$(PKGCFGDIR) install -m644 $(NAME).pc $(ROOT)$(PKGCFGDIR)/ clean:: $(RM) $(NAME).pc