#------------------------------------------------------------------------------ # # NAME: # make.macros # # PURPOSE: # Unix make utility include file for definition of common make # macros used in building CRTM software # # LANGUAGE: # Unix make # # CALLING SEQUENCE: # include make.macros # # CREATION HISTORY: # Written by: Paul van Delst, CIMSS/SSEC 08-Jun-2000 # paul.vandelst@ssec.wisc.edu # # Copyright (C) 2000 Paul van Delst # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # $Id: make.macros 22707 2012-11-21 21:09:10Z paul.vandelst@noaa.gov $ # #------------------------------------------------------------------------------ ################################################################################# # # # GENERAL USE MACRO SPECIFICATION # # # ################################################################################# # Define default shell SHELL = /bin/sh # Define link, copy and delete commands LINK = ln -sf COPY = cp MOVE = mv -f REMOVE = rm -f # Define tarballer commands TARBALLER = tar TARBALL_CREATE = $(TARBALLER) cvhf TARBALL_APPEND = $(TARBALLER) rvhf TARBALL_EXTRACT = $(TARBALLER) xvhf # Define archiver and flags ARCHIVER = ar ARCHIVER_FLAGS = crvs # Define scripts used in makefiles # ...Scripts to link and unlink files LINK_SCRIPT = linkfiles.sh UNLINK_SCRIPT = unlinkfiles # CRTM library build definitions # ...Library name PACKAGE = CRTM LIBRARY = lib$(PACKAGE).a # ...Module file extension EXT_MOD = mod # ...Directory definitions BUILD_DIR = Build LIBSRC_DIR = libsrc LIB_DIR = lib INC_DIR = include TEST_DIR = test COEFF_DIR = coefficients ################################################################################# # # # SPECIFIC PLATFORM FLAG SPECIFICATION # # # ################################################################################# #-------------------------------------------------------------------------------# # -- IBM AIX xlf95 compiler -- # # # # NOTE: There are two sets of AIX flags. # # DEBUG and PRODUCTION. # # See AIX_FLAGS definition for default. # #-------------------------------------------------------------------------------# # The compiler and linker name NAME_AIX = xlf95 # Compiler settings for DEBUG builds AIX_COMMON_FLAGS_DEBUG = -pg AIX_FLAGS_DEBUG = "FC=${NAME_AIX}" \ "FL=${NAME_AIX}" \ "FC_FLAGS= -c \ -qcheck \ -qdbg \ -qextchk \ -qfloat=nomaf:rndsngl:nans \ -qflttrap=ov:zero:inv:en \ -qinitauto \ -qfree \ -qhalt=W \ -qlanglvl=2003pure \ -qmaxmem=-1 \ -qsuffix=f=f90:cpp=F90 \ ${INCLUDES} \ ${AIX_COMMON_FLAGS_DEBUG}" \ "FL_FLAGS= ${AIX_COMMON_FLAGS_DEBUG} \ ${LIBRARIES} \ -o" \ "ENDIAN=Big_Endian" # Compiler settings for PRODUCTION builds AIX_COMMON_FLAGS_PROD = -O3 AIX_FLAGS_PROD = "FC=${NAME_AIX}" \ "FL=${NAME_AIX}" \ "FC_FLAGS= -c \ -qdbg \ -qarch=auto \ -qfree \ -qhalt=W \ -qlanglvl=2003pure \ -qsuffix=f=f90:cpp=F90 \ -qstrict \ -NS32768 \ ${INCLUDES} \ ${AIX_COMMON_FLAGS_PROD}" \ "FL_FLAGS= ${AIX_COMMON_FLAGS_PROD} \ -lmass -lm \ ${LIBRARIES} \ -o" \ "ENDIAN=Big_Endian" # Here set the DEFAULT AIX compiler flags #AIX_FLAGS = $(AIX_FLAGS_DEBUG) AIX_FLAGS = $(AIX_FLAGS_PROD) #-------------------------------------------------------------------------------# # -- Sun Fortran 95 -- # #-------------------------------------------------------------------------------# # The compiler and linker name NAME_SUNOS = f95 # Only one set of compiler flags SUNOS_COMMON_FLAGS = SUNOS_FLAGS = "FC=${NAME_SUNOS}" \ "FL=${NAME_SUNOS}" \ "FC_FLAGS= -ansi \ -c \ -C \ -fsimple=0 \ -ftrap=overflow,division \ -g \ -w3 \ ${INCLUDES} \ ${SUNOS_COMMON_FLAGS}" \ "FL_FLAGS= ${SUNOS_COMMON_FLAGS} \ ${LIBRARIES} \ -o" \ "ENDIAN=Big_Endian" SUNOS_FLAGS_DEBUG = ${SUNOS_FLAGS) SUNOS_FLAGS_PROD = ${SUNOS_FLAGS) #-------------------------------------------------------------------------------# # -- SGI IRIX64 MIPSpro f90 compiler -- # #-------------------------------------------------------------------------------# # The compiler and linker name NAME_IRIX64 = f90 # Only one set of compiler flags for 64-bit build IRIX64_COMMON_FLAGS = -64 IRIX64_FLAGS = "FC=${NAME_IRIX64}" \ "FL=${NAME_IRIX64}" \ "FC_FLAGS= -ansi \ -c \ -C \ -DEBUG:suppress=399,878 \ -fullwarn \ -g \ -bytereclen \ -u \ ${INCLUDES} \ ${IRIX64_COMMON_FLAGS}" \ "FL_FLAGS= ${IRIX64_COMMON_FLAGS} \ ${LIBRARIES} \ -o" \ "ENDIAN=Big_Endian" IRIX64_FLAGS_DEBUG = ${IRIX64_FLAGS) IRIX64_FLAGS_PROD = ${IRIX64_FLAGS) #-------------------------------------------------------------------------------# # -- HP-UX Fortran 90 (95) -- # #-------------------------------------------------------------------------------# # The compiler and linker name NAME_HPUX = f90 # Compiler settings for DEBUG builds HPUX_COMMON_FLAGS_DEBUG = HPUX_FLAGS_DEBUG = "FC=${NAME_HPUX}" \ "FL=${NAME_HPUX}" \ "FC_FLAGS= +ppu -c +fltconst_strict \ ${INCLUDES} \ ${HPUX_COMMON_FLAGS_DEBUG}" \ "FL_FLAGS= ${HPUX_COMMON_FLAGS_DEBUG} \ ${LIBRARIES} \ -o" \ "ENDIAN=Big_Endian" # Compiler settings for PRODUCTION builds HPUX_COMMON_FLAGS_PROD = -O3 HPUX_FLAGS_PROD = "FC=${NAME_HPUX}" \ "FL=${NAME_HPUX}" \ "FC_FLAGS= +ppu -c +fltconst_strict \ ${INCLUDES} \ ${HPUX_COMMON_FLAGS_PROD}" \ "FL_FLAGS= ${HPUX_COMMON_FLAGS_PROD} \ ${LIBRARIES} \ -o" \ "ENDIAN=Big_Endian" # Here set the DEFAULT HPUX compiler flags HPUX_FLAGS = $(HPUX_FLAGS_DEBUG) #-------------------------------------------------------------------------------# # -- Linux compilers -- # #-------------------------------------------------------------------------------# # --------------------------- # gfortran compiler for linux # --------------------------- # The compiler and linker name NAME_GFORTRAN = gfortran # Compiler settings for DEBUG builds LINUX_COMMON_FLAGS_GFORTRAN_DEBUG = -pg LINUX_FLAGS_GFORTRAN_DEBUG = "FC=${NAME_GFORTRAN}" \ "FL=${NAME_GFORTRAN}" \ "FC_FLAGS= -c \ -fbounds-check \ -fconvert=big-endian \ -ffpe-trap=overflow,zero \ -ffree-form \ -fno-second-underscore \ -frecord-marker=4 \ -ggdb \ -static \ -Wall \ ${INCLUDES} \ ${LINUX_COMMON_FLAGS_GFORTRAN_DEBUG}" \ "FL_FLAGS= ${LINUX_COMMON_FLAGS_GFORTRAN_DEBUG} \ ${LIBRARIES} \ -o" \ "ENDIAN=Little_Endian" # Compiler settings for DEBUG builds LINUX_COMMON_FLAGS_GFORTRAN_PROD = LINUX_FLAGS_GFORTRAN_PROD = "FC=${NAME_GFORTRAN}" \ "FL=${NAME_GFORTRAN}" \ "FC_FLAGS= -c \ -O3 \ -fconvert=big-endian \ -ffast-math \ -ffree-form \ -fno-second-underscore \ -frecord-marker=4 \ -funroll-loops \ -ggdb \ -static \ -Wall \ ${INCLUDES} \ ${LINUX_COMMON_FLAGS_GFORTRAN_PROD}" \ "FL_FLAGS= ${LINUX_COMMON_FLAGS_GFORTRAN_PROD} \ ${LIBRARIES} \ -o" \ "ENDIAN=Little_Endian" # Here set the DEFAULT gfortran compiler flags LINUX_FLAGS_GFORTRAN = $(LINUX_FLAGS_GFORTRAN_DEBUG) # ------------------------------------- # Portland Group f95 compiler for linux # ------------------------------------- # The compiler and linker name NAME_PGI = pgf95 # Compiler settings for DEBUG builds LINUX_COMMON_FLAGS_PGI_DEBUG = -Kieee -pg LINUX_FLAGS_PGI_DEBUG = "FC=${NAME_PGI}" \ "FL=${NAME_PGI}" \ "FC_FLAGS= -c \ -g \ -byteswapio \ -Ktrap=ovf,divz \ -Mbounds \ -Mchkstk \ -Mdclchk \ -Minform,inform \ -Mnosave \ -Mref_externals \ ${INCLUDES} \ ${LINUX_COMMON_FLAGS_PGI_DEBUG}" \ "FL_FLAGS= ${LINUX_COMMON_FLAGS_PGI_DEBUG} \ ${LIBRARIES} \ -o" \ "ENDIAN=Little_Endian" # Compiler settings for PRODUCTION builds LINUX_COMMON_FLAGS_PGI_PROD = LINUX_FLAGS_PGI_PROD = "FC=${NAME_PGI}" \ "FL=${NAME_PGI}" \ "FC_FLAGS= -c \ -g \ -fast \ -byteswapio \ ${INCLUDES} \ ${LINUX_COMMON_FLAGS_PGI_PROD}" \ "FL_FLAGS= ${LINUX_COMMON_FLAGS_PGI_PROD} \ ${LIBRARIES} \ -o" \ "ENDIAN=Little_Endian" # Here set the DEFAULT PGI compiler flags LINUX_FLAGS_PGI = $(LINUX_FLAGS_PGI_DEBUG) # ---------------------------- # Intel f95 compiler for linux # ---------------------------- # The compiler and linker name NAME_INTEL = ifort # Compiler settings for DEBUG builds LINUX_COMMON_FLAGS_INTEL_DEBUG = -pg LINUX_FLAGS_INTEL_DEBUG = "FC=${NAME_INTEL}" \ "FL=${NAME_INTEL}" \ "FC_FLAGS= -c \ -g \ -check bounds \ -convert big_endian \ -e03 \ -traceback \ -free \ -assume byterecl \ -fp-stack-check \ -mieee-fp \ ${INCLUDES} \ ${LINUX_COMMON_FLAGS_DEBUG}" \ "FL_FLAGS= ${LINUX_COMMON_FLAGS_DEBUG} \ ${LIBRARIES} \ -o" \ "ENDIAN=Little_Endian" # Compiler settings for PRODUCTION builds LINUX_COMMON_FLAGS_INTEL_PROD = LINUX_FLAGS_INTEL_PROD = "FC=${NAME_INTEL}" \ "FL=${NAME_INTEL}" \ "FC_FLAGS= -c \ -O2 \ -convert big_endian \ -free \ -assume byterecl \ ${INCLUDES} \ ${LINUX_COMMON_FLAGS_PROD}" \ "FL_FLAGS= ${LINUX_COMMON_FLAGS_PROD} \ ${LIBRARIES} \ -o" \ "ENDIAN=Little_Endian" # Here set the DEFAULT Intel compiler flags LINUX_FLAGS_INTEL = $(LINUX_FLAGS_INTEL_DEBUG) # ---------------------------- # Lahey f95 compiler for linux # ---------------------------- # The compiler and linker name NAME_LAHEY = lf95 # Compiler settings for DEBUG builds LINUX_COMMON_FLAGS_LAHEY_DEBUG = LINUX_FLAGS_LAHEY_DEBUG = "FC=${NAME_LAHEY}" \ "FL=${NAME_LAHEY}" \ "FC_FLAGS= -c \ -g \ --chk aesu \ --f95 \ --trace \ --trap \ --ninfo --warn \ ${INCLUDES} \ ${LINUX_COMMON_FLAGS_LAHEY_DEBUG}" \ "FL_FLAGS= ${LINUX_COMMON_FLAGS_LAHEY_DEBUG} \ ${LIBRARIES} \ --staticlink \ -o" \ "ENDIAN=Little_Endian" # Compiler settings for PRODUCTION builds LINUX_COMMON_FLAGS_LAHEY_PROD = LINUX_FLAGS_LAHEY_PROD = "FC=${NAME_LAHEY}" \ "FL=${NAME_LAHEY}" \ "FC_FLAGS= -c \ --f95 \ --o1 \ --ninfo --warn \ ${INCLUDES} \ ${LINUX_COMMON_FLAGS_LAHEY_PROD}" \ "FL_FLAGS= ${LINUX_COMMON_FLAGS_LAHEY_PROD} \ ${LIBRARIES} \ --staticlink \ -o" \ "ENDIAN=Little_Endian" # Here set the DEFAULT Lahey compiler flags LINUX_FLAGS_LAHEY = $(LINUX_FLAGS_LAHEY_DEBUG) # ---------------------- # g95 compiler for linux # ---------------------- # The compiler and linker name NAME_G95 = g95 # Compiler settings for DEBUG builds LINUX_COMMON_FLAGS_G95_DEBUG = -pg LINUX_FLAGS_G95_DEBUG = "FC=${NAME_G95}" \ "FL=${NAME_G95}" \ "FC_FLAGS= -c \ -fbounds-check \ -fendian=big \ -ffree-form \ -fno-second-underscore \ -ftrace=frame \ -malign-double \ -Wall \ ${INCLUDES} \ ${LINUX_COMMON_FLAGS_G95_DEBUG}" \ "FL_FLAGS= ${LINUX_COMMON_FLAGS_G95_DEBUG} \ ${LIBRARIES} \ -o" \ "ENDIAN=Little_Endian" # Compiler settings for PRODUCTION builds LINUX_COMMON_FLAGS_G95_PROD = LINUX_FLAGS_G95_PROD = "FC=${NAME_G95}" \ "FL=${NAME_G95}" \ "FC_FLAGS= -c \ -O2 \ -fendian=big \ -ffast-math \ -ffree-form \ -fno-second-underscore \ -funroll-loops \ -malign-double \ ${INCLUDES} \ ${LINUX_COMMON_FLAGS_G95_PROD}" \ "FL_FLAGS= ${LINUX_COMMON_FLAGS_G95_PROD} \ ${LIBRARIES} \ -o" \ "ENDIAN=Little_Endian" # Here set the DEFAULT g95 compiler flags LINUX_FLAGS_G95 = $(LINUX_FLAGS_G95_DEBUG) # ----------------------------- # Absoft f90 compiler for linux # ----------------------------- # The compiler and linker name NAME_ABSOFT = f90 # Only one set of compiler flags LINUX_COMMON_FLAGS_ABSOFT = LINUX_FLAGS_ABSOFT = "FC=${NAME_ABSOFT}" \ "FL=${NAME_ABSOFT}" \ "FC_FLAGS= -c \ -B80 \ -en \ -g \ -m0 \ ${INCLUDES} \ ${LINUX_COMMON_FLAGS_ABSOFT}" \ "FL_FLAGS= ${LINUX_COMMON_FLAGS_ABSOFT} \ ${LIBRARIES} \ -o" \ "ENDIAN=Little_Endian" LINUX_FLAGS_ABSOFT_DEBUG = $(LINUX_FLAGS_ABSOFT) LINUX_FLAGS_ABSOFT_PROD = $(LINUX_FLAGS_ABSOFT) # --------------------------------------- # Define the default Linux compiler flags # --------------------------------------- LINUX_FLAGS = $(LINUX_FLAGS_GFORTRAN) #LINUX_FLAGS = $(LINUX_FLAGS_LAHEY) #LINUX_FLAGS = $(LINUX_FLAGS_PGI) #LINUX_FLAGS = $(LINUX_FLAGS_INTEL) #LINUX_FLAGS = $(LINUX_FLAGS_G95) #LINUX_FLAGS = $(LINUX_FLAGS_ABSOFT)