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
|
PROJECT = simpleini
MULTIARCH ?= $(shell $(CC) --print-multiarch)
PREFIX ?= /usr
INCLUDEDIR ?= include
LIBDIR ?= lib/$(MULTIARCH)
CPPFLAGS += -DSI_CONVERT_ICU -DSI_SUPPORT_IOSTREAMS
HEADERS := $(wildcard *.h)
SRCS := SimpleIni.cpp
OBJS := $(SRCS:.cpp=.o)
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) -o $@ $^ $(LDFLAGS) -licuuc
SimpleIni.o: SimpleIni.cpp
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $^
$(PCFILE): $(PCFILE).in
sed 's|@prefix@|$(PREFIX)|; s|@libdir@|$(LIBDIR)|; s|@includedir@|$(INCLUDEDIR)|; s|@version@|$(VERSION)|' $< > $@
.PHONY: clean
clean:
+$(MAKE) -C tests clean
rm -f $(ARLIB) $(SHLIB) $(OBJS) $(PCFILE) *.o testsi test*-out*.ini
.PHONY: install-shared
install-shared: $(SHLIB)
install -d $(DESTDIR)$(PREFIX)/$(LIBDIR) || true
install -m 0644 $< $(DESTDIR)$(PREFIX)/$(LIBDIR)/$(REAL_NAME)
rm -f $(DESTDIR)$(PREFIX)/$(LIBDIR)/$(SO_NAME)
ln -s $(REAL_NAME) $(DESTDIR)$(PREFIX)/$(LIBDIR)/$(SO_NAME)
rm -f $(DESTDIR)$(PREFIX)/$(LIBDIR)/$(LIB_NAME)
ln -s $(SO_NAME) $(DESTDIR)$(PREFIX)/$(LIBDIR)/$(LIB_NAME)
.PHONY: install-static
install-static: $(ARLIB)
install -d $(DESTDIR)$(PREFIX)/$(LIBDIR) || true
install -m 0644 $< $(DESTDIR)$(PREFIX)/$(LIBDIR)/$(ARLIB)
.PHONY: install-header
install-header: $(HEADERS) $(PCFILE)
install -d $(DESTDIR)$(PREFIX)/$(INCLUDEDIR) || true
install -m 0644 $(HEADERS) $(DESTDIR)$(PREFIX)/$(INCLUDEDIR)/
install -d $(DESTDIR)$(PREFIX)/$(LIBDIR)/pkgconfig || true
install -m 0644 $(PCFILE) $(DESTDIR)$(PREFIX)/$(LIBDIR)/pkgconfig
.PHONY: install
install: install-shared install-static install-header
.PHONY: test
test:
+$(MAKE) -C tests
|