3 ################ Source files ##########################################
5 SRCS
:= $(wildcard *.
cc)
6 INCS
:= $(wildcard *.h
)
7 OBJS
:= $(addprefix $O,$(SRCS
:.
cc=.o
))
9 ################ Compilation ###########################################
11 .PHONY
: all clean html
check dist distclean maintainer-clean
13 all: Config.mk config.h
${LIBNAME}
14 ALLTGTS
:= Config.mk config.h
${LIBNAME}
17 SLIBL
:= $O$(call slib_lnk
,${LIBNAME})
18 SLIBS
:= $O$(call slib_son
,${LIBNAME})
19 SLIBT
:= $O$(call slib_tgt
,${LIBNAME})
20 ALLTGTS
+= ${SLIBT} ${SLIBS} ${SLIBL}
22 all: ${SLIBT} ${SLIBS} ${SLIBL}
24 @echo
"Linking $(notdir $@) ..."
25 @
${LD} ${LDFLAGS} $(call shlib_flags
,$(subst $O,,${SLIBS})) -o
$@
$^
${LIBS}
26 ${SLIBS} ${SLIBL}: ${SLIBT}
27 @
(cd
$(dir $@
); rm -f
$(notdir $@
); ln
-s
$(notdir $<) $(notdir $@
))
31 LIBA
:= $Olib${LIBNAME}.a
36 @echo
"Linking $@ ..."
42 @echo
" Compiling $< ..."
43 @
[ -d
$(dir $@
) ] || mkdir
-p
$(dir $@
)
44 @
${CXX} ${CXXFLAGS} -MMD
-MT
"$(<:.cc=.s) $@" -o
$@
-c
$<
47 @echo
" Compiling $< to assembly ..."
48 @
${CXX} ${CXXFLAGS} -S
-o
$@
-c
$<
52 ################ Installation ##########################################
54 .PHONY
: install uninstall install-incs uninstall-incs
56 ####### Install headers
58 ifdef INCDIR
# These ifdefs allow cold bootstrap to work correctly
59 LIDIR
:= ${INCDIR}/${LIBNAME}
60 INCSI
:= $(addprefix ${LIDIR}/,$(filter-out ${LIBNAME}.h
,${INCS}))
64 install-incs
: ${INCSI} ${RINCI}
65 ${INCSI}: ${LIDIR}/%.h
: %.h
66 @echo
"Installing $@ ..."
68 ${RINCI}: ${LIBNAME}.h
69 @echo
"Installing $@ ..."
72 @echo
"Removing ${LIDIR}/ and ${LIDIR}.h ..."
73 @
(cd
${INCDIR}; rm -f
${INCSI} ${LIBNAME}.h
; rmdir
${LIBNAME} &> /dev
/null || true
)
76 ####### Install libraries (shared and/or static)
80 .PHONY
: install-shared uninstall-shared
81 LIBTI
:= ${LIBDIR}/$(notdir ${SLIBT})
82 LIBLI
:= ${LIBDIR}/$(notdir ${SLIBS})
83 LIBSI
:= ${LIBDIR}/$(notdir ${SLIBL})
84 install: ${LIBTI} ${LIBLI} ${LIBSI}
86 @echo
"Installing $@ ..."
88 ${LIBLI} ${LIBSI}: ${LIBTI}
89 @
(cd
${LIBDIR}; rm -f
$@
; ln
-s
$(notdir $<) $(notdir $@
))
92 .PHONY
: install-static uninstall-static
93 LIBAI
:= ${LIBDIR}/${LIBA}
96 @echo
"Installing $@ ..."
100 uninstall: uninstall-incs
101 @echo
"Removing library from ${LIBDIR} ..."
102 @
rm -f
${LIBTI} ${LIBLI} ${LIBSI} ${LIBAI}
105 ################ Maintenance ###########################################
108 @
rm -f
${OBJS} $(OBJS
:.o
=.d
) ${LIBA} ${SLIBT} ${SLIBL} ${SLIBS}
109 @rmdir
$O &> /dev
/null || true
114 DISTVER
:= ${MAJOR}.
${MINOR}
115 DISTNAM
:= ${LIBNAME}-${DISTVER}
116 DISTLSM
:= ${DISTNAM}.lsm
117 DISTTAR
:= ${DISTNAM}.
tar.bz2
120 @echo
"Generating ${DISTTAR} and ${DISTLSM} ..."
123 @cp
-r
* .
${DISTNAM} && mv .
${DISTNAM} ${DISTNAM}
124 @
+${MAKE} -sC
${DISTNAM} maintainer-clean
125 @
tar jcf
${DISTTAR} ${DISTNAM} && rm -rf
${DISTNAM}
126 @echo
"s/@version@/${DISTVER}/" > ${DISTLSM}.sed
127 @echo
"s/@date@/`date +%F`/" >> ${DISTLSM}.sed
128 @echo
-n
"s/@disttar@/`du -h --apparent-size ${DISTTAR}`/" >> ${DISTLSM}.sed
;
129 @sed
-f
${DISTLSM}.sed docs
/${LIBNAME}.lsm
> ${DISTLSM} && rm -f
${DISTLSM}.sed
133 @
rm -f Config.mk config.h config.status
${LIBNAME}
135 maintainer-clean
: distclean
136 @if
[ -d docs
/html
]; then
rm -f docs
/html
/*; rmdir docs
/html
; fi
139 @
${DOXYGEN} ${LIBNAME}doc.in
142 @
rm -f
${LIBNAME}; ln
-s .
${LIBNAME}
144 ${OBJS} ${bvt
/OBJS
}: Makefile Config.mk config.h
145 ${bvt
/OBJS
}: bvt
/Module.mk
146 Config.mk
: Config.mk.in
147 config.h
: config.h.in
148 Config.mk config.h
: configure
149 @if
[ -x config.status
]; then echo
"Reconfiguring ..."; .
/config.status
; \
150 else echo
"Running configure ..."; .
/configure
; fi
152 -include ${OBJS
:.o
=.d
} ${bvt
/OBJS
:.o
=.d
}