1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
PROJECT := minIni
MULTIARCH ?= $(shell $(CC) --print-multiarch)
PREFIX ?= /usr
INCLUDEDIR ?= $(PREFIX)/include
LIBDIR ?= $(PREFIX)/lib/$(MULTIARCH)
CFLAGS += -fPIC
CXXFLAGS += -fPIC
HEADERS := $(wildcard *.h)
SRCS := minIni.c minIni-cxx.cc
OBJS := $(addsuffix .o,$(basename $(SRCS)))
LIB_NAME := lib$(PROJECT).so
SO_NAME := $(LIB_NAME).1
REAL_NAME := $(LIB_NAME).$(VERSION)
ARLIB := lib$(PROJECT).a
SHLIB := $(SO_NAME)
PCFILE := $(PROJECT).pc
.PHONY: all
all: $(ARLIB) $(SHLIB) $(PCFILE)
$(ARLIB): $(OBJS)
$(AR) rcs $@ $^
$(SHLIB): $(OBJS)
$(CXX) -shared -Wl,-soname,$(SO_NAME) $(LDFLAGS) -o $@ $^
$(PCFILE): $(PCFILE).in
sed 's|@prefix@|$(PREFIX)|; s|@libdir@|$(LIBDIR)|; s|@includedir@|$(INCLUDEDIR)|; s|@version@|$(VERSION)|' $< > $@
.PHONY: clean
clean:
rm -f $(ARLIB) $(SHLIB)* $(OBJS) $(PCFILE) test1 test2
.PHONY: install-shared
install-shared: $(SHLIB)
install -d $(DESTDIR)$(LIBDIR) || true
install -m 0644 $< $(DESTDIR)$(LIBDIR)/$(REAL_NAME)
rm -f $(DESTDIR)$(LIBDIR)/$(SO_NAME)
ln -s $(REAL_NAME) $(DESTDIR)$(LIBDIR)/$(SO_NAME)
rm -f $(DESTDIR)$(LIBDIR)/$(LIB_NAME)
ln -s $(SO_NAME) $(DESTDIR)$(LIBDIR)/$(LIB_NAME)
.PHONY: install-static
install-static: $(ARLIB)
install -d $(DESTDIR)$(LIBDIR) || true
install -m 0644 $< $(DESTDIR)$(LIBDIR)/$(ARLIB)
.PHONY: install-header
install-header: $(HEADERS) $(PCFILE)
install -d $(DESTDIR)$(INCLUDEDIR) || true
install -m 0644 $(HEADERS) $(DESTDIR)$(INCLUDEDIR)/
install -d $(DESTDIR)$(LIBDIR)/pkgconfig || true
install -m 0644 $(PCFILE) $(DESTDIR)$(LIBDIR)/pkgconfig
.PHONY: install
install: install-shared install-static install-header
test1: test.c $(SHLIB)
$(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $< $(LDFLAGS) -L. -lminIni
test2: test2.cc $(SHLIB)
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -o $@ $< $(LDFLAGS) -L. -lminIni
.PHONY: test
test: test1 test2 $(SHLIB)
LD_LIBRARY_PATH=. ./test1
LD_LIBRARY_PATH=. ./test2
|