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
|
# rules to build a library
SHLIB= lib${LIB}.so.${SHLIB_MAJOR}
SHLIB_LINK= lib${LIB}.so
LIBNAME= lib${LIB}.a
SONAME?= ${SHLIB}
OBJS+= ${SRCS:.c=.o}
SOBJS+= ${OBJS:.o=.So}
LIBS= ${LIBNAME} ${SHLIB}
CLEANFILES+= ${OBJS} ${SOBJS} ${LIBS} ${SHLIB_LINK}
LIBINSTALL?= _libinstall
.SUFFIXES: .So
.c.o:
${CC} ${CFLAGS} ${CPPFLAGS} -c $< -o $@
.c.So:
${CC} ${PICFLAG} -DPIC ${CPPFLAGS} ${CFLAGS} -c $< -o $@
all: depend ${LIBS}
${LIBNAME}: ${OBJS} ${STATICOBJS}
@${ECHO} building static library $@
${AR} cr $@ ${STATICOBJS} ${OBJS}
${RANLIB} $@
${SHLIB}: ${SOBJS}
@${ECHO} building shared library $@
@rm -f $@ ${SHLIB_LINK}
@ln -fs $@ ${SHLIB_LINK}
${CC} ${LDFLAGS} -shared -Wl,-x -o $@ -Wl,-soname,${SONAME} \
${SOBJS} ${LDADD}
_libinstall: all
${INSTALL} -d ${DESTDIR}${LIBDIR}
${INSTALL} -m ${LIBMODE} ${LIBNAME} ${DESTDIR}${LIBDIR}
${INSTALL} -d ${DESTDIR}${SHLIBDIR}
${INSTALL} -m ${LIBMODE} ${SHLIB} ${DESTDIR}${SHLIBDIR}
ln -fs ${SHLIB} ${DESTDIR}${SHLIBDIR}/${SHLIB_LINK}
${INSTALL} -d ${DESTDIR}${INCDIR}
for x in ${INCS}; do ${INSTALL} -m ${INCMODE} $$x ${DESTDIR}${INCDIR}; done
install: ${LIBINSTALL}
proginstall: install
clean:
rm -f ${OBJS} ${SOBJS} ${LIBS} ${SHLIB_LINK} ${CLEANFILES}
extra_depend:
@TMP=depend.$$$$; \
${SED} -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.So:/' .depend > $${TMP}; \
mv $${TMP} .depend
include ${MKDIR}/sys.mk
include ${MKDIR}/depend.mk
|