Files
CKG/extern/ustl/1.5/Makefile
2025-06-07 11:34:38 -04:00

155 lines
4.0 KiB
Makefile

-include Config.mk
################ Source files ##########################################
SRCS := $(wildcard *.cc)
INCS := $(wildcard *.h)
OBJS := $(addprefix $O,$(SRCS:.cc=.o))
################ Compilation ###########################################
.PHONY: all clean html check dist distclean maintainer-clean
all: Config.mk config.h ${NAME}/config.h
ALLTGTS := Config.mk config.h ${NAME}/config.h
ifdef BUILD_SHARED
SLIBL := $O$(call slib_lnk,${NAME})
SLIBS := $O$(call slib_son,${NAME})
SLIBT := $O$(call slib_tgt,${NAME})
SLINKS := ${SLIBL}
ifneq (${SLIBS},${SLIBT})
SLINKS += ${SLIBS}
endif
ALLTGTS += ${SLIBT} ${SLINKS}
all: ${SLIBT} ${SLINKS}
${SLIBT}: ${OBJS}
@echo "Linking $(notdir $@) ..."
@${LD} -fPIC ${LDFLAGS} $(call slib_flags,$(subst $O,,${SLIBS})) -o $@ $^ ${LIBS}
${SLINKS}: ${SLIBT}
@(cd $(dir $@); rm -f $(notdir $@); ln -s $(notdir $<) $(notdir $@))
endif
ifdef BUILD_STATIC
LIBA := $Olib${NAME}.a
ALLTGTS += ${LIBA}
all: ${LIBA}
${LIBA}: ${OBJS}
@echo "Linking $@ ..."
@rm -f $@
@${AR} qc $@ ${OBJS}
@${RANLIB} $@
endif
$O%.o: %.cc
@echo " Compiling $< ..."
@[ -d $(dir $@) ] || mkdir -p $(dir $@)
@${CXX} ${CXXFLAGS} -MMD -MT "$(<:.cc=.s) $@" -o $@ -c $<
%.s: %.cc
@echo " Compiling $< to assembly ..."
@${CXX} ${CXXFLAGS} -S -o $@ -c $<
include bvt/Module.mk
################ Installation ##########################################
.PHONY: install uninstall install-incs uninstall-incs
####### Install headers
ifdef INCDIR # These ifdefs allow cold bootstrap to work correctly
LIDIR := ${INCDIR}/${NAME}
INCSI := $(addprefix ${LIDIR}/,$(filter-out ${NAME}.h,${INCS}))
RINCI := ${LIDIR}.h
install: install-incs
install-incs: ${INCSI} ${RINCI}
${INCSI}: ${LIDIR}/%.h: %.h
@echo "Installing $@ ..."
@${INSTALLDATA} $< $@
${RINCI}: ${NAME}.h
@echo "Installing $@ ..."
@${INSTALLDATA} $< $@
uninstall: uninstall-incs
uninstall-incs:
@echo "Removing ${LIDIR}/ and ${LIDIR}.h ..."
@(cd ${INCDIR}; rm -f ${INCSI} ${NAME}.h; [ ! -d ${NAME} ] || rm -rf ${NAME})
endif
####### Install libraries (shared and/or static)
ifdef LIBDIR
ifdef BUILD_SHARED
LIBTI := ${LIBDIR}/$(notdir ${SLIBT})
LIBLI := $(addprefix ${LIBDIR}/,$(notdir ${SLINKS}))
install: ${LIBTI} ${LIBLI}
${LIBTI}: ${SLIBT}
@echo "Installing $@ ..."
@${INSTALLLIB} $< $@
${LIBLI}: ${LIBTI}
@(cd ${LIBDIR}; rm -f $@; ln -s $(notdir $<) $(notdir $@))
endif
ifdef BUILD_STATIC
LIBAI := ${LIBDIR}/$(notdir ${LIBA})
install: ${LIBAI}
${LIBAI}: ${LIBA}
@echo "Installing $@ ..."
@${INSTALLLIB} $< $@
endif
uninstall:
@echo "Removing library from ${LIBDIR} ..."
@rm -f ${LIBTI} ${LIBLI} ${LIBSI} ${LIBAI}
endif
################ Maintenance ###########################################
clean:
@[ ! -d ./$O ] || rm -rf ./$O
html: ${SRCS} ${INCS} ${NAME}doc.in
@${DOXYGEN} ${NAME}doc.in
ifdef MAJOR
DISTVER := ${MAJOR}.${MINOR}
DISTNAM := ${NAME}-${DISTVER}
DISTLSM := ${DISTNAM}.lsm
DISTTAR := ${DISTNAM}.tar.bz2
dist:
@echo "Generating ${DISTTAR} and ${DISTLSM} ..."
@mkdir .${DISTNAM}
@rm -f ${DISTTAR}
@cp -r * .${DISTNAM} && mv .${DISTNAM} ${DISTNAM}
@+${MAKE} -sC ${DISTNAM} maintainer-clean
@tar jcf ${DISTTAR} ${DISTNAM} && rm -rf ${DISTNAM}
@echo "s/@version@/${DISTVER}/" > ${DISTLSM}.sed
@echo "s/@date@/`date +%F`/" >> ${DISTLSM}.sed
@echo -n "s/@disttar@/`du -h --apparent-size ${DISTTAR}`/" >> ${DISTLSM}.sed;
@sed -f ${DISTLSM}.sed docs/${NAME}.lsm > ${DISTLSM} && rm -f ${DISTLSM}.sed
endif
distclean: clean
@rm -f Config.mk config.h config.status ${NAME}
maintainer-clean: distclean
@if [ -d docs/html ]; then rm -f docs/html/*; rmdir docs/html; fi
INPLACE_INCS := $(addprefix ${NAME}/,$(filter-out config.h,${INCS}))
${INPLACE_INCS}: ${NAME}/%: ${NAME}/config.h
${NAME}/config.h: config.h
@echo " Linking inplace header location ..."
@rm -f ${NAME}; ln -s . ${NAME}
${OBJS}: Makefile Config.mk config.h
Config.mk: Config.mk.in
config.h: config.h.in
Config.mk config.h: configure
@if [ -x config.status ]; then echo "Reconfiguring ..."; ./config.status; \
else echo "Running configure ..."; ./configure; fi
-include ${OBJS:.o=.d}