1  # Copyright 19992011 Gentoo Foundation 
1  # Copyright 19992011 Gentoo Foundation 
2  # Distributed under the terms of the GNU General Public License v2 
2  # Distributed under the terms of the GNU General Public License v2 
3  # $Header: /var/cvsroot/gentoox86/eclass/fortran2.eclass,v 1.4 2011/06/21 14:11:31 jlec Exp $ 
3  # $Header: /var/cvsroot/gentoox86/eclass/fortran2.eclass,v 1.5 2011/08/22 04:46:31 vapier Exp $ 
4  


5  # Author Justin Lecher <jlec@gentoo.org> 


6  # Test functions provided by Sebastien Fabbro and Kacper Kowalik 


7  
4  
8  # @ECLASS: fortran2.eclass 
5  # @ECLASS: fortran2.eclass 
9  # @MAINTAINER: 
6  # @MAINTAINER: 
10  # jlec@gentoo.org 
7  # jlec@gentoo.org 
11  # sci@gentoo.org 
8  # sci@gentoo.org 


9  # @AUTHOR: 


10  # Author Justin Lecher <jlec@gentoo.org> 


11  # Test functions provided by Sebastien Fabbro and Kacper Kowalik 
12  # @BLURB: Simplify fortran compiler management 
12  # @BLURB: Simplify fortran compiler management 
13  # @DESCRIPTION: 
13  # @DESCRIPTION: 
14  # If you need a fortran compiler, then you should be inheriting this eclass and 
14  # If you need a fortran compiler, then you should be inheriting this eclass and 
15  # adding virtual/fortran to your dependencies. 
15  # adding virtual/fortran to your dependencies. 
16  # The eclass tests for working fortran compilers 
16  # The eclass tests for working fortran compilers 
…  
…  
34  : ${FORTRAN_STANDARD:=77} 
34  : ${FORTRAN_STANDARD:=77} 
35  
35  
36  inherit toolchainfuncs 
36  inherit toolchainfuncs 
37  
37  
38  # @FUNCTION: _write_testsuite 
38  # @FUNCTION: _write_testsuite 
39  # @DESCRIPTION: writes fortran test code 


40  # @INTERNAL 
39  # @INTERNAL 


40  # @DESCRIPTION: 


41  # writes fortran test code 
41  _write_testsuite() { 
42  _write_testsuite() { 
42  local filebase=${T}/testfortran 
43  local filebase=${T}/testfortran 
43  
44  
44  # f77 code 
45  # f77 code 
45  cat << EOF > "${filebase}.f" 
46  cat << EOF > "${filebase}.f" 
…  
…  
57  end 
58  end 
58  EOF 
59  EOF 
59  } 
60  } 
60  
61  
61  # @FUNCTION: _compile_test 
62  # @FUNCTION: _compile_test 


63  # @INTERNAL 
62  # @DESCRIPTION: 
64  # @DESCRIPTION: 
63  # Takes fortran compiler as first argument and dialect as second. 
65  # Takes fortran compiler as first argument and dialect as second. 
64  # Checks whether the passed fortran compiler speaks the fortran dialect 
66  # Checks whether the passed fortran compiler speaks the fortran dialect 
65  # @INTERNAL 


66  _compile_test() { 
67  _compile_test() { 
67  local filebase=${T}/testfortran 
68  local filebase=${T}/testfortran 
68  local fcomp=${1} 
69  local fcomp=${1} 
69  local fdia=${2} 
70  local fdia=${2} 
70  local fcode=${filebase}.f${fdia} 
71  local fcode=${filebase}.f${fdia} 
…  
…  
80  rm f "${fcode}.x" 
81  rm f "${fcode}.x" 
81  return ${ret} 
82  return ${ret} 
82  } 
83  } 
83  
84  
84  # @FUNCTION: _fortranhasopenmp 
85  # @FUNCTION: _fortranhasopenmp 


86  # @INTERNAL 
85  # @DESCRIPTION: 
87  # @DESCRIPTION: 
86  # See if the fortran supports OpenMP. 
88  # See if the fortran supports OpenMP. 
87  # @INTERNAL 


88  _fortranhasopenmp() { 
89  _fortranhasopenmp() { 
89  local flag 
90  local flag 
90  local filebase=${T}/testfcopenmp 
91  local filebase=${T}/testfcopenmp 
91  local fcode=${filebase}.f 
92  local fcode=${filebase}.f 
92  local ret 
93  local ret 
…  
…  
106  rm f "${fcode}.x" 
107  rm f "${fcode}.x" 
107  return ${ret} 
108  return ${ret} 
108  } 
109  } 
109  
110  
110  # @FUNCTION: _die_msg 
111  # @FUNCTION: _die_msg 
111  # @DESCRIPTION: Detailed description how to handle fortran support 


112  # @INTERNAL 
112  # @INTERNAL 


113  # @DESCRIPTION: 


114  # Detailed description how to handle fortran support 
113  _die_msg() { 
115  _die_msg() { 
114  echo 
116  echo 
115  eerror "Please install currently selected gcc version with USE=fortran." 
117  eerror "Please install currently selected gcc version with USE=fortran." 
116  eerror "If you intend to use a different compiler then gfortran, please" 
118  eerror "If you intend to use a different compiler then gfortran, please" 
117  eerror "set FC variable accordingly and take care that the neccessary" 
119  eerror "set FC variable accordingly and take care that the neccessary" 