#!/bin/bash # Script to make the JSON-Fortran libraries. # Exit Codes found in /usr/include/sysexits.h #set -x # Function to configure, make and then install the Package - contains Package Specific build configuration func_configure_make_install () { export RETVAL=0 export ENABLE_TESTS=TRUE cd ${WORK_DIR} if [ ${ACC_FC} ] ; then FC_TYPE=${ACC_FC} elif [ "${DIST_F90}" == "gfortran" ] ; then FC_TYPE=gnu fi case "${ACC_ENABLE_SHARED}" in "Y" | "y" | "1" ) BUILD_SHARED=1 ;; esac [ "${BUILD_TYPE}" == "debug" ] \ && CMAKE_BUILD_TYPE="Debug" \ || CMAKE_BUILD_TYPE="Release" [ -d ${UTIL_DIR}/bin ] \ && PATH=${UTIL_DIR}/bin${PATH:+:${PATH}} [ "${CMAKE_BINARY}" ] \ || CMAKE_BINARY=cmake if [ `uname` == "Darwin" ] ; then [ -d /opt/X11 ] \ && export CFLAGS="${CFLAGS} -I/opt/X11/include" \ || echo -e "\nPlease install XQuartz - http://xquartz.macosforge.org/landing/ \n" \ || exit 69 fi if [[ $ACC_COMPILER_TOOLSET == *msys ]] ; then CMAKE_CONF_OPTIONS=( \ -G "MSYS Makefiles" \ ) else CMAKE_CONF_OPTIONS=( \ -DSKIP_DOC_GEN=TRUE \ ) fi if ( [ ! -e ALREADY_BUILT ] ) ; then echo -e "\nBuilding SHARED and STATIC Libraries...\n" ${CMAKE_BINARY} -DCMAKE_INSTALL_PREFIX=${OUTPUT_DIR}/share \ -DCMAKE_VERBOSE_MAKEFILE=true \ -DUSE_RPATH=OFF \ -DENABLE_TESTS=${ENABLE_TESTS} \ ../ func_print_compiler_linker_flags [ -d ${OUTPUT_DIR}/share ] || mkdir -p ${OUTPUT_DIR}/share ${GMAKE} -j ${ACC_SET_GMAKE_JOBS} ${GMAKE} install export INSTALL_BUILD_NAME=$(basename ${OUTPUT_DIR}/share/jsonfortran-${FC_TYPE}*) export INSTALL_PATH=${OUTPUT_DIR}/share/${INSTALL_BUILD_NAME} rsync -aq ${INSTALL_PATH}/lib/ ${OUTPUT_DIR}/lib/ [ -d ${OUTPUT_DIR}/lib/cmake ] \ || mkdir -p ${OUTPUT_DIR}/lib/cmake rsync -aq ${INSTALL_PATH}/cmake/ ${OUTPUT_DIR}/lib/cmake/jsonfortran/ cd ${OUTPUT_DIR}/modules ln -s ../lib/json_*.mod . export RETVAL=$? fi if [ "${ARGUMENTS[1]}" == "-test" ] ; then echo -e "\nBuilding tests for `echo ${PACKAGE_VERSION}`...\n" ${GMAKE} check | tee /tmp/${PACKAGE_VERSION}_tests.txt export RETVAL=$? fi if ( [ `uname` == "Darwin" ] && [ "${FC}" == "ifort" ] && [ "${RETVAL}" -eq 0 ] ) ; then ln -s /opt/intel/lib/* ${OUTPUT_DIR}/lib/ &> /dev/null 2>&1 fi } # Function that contains Package Specific files and directories to be removed func_remove_package () { rm -rf ${OUTPUT_DIR}/lib/cmake/jsonfortran rm -f ${OUTPUT_DIR}/lib/json_* rm -f ${OUTPUT_DIR}/lib/libjsonfortran.* rm -f ${OUTPUT_DIR}/lib/pkgconfig/json-fortran.pc rm -f ${OUTPUT_DIR}/modules/json_* rm -rf ${OUTPUT_DIR}/share/$(basename ${OUTPUT_DIR}/share/jsonfortran-${FC_TYPE}*) }