# # $Id: shlib.subr.in,v 1.13 2004/05/13 18:24:36 jmmv Exp $ # Shared library type specification. # # buildtool # Copyright (c) 2003, 2004 Julio M. Merino Vidal. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # 3. Neither the name of the author nor the names of contributors may # be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A # PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF # USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # BT_TARGET_DEFS="${BT_TARGET_DEFS} BT_OBJECTS BT_SOURCES BT_TARGET_LINKS \ BT_LIB_MAJOR BT_LIB_MINOR BT_LIB_MICRO BT_BASENAME" shlib_defs() { local target="${BT_BASENAME:-1}" local version bt_source_depends ${BT_SOURCES} version= [ -n "${BT_LIB_MAJOR}" ] && version=${BT_LIB_MAJOR} [ -n "${BT_LIB_MINOR}" ] && version=${BT_LIB_MAJOR}.${BT_LIB_MINOR} [ -n "${BT_LIB_MICRO}" ] && \ version=${BT_LIB_MAJOR}.${BT_LIB_MINOR}.${BT_LIB_MICRO} case ${BT_LIB_PIC_NAMING} in Darwin) BT_TARGET_FILE=${target}.${version}.A.dylib ;; GNU) if [ -z ${version} ]; then BT_TARGET_FILE=${target}.so BT_FLAGS_LD+="-soname=${BT_TARGET_FILE}" else BT_TARGET_FILE=${target}.so.${version} linkmajor=${target}.so.${BT_LIB_MAJOR} if [ -n ${BT_LIB_MINOR} ]; then local linkmajor linkminor linkminor=${target}.so BT_TARGET_LINKS="${linkmajor} ${linkminor}" BT_FLAGS_LD+="-soname=${linkmajor}" else BT_TARGET_LINKS="${target}.so" BT_FLAGS_LD+="-soname=${linkmajor}" fi fi ;; *) btcmn_err "unkown naming scheme for libraries" ;; esac } shlib_build() { local l lang=c echo ${BT_SOURCES} | grep '\.cc' >/dev/null && lang=cxx echo ${BT_SOURCES} | grep '\.cpp' >/dev/null && lang=cxx bt_link_${lang} -shared ${BT_FLAGS_LD} -o ${BT_TARGET_FILE} \ ${BT_OBJECTS} ${BT_LIBS} for l in ${BT_TARGET_LINKS}; do bt_install_symlink ${BT_TARGET_FILE} ${l} done } shlib_deinstall() { local l bt_remove ${BT_DIR_LIB}/${BT_TARGET_FILE} for l in ${BT_TARGET_LINKS}; do bt_remove ${BT_DIR_LIB}/${l} done rmdir -p ${BT_DIR_LIB} 2>/dev/null || true } shlib_install() { local l bt_install_dir ${BT_DIR_LIB} bt_install_data ${BT_TARGET_FILE} ${BT_DIR_LIB} for l in ${BT_TARGET_LINKS}; do ( cd ${BT_DESTDIR}${BT_DIR_LIB} && \ bt_install_symlink ${BT_TARGET_FILE} ${l} ) done } shlib_clean() { bt_remove ${BT_TARGET_FILE} ${BT_TARGET_LINKS} } # Local Variables: *** # mode: shell-script *** # End: *** # vim: syntax=sh