#!/bin/bash # Script to make the PGPLOT 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 () { case "${ACC_ENABLE_SHARED}" in "Y" | "y" | "1" ) BUILD_SHARED=1 ;; esac cd ${WORK_DIR} if [ ! -e ALREADY_BUILT ] ; then rm -f libpgplot.a rm -f libpgplot.so rm -f libpgplot.dylib rm -f libcpgplot.a rm -f cpgdemo rm -f figdisp rm -f pgdisp rm -f pgxwin_server if [[ $ACC_COMPILER_TOOLSET == mingw* ]] ; then SPEC=gfortran-gcc OS=win7 else SPEC=${FC}_gcc OS=linux fi [ "${FC}" == "ifort" ] \ && export NON_FORTRAN_MAIN_LINK="-nofor_main" [ "${BUILD_TYPE}" == "debug" ] \ && SPEC+='_g' if ( [ ! -d /usr/X11R6/include ] && [ `uname` == "Linux" ] && [ "${FC}" == "gfortran" ] ) ; then [ -d /usr/include/X11 ] \ && sed -i "s%usr/X11R6/include%usr/include%g" sys_linux/gfortran_gcc*.conf [ -e /usr/lib64/libX11.so ] \ && sed -i "s%usr/X11R6/lib%usr/lib64%g" sys_linux/gfortran_gcc*.conf fi if ( [ `uname` == "Linux" ] && [ "${FC}" == "gfortran" ] ) ; then sed -i 's%SHARED_LIB="libpgplot.so"%SHARED_LIB="${SHARED_LIB_NAME}"%g' sys_linux/gfortran_gcc*.conf sed -i 's%SHARED_LD="gcc -shared -o $SHARED_LIB"%SHARED_LD="${SHARED_LIB_COMMAND}"%g' sys_linux/gfortran_gcc*.conf elif ( [ `uname` == "Linux" ] && [ "${FC}" == "ifort" ] ) ; then sed -i 's%SHARED_LIB="libpgplot.so"%SHARED_LIB="${SHARED_LIB_NAME}"%g' sys_linux/ifort_gcc*.conf sed -i 's%SHARED_LD="gcc -shared -o $SHARED_LIB"%SHARED_LD="${SHARED_LIB_COMMAND}"%g' sys_linux/ifort_gcc*.conf elif ( [ `uname` == "Darwin" ] && [ "${FC}" == "gfortran" ] ) ; then sed -i .old 's%SHARED_LIB=""%SHARED_LIB="${SHARED_LIB_NAME}"%g' sys_bsd/gfortran_gcc*.conf sed -i .old 's%SHARED_LD=""%SHARED_LD="${SHARED_LIB_COMMAND}"%g' sys_bsd/gfortran_gcc*.conf elif ( [ `uname` == "Darwin" ] && [ "${FC}" == "ifort" ] ) ; then sed -i .old 's%SHARED_LIB=""%SHARED_LIB="${SHARED_LIB_NAME}"%g' sys_bsd/ifort_gcc*.conf sed -i .old 's%SHARED_LD=""%SHARED_LD="${SHARED_LIB_COMMAND}"%g' sys_bsd/ifort_gcc*.conf fi if [ `uname` == "Darwin" ] ; then OS=bsd export CC="g++" [ -d /opt/X11 ] \ && sed -i .old "s%usr/X11R6%opt/X11%g" sys_bsd/*.conf \ || echo -e "\nPlease install XQuartz - http://xquartz.macosforge.org \n" fi if [ ${BUILD_SHARED} ] ; then [ "${FC}" == "gfortran" ] \ && export FC_LINK_LIBS="-lgfortran" [ `uname` == "Linux" ] \ && export SHARED_LIB_NAME="libpgplot.so" [ `uname` == "Darwin" ] \ && export SHARED_LIB_NAME="libpgplot.dylib" \ && export XINCL=$(grep XINCL sys_bsd/${FC}_gcc.conf | head -1 | awk -F'"' ' { print $2 } ') \ && export LIBS=$(grep lX11 sys_bsd/${FC}_gcc.conf | tail -1 | awk -F'"' ' { print $2 } ') \ && [ "${FC}" == "ifort" ] && export DYLD_LIBRARY_PATH="/opt/intel/lib:$DYLD_LIBRARY_PATH" export SHARED_LIB_COMMAND="gcc -shared -o ${OUTPUT_DIR}/lib/${SHARED_LIB_NAME} ${XINCL} ${LIBS} ${FC_LINK_LIBS}" fi echo -e "\nmakemake args: ${OS} ${SPEC}\n" ./makemake . ${OS} ${SPEC} func_print_compiler_linker_flags [ ${BUILD_SHARED} ] \ && echo -e "Shared Library linker command:\n\n ${SHARED_LIB_COMMAND}\n\n" ${GMAKE} ${GMAKE} cpg export RETVAL=$? [[ ! -e ${OUTPUT_DIR}/lib/libpgplot.a ]] \ && cp *.a ${OUTPUT_DIR}/lib \ && ln -s ../${BUILD_TYPE}/lib/libpgplot.a ../ \ && ln -s ../${BUILD_TYPE}/lib/libcpgplot.a ../ > /dev/null 2>&1 [[ ! -e ${OUTPUT_DIR}/lib/libpgplot.so ]] \ && cp *.so ${OUTPUT_DIR}/lib > /dev/null 2>&1 \ && ln -s ../${BUILD_TYPE}/lib/libpgplot.so ../ > /dev/null 2>&1 [[ ! -e ${OUTPUT_DIR}/lib/libpgplot.dylib ]] \ && cp *.dylib ${OUTPUT_DIR}/lib > /dev/null 2>&1 \ && ln -s ../${BUILD_TYPE}/lib/libpgplot.dylib ../ > /dev/null 2>&1 [ ! -e ${OUTPUT_DIR}/bin/cpgdemo ] \ && cp cpgdemo ${OUTPUT_DIR}/bin \ && ln -s ../${BUILD_TYPE}/bin/cpgdemo ../cpgdemo > /dev/null 2>&1 [ ! -e ${OUTPUT_DIR}/bin/pgdisp ] \ && cp pgdisp ${OUTPUT_DIR}/bin \ && ln -s ../${BUILD_TYPE}/bin/pgdisp ../pgdisp > /dev/null 2>&1 \ && ln -s ../${BUILD_TYPE}/bin/pgdisp ../figdisp > /dev/null 2>&1 [ ! -e ${OUTPUT_DIR}/bin/pgxwin_server ] \ && cp pgxwin_server ${OUTPUT_DIR}/bin \ && ln -s ../${BUILD_TYPE}/bin/pgxwin_server ../pgxwin_server > /dev/null 2>&1 if ( [ `uname` == "Darwin" ] && [ "${FC}" == "ifort" ] && [ "${RETVAL}" -eq 0 ] ) ; then ln -s /opt/intel/lib/* ${OUTPUT_DIR}/lib/ > /dev/null 2>&1 fi [ -e pgplot_mod.mod ] \ && cp pgplot_mod.mod ${OUTPUT_DIR}/modules fi if [ "${ARGUMENTS[1]}" == "-test" ] ; then echo -e "\nBuilding tests for `echo ${PACKAGE_VERSION}`...\n" PATH=${OUTPUT_DIR}/bin:$PATH LD_LIBRARY_PATH=${OUTPUT_DIR}/lib:$LD_LIBRARY_PATH PGPLOT_DIR=${WORK_DIR} echo "/CPS" | cpgdemo > /dev/null 2>&1 export RETVAL=$? [ ${RETVAL} -eq 0 ] \ && echo -e "\nTest Passed!! \n\nPlease display the below output file in a Postscript viewer:\n\n ${WORK_DIR}/pgplot.ps\n" \ || echo -e "\nTests Failed, Please check build log.\n" fi } # Function that contains Package Specific files and directories to be removed func_remove_package () { rm -f ${OUTPUT_DIR}/lib/libpgplot.* rm -f ${OUTPUT_DIR}/lib/libcpgplot.* rm -f ${OUTPUT_DIR}/bin/cpgdemo rm -f ${OUTPUT_DIR}/bin/pgdisp rm -f ${OUTPUT_DIR}/bin/pgxwin_server rm -f ${OUTPUT_DIR}/modules/pgplot_mod.mod rm -rf ${BUILD_TYPE} if ( [ -L libpgplot.a ] && [ "`ls -la libpgplot.a | grep ${BUILD_TYPE}`" ] ) ; then rm -f libpgplot.a > /dev/null 2>&1 ; fi if ( [ -L libpgplot.so ] && [ "`ls -la libpgplot.so | grep ${BUILD_TYPE}`" ] ) ; then rm -f libpgplot.so > /dev/null 2>&1 ; fi if ( [ -L libpgplot.dylib ] && [ "`ls -la libpgplot.dylib | grep ${BUILD_TYPE}`" ] ) ; then rm -f libpgplot.dylib > /dev/null 2>&1 ; fi if ( [ -L libcpgplot.a ] && [ "`ls -la libcpgplot.a | grep ${BUILD_TYPE}`" ] ) ; then rm -f libcpgplot.a > /dev/null 2>&1 ; fi if ( [ -L cpgdemo ] && [ "`ls -la cpgdemo | grep ${BUILD_TYPE}`" ] ) ; then rm -f cpgdemo > /dev/null 2>&1 ; fi if ( [ -L pgdisp ] && [ "`ls -la pgdisp | grep ${BUILD_TYPE}`" ] ) ; then rm -f pgdisp figdisp > /dev/null 2>&1 ; fi if ( [ -L pgxwin_server ] && [ "`ls -la pgxwin_server | grep ${BUILD_TYPE}`" ] ) ; then rm -f pgxwin_server > /dev/null 2>&1 ; fi rm -f ${BASE_DIR}/${PROJ_DIR_NAME}/figdisp rm -f ${BASE_DIR}/${PROJ_DIR_NAME}/cpgdemo }