# # Makefile to generate LTR executables # # See the wiki for instructions on compiling components of the LTR. # include env/Make.${MACHINE} include common/helpers/Make.resolution BINDIR=build/bin DATADIR=build/data LIBDIR=build/lib PYTHONDIR=${LIBDIR}/python/site-packages ifndef INSTALLDIR INSTALLDIR=build endif all: utilities ${MAKE} LFM ${MAKE} LFM-MIX ${MAKE} LFM-RCM ${MAKE} CMIT ${MAKE} TIEGCM all-resolutions: ${MAKE} all RESOLUTION=single ${MAKE} all RESOLUTION=double ${MAKE} all RESOLUTION=quad null: echo "NULL target with RESOLUTION=${RESOLUTION}" install: buildDirs -@if [ ! -d ${INSTALLDIR}/bin ]; then mkdir -p ${INSTALLDIR}/bin; fi -cp ${BINDIR}/* ${INSTALLDIR}/bin # FIXME: Need to install utilities: # * RMS error # * Python scripts (makeItSo) -cp -r ${DATADIR}/* ${INSTALLDIR}/data -@if [ ! -d ${INSTALLDIR}/lib ]; then mkdir -p ${INSTALLDIR}/lib; fi # FIXME: Need to install Python libraries -cp -rp ${LIBDIR}/* ${INSTALLDIR}/lib @echo "-------------------------------------------------------------------------------" @echo " You have installed the LTR to INSTALLDIR (${INSTALLDIR})." @echo " You must set the LTRROOT environment variable to point to " @echo " the top-level LTR source directory. See the wiki for more information: " @echo " https://wiki.ucar.edu/display/LTR" @echo "-------------------------------------------------------------------------------" ################ # Main targets # ################ utilities: common LFMstartup # FIXME: Need to build: # * RMS error LFMstartup: common cd LFM-para/src/startup && ${MAKE} cp LFM-para/src/startup/mkLfmStartup ${BINDIR} test -d ${DATADIR}/grids || cp -rp LFM-para/src/startup/grids ${DATADIR}/grids LFM: cleanLfm buildDirs common LFMstartup cd LFM-para/src && ${MAKE} LFM NI=${NI} NJ=${NJ} NK=${NK} NP=${NP} cp LFM-para/src/LFM-${NI}x${NJ}x${NK}-${NP} ${BINDIR} LFM-MIX: cleanLfm buildDirs common LFMstartup cd LFM-para/src && ${MAKE} LFM-MIX NI=${NI} NJ=${NJ} NK=${NK} NP=${NP} cp LFM-para/src/LFM-MIX-${NI}x${NJ}x${NK}-${NP} ${BINDIR} cd MIX/src && ${MAKE} MIX cp MIX/src/MIX ${BINDIR} LFM-RCM: cleanLfm LFM-MIX LFMstartup cd RCM/src && ${MAKE} RCM-LFM cp RCM/src/RCM-LFM ${BINDIR} CMIT: TIEGCM TIEGCM-MIX LFM-MIX LFMstartup TIEGCM: tiegcm tiegcm: cleanTiegcm buildDirs cd TIEGCM/src && ${MAKE} COUPLING= cp TIEGCM/src/TIEGCM ${BINDIR} TIEGCM-MIX: ${MAKE} cleanTiegcm cd TIEGCM/src && ${MAKE} COUPLING=INTERCOMM cp TIEGCM/src/TIEGCM-MIX ${BINDIR} ################### # Support targets # ################### common: COMMON COMMON: buildDirs cd common/src && $(MAKE) cp common/src/libcommon.a ${LIBDIR} buildDirs: -@if [ ! -d ${DATADIR} ]; then mkdir -p ${DATADIR}; fi -@if [ ! -d ${BINDIR} ]; then mkdir -p ${BINDIR}; fi -@if [ ! -d ${LIBDIR} ]; then mkdir -p ${LIBDIR}; fi -@if [ ! -d ${PYTHONDIR} ]; then mkdir -p ${PYTHONDIR}; fi cleanLfm: cd LFM-para/src && ${MAKE} clean cleanTiegcm: cd TIEGCM/src && ${MAKE} clean clean: cleanLfm cleanTiegcm cd common/src && ${MAKE} clean cd MIX/src && ${MAKE} clean cd RCM/src && ${MAKE} clean @echo "Cleaned up LTR source code" distclean: cd common/src && ${MAKE} distclean cd LFM-para/src && ${MAKE} distclean cd MIX/src && ${MAKE} distclean cd TIEGCM/src && ${MAKE} distclean rm -rf build cd RCM/src && ${MAKE} distclean @echo "Distribution cleaned up LTR-para" documentation: @echo "Make sure you have Doxygen installed to build the documentation..." cd MIX/doc && doxygen doc.config cd LFM-para/doc && doxygen cd common/doc && doxygen doc.config