Date: Wed, 6 Feb 2008 15:20:57 -0500 From: "Jim Stapleton" <stapleton.41@gmail.com> To: freebsd-questions@freebsd.org Subject: Re: ports makefile stuff (bsd.lib.mk) Message-ID: <80f4f2b20802061220t78dab43bg11b30eb3068d78df@mail.gmail.com> In-Reply-To: <80f4f2b20802060749p60c9d0ddw83b1ecbbed19db47@mail.gmail.com> References: <80f4f2b20802060749p60c9d0ddw83b1ecbbed19db47@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?80f4f2b20802061220t78dab43bg11b30eb3068d78df>