Added static_assert from Loki
[ustl.git] / Makefile
blobc17110e33dbbd8b2998d1b0b10f48e9cac7ebe84
1 include Config.mk
3 ################ Source files ##########################################
5 SRCS = $(wildcard *.cc)
6 INCS = $(filter-out bsconf.%,$(wildcard *.h)) ustl.tbff
7 OBJS = $(SRCS:.cc=.o)
8 DOCT = ustldoc.in
10 ################ Library link names ####################################
12 TOCLEAN += ${LIBSO} ${LIBA} ${LIBSOBLD}
14 ALLINST = install-incs
15 ifdef BUILD_SHARED
16 ALLLIBS += ${LIBSOBLD}
17 ALLINST += install-shared
18 endif
19 ifdef BUILD_STATIC
20 ALLLIBS += ${LIBA}
21 ALLINST += install-static
22 endif
24 ################ Compilation ###########################################
26 .PHONY: all install uninstall install-incs uninstall-incs
27 .PHONY: install-static install-shared uninstall-static uninstall-shared
28 .PHONY: clean depend dox html check dist distclean maintainer-clean
30 all: ${ALLLIBS}
32 %.o: %.cc
33 @echo " Compiling $< ..."
34 @${CXX} ${CXXFLAGS} -o $@ -c $<
36 %.s: %.cc
37 @echo " Compiling $< to assembly ..."
38 @${CXX} ${CXXFLAGS} -S -o $@ -c $<
40 ${LIBA}: ${OBJS}
41 @echo "Linking $@ ..."
42 @${AR} r $@ $?
43 @${RANLIB} $@
45 ${LIBSOBLD}: ${OBJS}
46 @echo "Linking $@ ..."
47 @${LD} ${LDFLAGS} ${SHBLDFL} -o $@ $^ ${LIBS}
49 html:
50 dox:
51 @${DOXYGEN} ${DOCT}
53 ################ Installation ##########################################
55 install: ${ALLINST}
56 uninstall: $(subst install,uninstall,${ALLINST})
58 install-shared: ${LIBSOBLD}
59 @echo "Installing ${LIBSOBLD} to ${LIBDIR} ..."
60 @${INSTALLDIR} ${LIBDIR}
61 @${INSTALLLIB} ${LIBSOBLD} ${LIBDIR}
62 @(cd ${LIBDIR}; \
63 rm -f ${LIBSO} ${LIBSOLNK}; \
64 ln -sf ${LIBSOBLD} ${LIBSO}; \
65 ln -sf ${LIBSOBLD} ${LIBSOLNK})
67 uninstall-shared:
68 @echo "Removing ${LIBSOBLD} from ${LIBDIR} ..."
69 @(cd ${LIBDIR}; \
70 rm -f ${LIBSO} ${LIBSOLNK} ${LIBSOBLD})
72 install-static: ${LIBA}
73 @echo "Installing ${LIBA} to ${LIBDIR} ..."
74 @${INSTALLDIR} ${LIBDIR}
75 @${INSTALLLIB} ${LIBA} ${LIBDIR}
77 uninstall-static:
78 @echo "Removing ${LIBA} from ${LIBDIR} ..."
79 @rm -f ${LIBDIR}/${LIBA}
81 install-incs: ${INCS}
82 @echo "Installing headers to ${INCDIR} ..."
83 @${INSTALLDIR} ${INCDIR}/${LIBNAME}
84 @for i in $(filter-out ${LIBNAME}.h,${INCS}); do \
85 ${INSTALLDATA} $$i ${INCDIR}/${LIBNAME}/$$i; \
86 done;
87 @${INSTALLDATA} ${LIBNAME}.h ${INCDIR}
89 uninstall-incs:
90 @echo "Removing headers from ${INCDIR} ..."
91 @rm -rf ${INCDIR}/${LIBNAME} ${INCDIR}/${LIBNAME}.h
93 ################ Maintenance ###########################################
95 clean:
96 @echo "Removing generated files ..."
97 @rm -f ${OBJS} ${TOCLEAN} *.rpo
98 @+${MAKE} -C bvt clean
100 depend: ${SRCS}
101 @${CXX} ${CXXFLAGS} -M ${SRCS} > .depend;
102 @+${MAKE} -C bvt depend
104 check: install
105 @echo "Compiling and running build verification tests ..."
106 @+${MAKE} -C bvt run
108 TMPDIR = /tmp
109 DISTDIR = ${HOME}/stored
110 ifeq (${BUILD},0)
111 DISTVER = ${MAJOR}.${MINOR}
112 else
113 DISTVER = ${MAJOR}.${MINOR}.${BUILD}
114 endif
115 DISTNAM = ${LIBNAME}-${DISTVER}
116 DISTLSM = ${DISTNAM}.lsm
117 DISTTAR = ${DISTNAM}.tar.bz2
118 DDOCTAR = ${DISTNAM}-docs.tar.bz2
120 dist:
121 mkdir ${TMPDIR}/${DISTNAM}
122 cp -r . ${TMPDIR}/${DISTNAM}
123 +${MAKE} -C ${TMPDIR}/${DISTNAM} dox distclean
124 (cd ${TMPDIR}; \
125 tar jcf ${DISTDIR}/${DDOCTAR} ${DISTNAM}/docs/html; \
126 rm -f ${DISTNAM}/.git; rm -rf ${DISTNAM}/docs/html; \
127 cp ${DISTNAM}/docs/${LIBNAME}.lsm ${DISTDIR}/${DISTLSM}; \
128 tar --numeric-owner --same-owner -jcf ${DISTDIR}/${DISTTAR} ${DISTNAM}; rm -rf ${DISTNAM})
130 distclean: clean
131 @rm -f Config.mk config.h ${LIBNAME}.spec bsconf.o bsconf .depend bvt/.depend
133 maintainer-clean: distclean
134 @rm -rf docs/html
136 -include .depend