ports makefile stuff (bsd.lib.mk)
Jim Stapleton
stapleton.41 at gmail.com
Wed Feb 6 20:20:58 UTC 2008
I made a patch to bsd.lib.mk if anyone is interested. It adds a
"BUILDTO_DIR" variable, which sets a directory for the final .a and
.so files to be built to.
Is there any chance of this being integrated into the FreeBSD make system?
(created by "diff -C 5 /usr/share/mk/bsd.lib.mk bsd.lib.mk >
bsd.lib.mk_patch", on a FreeBSD 6.2 system)
=====PATCH START=====
*** /usr/share/mk/bsd.lib.mk Mon Apr 9 17:30:40 2007
--- bsd.lib.mk Wed Feb 6 15:03:58 2008
***************
*** 6,15 ****
--- 6,16 ----
# 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.
# INSTALL_PIC_ARCHIVE will be defined only if we are to create a PIC archive.
+ # BUILDTO_DIR may be defined to change the directory where the
"final" objects are built to and stored
.if defined(NO_PIC)
.undef SHLIB_NAME
.undef INSTALL_PIC_ARCHIVE
.else
.if !defined(SHLIB) && defined(LIB)
***************
*** 41,50 ****
--- 42,55 ----
# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries
# .So used for PIC object files
.SUFFIXES:
.SUFFIXES: .out .o .po .So .S .asm .s .c .cc .cpp .cxx .m .C .f .y .l .ln
+ .if defined(BUILDTO_DIR)
+ .PATH: $(BUILTDO_DIR)
+ .endif
+
.if !defined(PICFLAG)
.if ${MACHINE_ARCH} == "sparc64"
PICFLAG=-fPIC
.else
PICFLAG=-fpic
***************
*** 106,131 ****
.if defined(LIB) && !empty(LIB)
_LIBS= lib${LIB}.a
lib${LIB}.a: ${OBJS} ${STATICOBJS}
@${ECHO} building static ${LIB} library
! @rm -f ${.TARGET}
! @${AR} cq ${.TARGET} `lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD}
! ${RANLIB} ${.TARGET}
.endif
.if !defined(INTERNALLIB)
.if !defined(NO_PROFILE) && defined(LIB) && !empty(LIB)
_LIBS+= lib${LIB}_p.a
POBJS+= ${OBJS:.o=.po} ${STATICOBJS:.o=.po}
lib${LIB}_p.a: ${POBJS}
@${ECHO} building profiled ${LIB} library
! @rm -f ${.TARGET}
! @${AR} cq ${.TARGET} `lorder ${POBJS} | tsort -q` ${ARADD}
! ${RANLIB} ${.TARGET}
.endif
.if defined(SHLIB_NAME) || \
defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
SOBJS+= ${OBJS:.o=.So}
--- 111,136 ----
.if defined(LIB) && !empty(LIB)
_LIBS= lib${LIB}.a
lib${LIB}.a: ${OBJS} ${STATICOBJS}
@${ECHO} building static ${LIB} library
! @rm -f ${BUILDTO_DIR}/${.TARGET} 2>&1 2>> /dev/null || $(TRUE)
! @${AR} cq ${BUILDTO_DIR}/${.TARGET} `lorder ${OBJS} ${STATICOBJS} |
tsort -q` ${ARADD}
! ${RANLIB} ${BUILDTO_DIR}/${.TARGET}
.endif
.if !defined(INTERNALLIB)
.if !defined(NO_PROFILE) && defined(LIB) && !empty(LIB)
_LIBS+= lib${LIB}_p.a
POBJS+= ${OBJS:.o=.po} ${STATICOBJS:.o=.po}
lib${LIB}_p.a: ${POBJS}
@${ECHO} building profiled ${LIB} library
! @rm -f ${BUILDTO_DIR}/${.TARGET} 2>&1 2>> /dev/null || $(TRUE)
! @${AR} cq ${BUILDTO_DIR}/${.TARGET} `lorder ${POBJS} | tsort -q` ${ARADD}
! ${RANLIB} ${BUILDTO_DIR}/${.TARGET}
.endif
.if defined(SHLIB_NAME) || \
defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
SOBJS+= ${OBJS:.o=.So}
***************
*** 134,160 ****
.if defined(SHLIB_NAME)
_LIBS+= ${SHLIB_NAME}
${SHLIB_NAME}: ${SOBJS}
@${ECHO} building shared library ${SHLIB_NAME}
! @rm -f ${.TARGET} ${SHLIB_LINK}
.if defined(SHLIB_LINK)
! @ln -fs ${.TARGET} ${SHLIB_LINK}
.endif
@${CC} ${LDFLAGS} -shared -Wl,-x \
! -o ${.TARGET} -Wl,-soname,${SONAME} \
`lorder ${SOBJS} | tsort -q` ${LDADD}
.endif
.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
_LIBS+= lib${LIB}_pic.a
lib${LIB}_pic.a: ${SOBJS}
@${ECHO} building special pic ${LIB} library
! @rm -f ${.TARGET}
! @${AR} cq ${.TARGET} ${SOBJS} ${ARADD}
! ${RANLIB} ${.TARGET}
.endif
.if defined(WANT_LINT) && !defined(NO_LINT) && defined(LIB) && !empty(LIB)
LINTLIB= llib-l${LIB}.ln
_LIBS+= ${LINTLIB}
--- 139,165 ----
.if defined(SHLIB_NAME)
_LIBS+= ${SHLIB_NAME}
${SHLIB_NAME}: ${SOBJS}
@${ECHO} building shared library ${SHLIB_NAME}
! @rm -f ${BUILDTO_DIR}/${.TARGET} ${BUILDTO_DIR}/${SHLIB_LINK} 2>&1
2>> /dev/null || $(TRUE)
.if defined(SHLIB_LINK)
! @ln -fs ${BUILDTO_DIR}/${.TARGET} ${BUILDTO_DIR}/${SHLIB_LINK}
.endif
@${CC} ${LDFLAGS} -shared -Wl,-x \
! -o ${BUILDTO_DIR}/${.TARGET} -Wl,-soname,${SONAME} \
`lorder ${SOBJS} | tsort -q` ${LDADD}
.endif
.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
_LIBS+= lib${LIB}_pic.a
lib${LIB}_pic.a: ${SOBJS}
@${ECHO} building special pic ${LIB} library
! @rm -f ${BUILDTO_DIR}/${.TARGET} 2>&1 2>> /dev/null || $(TRUE)
! @${AR} cq ${BUILDTO_DIR}/${.TARGET} ${SOBJS} ${ARADD}
! ${RANLIB} ${BUILDTO_DIR}/${.TARGET}
.endif
.if defined(WANT_LINT) && !defined(NO_LINT) && defined(LIB) && !empty(LIB)
LINTLIB= llib-l${LIB}.ln
_LIBS+= ${LINTLIB}
***************
*** 207,226 ****
realinstall: _libinstall
.ORDER: beforeinstall _libinstall
_libinstall:
.if defined(LIB) && !empty(LIB) && !defined(NO_INSTALLLIB)
${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
! ${_INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR}
.endif
.if !defined(NO_PROFILE) && defined(LIB) && !empty(LIB)
${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
! ${_INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR}
.endif
.if defined(SHLIB_NAME)
${INSTALL} ${STRIP} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \
! ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}
.if defined(SHLIB_LINK)
.if ${SHLIBDIR} == ${LIBDIR}
ln -fs ${SHLIB_NAME} ${DESTDIR}${LIBDIR}/${SHLIB_LINK}
.else
ln -fs ${_SHLIBDIRPREFIX}${SHLIBDIR}/${SHLIB_NAME} \
--- 212,231 ----
realinstall: _libinstall
.ORDER: beforeinstall _libinstall
_libinstall:
.if defined(LIB) && !empty(LIB) && !defined(NO_INSTALLLIB)
${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
! ${_INSTALLFLAGS} ${BUILDTO_DIR}/lib${LIB}.a ${DESTDIR}${LIBDIR}
.endif
.if !defined(NO_PROFILE) && defined(LIB) && !empty(LIB)
${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
! ${_INSTALLFLAGS} ${BUILDTO_DIR}/lib${LIB}_p.a ${DESTDIR}${LIBDIR}
.endif
.if defined(SHLIB_NAME)
${INSTALL} ${STRIP} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \
! ${BUILDTO_DIR}/${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}
.if defined(SHLIB_LINK)
.if ${SHLIBDIR} == ${LIBDIR}
ln -fs ${SHLIB_NAME} ${DESTDIR}${LIBDIR}/${SHLIB_LINK}
.else
ln -fs ${_SHLIBDIRPREFIX}${SHLIBDIR}/${SHLIB_NAME} \
***************
*** 232,242 ****
.endif
.endif
.endif
.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
! ${_INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR}
.endif
.if defined(WANT_LINT) && !defined(NO_LINT) && defined(LIB) && !empty(LIB)
${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
${_INSTALLFLAGS} ${LINTLIB} ${DESTDIR}${LINTLIBDIR}
.endif
--- 237,247 ----
.endif
.endif
.endif
.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
! ${_INSTALLFLAGS} ${BUILDTO_DIR}/lib${LIB}_pic.a ${DESTDIR}${LIBDIR}
.endif
.if defined(WANT_LINT) && !defined(NO_LINT) && defined(LIB) && !empty(LIB)
${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
${_INSTALLFLAGS} ${LINTLIB} ${DESTDIR}${LINTLIBDIR}
.endif
=====PATCH END=====
Thanks,
-Jim Stapleton
More information about the freebsd-questions
mailing list