aboutsummaryrefslogtreecommitdiff
path: root/mk/lib.mk
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2008-01-10 16:35:59 +0000
committerRoy Marples <roy@marples.name>2008-01-10 16:35:59 +0000
commit43147845209873b0776bd75d363913fe25611f49 (patch)
treeab3295c30664476d8d05b0fe5fe9ace702ade5ea /mk/lib.mk
parent2643f2e605f102d2c2fa098d0cf5400d3795ed4a (diff)
Allow for OS and SUBOS folders so we can introduce NetBSD scripts whilst keeping BSD for all BSD's.
Diffstat (limited to 'mk/lib.mk')
-rw-r--r--mk/lib.mk65
1 files changed, 65 insertions, 0 deletions
diff --git a/mk/lib.mk b/mk/lib.mk
new file mode 100644
index 00000000..7a570ebe
--- /dev/null
+++ b/mk/lib.mk
@@ -0,0 +1,65 @@
+# rules to build a library
+# based on FreeBSD's bsd.lib.mk
+
+# Copyright 2008 Roy Marples
+
+LIBNAME?= lib
+
+SHLIB_NAME= lib${LIB}.so.${SHLIB_MAJOR}
+SHLIB_LINK= lib${LIB}.so
+SHLIBDIR?= /${LIBNAME}
+SONAME?= ${SHLIB_NAME}
+
+OBJS+= ${SRCS:.c=.o}
+SOBJS+= ${OBJS:.o=.So}
+_LIBS= lib${LIB}.a ${SHLIB_NAME}
+
+ECHO?= echo
+AR?= ar
+RANLIB?= ranlib
+INSTALL?= install
+
+PICFLAG?= -fPIC
+
+INCDIR?= /usr/include
+INCMODE?= 0444
+
+LIBDIR?= /usr/${LIBNAME}
+LIBMODE?= 0444
+
+.SUFFIXES: .So
+
+.c.So:
+ ${CC} ${PICFLAG} -DPIC ${CFLAGS} -c $< -o $@
+
+all: depend ${_LIBS}
+
+lib${LIB}.a: ${OBJS} ${STATICOBJS}
+ @${ECHO} building static library $@
+ ${AR} rc $@ $^
+ ${RANLIB} $@
+
+${SHLIB_NAME}: ${VERSION_MAP}
+LDFLAGS+= -Wl,--version-script=${VERSION_MAP}
+
+${SHLIB_NAME}: ${SOBJS}
+ @${ECHO} building shared library $@
+ @rm -f $@ ${SHLIB_LINK}
+ @ln -fs $@ ${SHLIB_LINK}
+ ${CC} ${LDFLAGS} -shared -Wl,-x \
+ -o $@ -Wl,-soname,${SONAME} \
+ ${SOBJS} ${LDADD}
+
+install: all
+ ${INSTALL} -d ${DESTDIR}${LIBDIR}
+ ${INSTALL} -m ${LIBMODE} lib${LIB}.a ${DESTDIR}${LIBDIR}
+ ${INSTALL} -d ${DESTDIR}${SHLIBDIR}
+ ${INSTALL} -m ${LIBMODE} ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}
+ ln -fs ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}/${SHLIB_LINK}
+ ${INSTALL} -d ${DESTDIR}${INCDIR}
+ for x in ${INCS}; do ${INSTALL} -m ${INCMODE} $$x ${DESTDIR}${INCDIR}; done
+
+clean:
+ rm -f ${OBJS} ${SOBJS} ${_LIBS} ${SHLIB_LINK} ${CLEANFILES}
+
+include ${MK}/depend.mk