From 4b163093abda47cc01d9866a94d7615b99a14a1b Mon Sep 17 00:00:00 2001 From: Maho Nakata Date: Thu, 12 Jul 2007 01:57:10 +0000 Subject: Add USE_FORTRAN knob. All ports that use FORTRAN should use this knob. Approved by: gerald, portmgr (pav) --- Mk/bsd.gcc.mk | 76 +++++++++++++++++++++++++++++++++++++++++----------------- Mk/bsd.port.mk | 2 +- 2 files changed, 55 insertions(+), 23 deletions(-) (limited to 'Mk') diff --git a/Mk/bsd.gcc.mk b/Mk/bsd.gcc.mk index 09977e1b99dd..b6ab72da1480 100644 --- a/Mk/bsd.gcc.mk +++ b/Mk/bsd.gcc.mk @@ -9,12 +9,25 @@ # If your port needs a specific version of GCC, you can easily specify # that with the "USE_GCC=" statement. If you need a certain minimal version, # but don't care if about the upperversion, just the + sign behind -# the version. +# the version. Note that the Fortran compiler is specified with the +# USE_FORTRAN knob. # # For example: # USE_GCC= 3.3 # port requires GCC 3.3 to build with. # USE_GCC= 3.4+ # port requires GCC 3.4 or later to build with. # +# If your port needs a Fortran compiler, please specify that with the +# USE_FORTRAN= knob. Here is the list of options for that knob: +# +# USE_FORTRAN= yes # use gfortran42 (/lang/gcc42) +# USE_FORTRAN= gfortran42 +# USE_FORTRAN= g77 # use g77-34 (lang/gcc34; FreeBSD>=7) +# # or system f77 (/usr/bin/f77; FreeBSD<=6) +# USE_FORTRAN= ifort # use the Intel compiler (lang/ifc) +# +# Due to object file incompatiblity between Fortran compilers, we strongly +# recommend to use only one of them on any system. +# # If you are wondering what your port exactly does, use "make test-gcc" # to see some debugging. # @@ -51,8 +64,43 @@ GCCVERSION_040200= 700042 999999 4.2 # # -# See if we can use a later version +# bsd.gcc.mk can also be used only for FC, F77 settings; in this case we +# do not define USE_GCC. # + +.if defined (USE_FORTRAN) +# gfortran42 from lang/gcc42 is the default for now. +. if ${USE_FORTRAN} == yes || ${USE_FORTRAN} == gfortran42 +BUILD_DEPENDS+= gfortran42:${PORTSDIR}/lang/gcc42 +FC:= gfortran42 +F77:= gfortran42 +. endif + +# Intel Fortran compiler from lang/ifc. +. if ${USE_FORTRAN} == ifort +BUILD_DEPENDS+= ${LOCALBASE}/intel_fc_80/bin/ifort:${PORTSDIR}/lang/ifc +FC:= ${LOCALBASE}/intel_fc_80/bin/ifort +F77:= ${LOCALBASE}/intel_fc_80/bin/ifort +. endif + +# In some case we want to use g77 from lang/gcc34 (FreeBSD>=7) or f77 +# (FreeBSD<=6). +. if ${USE_FORTRAN} == g77 +. if (${OSVERSION} > 700000) +BUILD_DEPENDS+= g77-34:${PORTSDIR}/lang/gcc34 +FC:= g77-34 +F77:= g77-34 +.else +F77:= f77 +FC:= f77 +. endif +. endif + +MAKE_ENV+= F77="${F77}" FC="${FC}" +.endif + +.if defined(USE_GCC) +# See if we can use a later version _USE_GCC:= ${USE_GCC:S/+//} .if ${USE_GCC} != ${_USE_GCC} _GCC_ORLATER:= true @@ -127,44 +175,27 @@ _USE_GCC:=${_GCC_FOUND} # # Determine if the installed OS already has this GCCVERSION, and if not -# then set BUILD_DEPENDS, CC, CXX, F77, and FC. +# then set BUILD_DEPENDS, CC, and CXX. # .for v in ${GCCVERSIONS} . if ${_USE_GCC} == ${_GCCVERSION_${v}_V} . if ${OSVERSION} < ${_GCCVERSION_${v}_L} || ${OSVERSION} > ${_GCCVERSION_${v}_R} -# If Fortran support is requested, regardless of the value of USE_GCC -# we use lang/gcc42 which is the first release which features the new -# Fortran frontend and has Fortran enabled by default. -. if defined(WITH_FORTRAN) -V:= 42 -_GCC_BUILD_DEPENDS:= gcc42 -_GCC_PORT_DEPENDS:= gfortran${V} -.else V:= ${_GCCVERSION_${v}_V:S/.//} _GCC_BUILD_DEPENDS:= gcc${V} _GCC_PORT_DEPENDS:= gcc${V} -. endif CC:= gcc${V} CXX:= g++${V} -# Up to GCC 4.0, we had g77, g77-33, g77-34, and the like. Starting -# with GCC 4.0, we have gfortran, gfortran40, gfortran41, and the like. -. if ${_USE_GCC} < 4.0 -F77:= g77-${V} -FC:= ${F77} -. else -FC:= gfortran${V} -F77:= ${FC} -. endif . endif . endif .endfor .undef V + .if defined(_GCC_BUILD_DEPENDS) BUILD_DEPENDS+= ${_GCC_PORT_DEPENDS}:${PORTSDIR}/lang/${_GCC_BUILD_DEPENDS} .endif -MAKE_ENV+= CC="${CC}" CXX="${CXX}" F77="${F77}" FC="${FC}" +MAKE_ENV+= CC="${CC}" CXX="${CXX}" test-gcc: @echo USE_GCC=${USE_GCC} @@ -184,3 +215,4 @@ test-gcc: .endfor @echo Using GCC version ${_USE_GCC} @echo CC:${CC} - CXX:${CXX} - F77:${F77} - FC:${FC} - BUILD_DEPENDS:${BUILD_DEPENDS} +.endif diff --git a/Mk/bsd.port.mk b/Mk/bsd.port.mk index 12597cb6fa1f..cef3fccae2ed 100644 --- a/Mk/bsd.port.mk +++ b/Mk/bsd.port.mk @@ -1769,7 +1769,7 @@ BUILD_DEPENDS+= gmake:${PORTSDIR}/devel/gmake CONFIGURE_ENV+= MAKE=${GMAKE} .endif -.if defined(USE_GCC) +.if defined(USE_GCC) || defined(USE_FORTRAN) .include "${PORTSDIR}/Mk/bsd.gcc.mk" .endif -- cgit v1.2.3