summaryrefslogtreecommitdiffstats
path: root/share/mk/bsd.lib.mk
diff options
context:
space:
mode:
Diffstat (limited to 'share/mk/bsd.lib.mk')
-rw-r--r--share/mk/bsd.lib.mk150
1 files changed, 71 insertions, 79 deletions
diff --git a/share/mk/bsd.lib.mk b/share/mk/bsd.lib.mk
index a007f59..ad77287 100644
--- a/share/mk/bsd.lib.mk
+++ b/share/mk/bsd.lib.mk
@@ -4,13 +4,6 @@
.include <bsd.init.mk>
-.if exists(${.CURDIR}/shlib_version)
-SHLIB_MAJOR != . ${.CURDIR}/shlib_version ; echo $$major
-.if ${OBJFORMAT} == aout
-SHLIB_MINOR != . ${.CURDIR}/shlib_version ; echo $$minor
-.endif
-.endif
-
# Set up the variables controlling shared libraries. After this section,
# SHLIB_NAME will be defined only if we are to create a shared library.
# SHLIB_LINK will be defined only if we are to create a link to it.
@@ -49,6 +42,14 @@ STRIP?= -s
.SUFFIXES:
.SUFFIXES: .out .o .po .So .S .s .asm .c .cc .cpp .cxx .m .C .f .y .l .ln
+.if !defined(PICFLAG)
+.if ${MACHINE_ARCH} == "sparc64"
+PICFLAG=-fPIC
+.else
+PICFLAG=-fpic
+.endif
+.endif
+
.c.ln:
${LINT} ${LINTOBJFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC} || \
touch ${.TARGET}
@@ -151,106 +152,93 @@ STRIP?= -s
@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
@mv ${.TARGET}.tmp ${.TARGET}
-.if !defined(INTERNALLIB) || defined(INTERNALSTATICLIB)
-.if !defined(NOPROFILE) && !defined(INTERNALLIB)
-_LIBS=lib${LIB}.a lib${LIB}_p.a
-.else
-_LIBS=lib${LIB}.a
-.endif
-.endif
-
-.if defined(SHLIB_NAME)
-_LIBS+=${SHLIB_NAME}
-.endif
-.if defined(INSTALL_PIC_ARCHIVE)
-_LIBS+=lib${LIB}_pic.a
-.endif
-
-.if !defined(PICFLAG)
-.if ${MACHINE_ARCH} == "sparc64"
-PICFLAG=-fPIC
-.else
-PICFLAG=-fpic
-.endif
-.endif
+all: objwarn
-LINTOBJS+= ${SRCS:M*.c:C/\..+$/.ln/}
+.if defined(LIB) && !empty(LIB)
+_LIBS= lib${LIB}.a
+OBJS+= ${SRCS:N*.h:R:S/$/.o/}
-.if defined(WANT_LINT) && defined(LIB) && defined(LINTOBJS) && !empty(LINTOBJS)
-LINTLIB=llib-l${LIB}.ln
-_LIBS+=${LINTLIB}
-.endif
-
-all: objwarn ${_LIBS}
-
-.if !defined(NOMAN)
-all: _manpages
-.endif
+lib${LIB}.a: ${OBJS} ${STATICOBJS}
+ @${ECHO} building static ${LIB} library
+ @rm -f ${.TARGET}
+ @${AR} cq ${.TARGET} `lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD}
+ ${RANLIB} ${.TARGET}
-OBJS+= ${SRCS:N*.h:R:S/$/.o/g}
+CLEANFILES+= a.out ${OBJS} ${OBJS:S/$/.tmp/} ${STATICOBJS}
-lib${LIB}.a:: ${OBJS} ${STATICOBJS}
- @${ECHO} building static ${LIB} library
- @rm -f lib${LIB}.a
- @${AR} cq lib${LIB}.a `lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD}
- ${RANLIB} lib${LIB}.a
+.if !defined(INTERNALLIB)
-POBJS+= ${OBJS:.o=.po} ${STATICOBJS:.o=.po}
.if !defined(NOPROFILE)
-lib${LIB}_p.a:: ${POBJS}
+_LIBS+= lib${LIB}_p.a
+POBJS+= ${OBJS:.o=.po} ${STATICOBJS:.o=.po}
+
+lib${LIB}_p.a: ${POBJS}
@${ECHO} building profiled ${LIB} library
- @rm -f lib${LIB}_p.a
- @${AR} cq lib${LIB}_p.a `lorder ${POBJS} | tsort -q` ${ARADD}
- ${RANLIB} lib${LIB}_p.a
+ @rm -f ${.TARGET}
+ @${AR} cq ${.TARGET} `lorder ${POBJS} | tsort -q` ${ARADD}
+ ${RANLIB} ${.TARGET}
+
+CLEANFILES+= ${POBJS} ${POBJS:S/$/.tmp/}
.endif
-SOBJS+= ${OBJS:.o=.So}
+SOBJS+= ${OBJS:.o=.So}
+
+CLEANFILES+= ${SOBJS} ${SOBJS:.So=.so} ${SOBJS:S/$/.tmp/}
.if defined(SHLIB_NAME)
+_LIBS+= ${SHLIB_NAME}
+
${SHLIB_NAME}: ${SOBJS}
@${ECHO} building shared library ${SHLIB_NAME}
- @rm -f ${SHLIB_NAME} ${SHLIB_LINK}
+ @rm -f ${.TARGET} ${SHLIB_LINK}
.if defined(SHLIB_LINK)
- @ln -sf ${SHLIB_NAME} ${SHLIB_LINK}
+ @ln -fs ${.TARGET} ${SHLIB_LINK}
.endif
.if ${OBJFORMAT} == aout
@${CC} -shared -Wl,-x,-assert,pure-text \
- -o ${SHLIB_NAME} \
+ -o ${.TARGET} \
`lorder ${SOBJS} | tsort -q` ${LDADD}
.else
@${CC} ${LDFLAGS} -shared -Wl,-x \
- -o ${SHLIB_NAME} -Wl,-soname,${SONAME} \
+ -o ${.TARGET} -Wl,-soname,${SONAME} \
`lorder ${SOBJS} | tsort -q` ${LDADD}
.endif
+
+CLEANFILES+= ${SHLIB_LINK} lib${LIB}.so.* lib${LIB}.so
.endif
.if defined(INSTALL_PIC_ARCHIVE)
-lib${LIB}_pic.a:: ${SOBJS}
+_LIBS+= lib${LIB}_pic.a
+
+lib${LIB}_pic.a: ${SOBJS}
@${ECHO} building special pic ${LIB} library
- @rm -f lib${LIB}_pic.a
- @${AR} cq lib${LIB}_pic.a ${SOBJS} ${ARADD}
- ${RANLIB} lib${LIB}_pic.a
+ @rm -f ${.TARGET}
+ @${AR} cq ${.TARGET} ${SOBJS} ${ARADD}
+ ${RANLIB} ${.TARGET}
.endif
-.if defined(WANT_LINT) && defined(LIB) && defined(LINTOBJS) && !empty(LINTOBJS)
+.if defined(WANT_LINT)
+LINTLIB= llib-l${LIB}.ln
+_LIBS+= ${LINTLIB}
+LINTOBJS+= ${SRCS:M*.c:.c=.ln}
+
${LINTLIB}: ${LINTOBJS}
- @${ECHO} building lint library ${LINTLIB}
- @rm -f ${LINTLIB}
+ @${ECHO} building lint library ${.TARGET}
+ @rm -f ${.TARGET}
${LINT} ${LINTLIBFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC}
-.endif
-.if !target(clean)
-clean:
- rm -f a.out ${OBJS} ${STATICOBJS} ${OBJS:S/$/.tmp/} ${CLEANFILES}
- rm -f lib${LIB}.a
- rm -f ${POBJS} ${POBJS:S/$/.tmp/} lib${LIB}_p.a
- rm -f ${SOBJS} ${SOBJS:.So=.so} ${SOBJS:S/$/.tmp/} \
- ${SHLIB_NAME} ${SHLIB_LINK} \
- lib${LIB}.so.* lib${LIB}.so lib${LIB}_pic.a
- rm -f ${LINTOBJS} ${LINTLIB}
-.if defined(CLEANDIRS) && !empty(CLEANDIRS)
- rm -rf ${CLEANDIRS}
+CLEANFILES+= ${LINTOBJS}
.endif
+
+.endif !defined(INTERNALLIB)
+
+all: ${_LIBS}
+
+CLEANFILES+= ${_LIBS}
+.endif defined(LIB) && !empty(LIB)
+
+.if !defined(NOMAN)
+all: _manpages
.endif
_EXTRADEPEND:
@@ -285,32 +273,34 @@ _SHLINSTALLFLAGS:= ${SHLINSTALLFLAGS}
_SHLINSTALLFLAGS:= ${_SHLINSTALLFLAGS${ie}}
.endfor
+.if defined(LIB) && !empty(LIB) && !defined(INTERNALLIB)
realinstall: _libinstall
_libinstall:
-.if !defined(INTERNALLIB)
+.if !defined(NOINSTALLLIB)
${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
${_INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR}
+.endif
.if !defined(NOPROFILE)
${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
${_INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR}
.endif
-.endif
.if defined(SHLIB_NAME)
${INSTALL} ${COPY} ${STRIP} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \
${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}
.if defined(SHLIB_LINK)
- ln -sf ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}/${SHLIB_LINK}
+ ln -fs ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}/${SHLIB_LINK}
.endif
.endif
.if defined(INSTALL_PIC_ARCHIVE)
${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
${_INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR}
.endif
-.if defined(WANT_LINT) && defined(LIB) && defined(LINTOBJS) && !empty(LINTOBJS)
+.if defined(WANT_LINT)
${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
${_INSTALLFLAGS} ${LINTLIB} ${DESTDIR}${LINTLIBDIR}
.endif
+.endif defined(LIB) && !empty(LIB) && !defined(INTERNALLIB)
realinstall:
.if defined(LINKS) && !empty(LINKS)
@@ -357,9 +347,11 @@ lint: ${SRCS:M*.c}
.include <bsd.dep.mk>
+.if defined(LIB) && !empty(LIB)
.if !exists(${.OBJDIR}/${DEPENDFILE})
${OBJS} ${STATICOBJS} ${POBJS} ${SOBJS}: ${SRCS:M*.h}
.endif
+.endif
.include <bsd.obj.mk>
OpenPOWER on IntegriCloud