summaryrefslogtreecommitdiff
path: root/libgfortran/m4/misc_specifics.m4
diff options
context:
space:
mode:
authorupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
committerupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
commit554fd8c5195424bdbcabf5de30fdc183aba391bd (patch)
tree976dc5ab7fddf506dadce60ae936f43f58787092 /libgfortran/m4/misc_specifics.m4
downloadcbb-gcc-4.6.4-15d2061ac0796199866debe9ac87130894b0cdd3.tar.bz2
cbb-gcc-4.6.4-15d2061ac0796199866debe9ac87130894b0cdd3.tar.xz
obtained gcc-4.6.4.tar.bz2 from upstream website;upstream
verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository.
Diffstat (limited to 'libgfortran/m4/misc_specifics.m4')
-rw-r--r--libgfortran/m4/misc_specifics.m464
1 files changed, 64 insertions, 0 deletions
diff --git a/libgfortran/m4/misc_specifics.m4 b/libgfortran/m4/misc_specifics.m4
new file mode 100644
index 000000000..3e40bf017
--- /dev/null
+++ b/libgfortran/m4/misc_specifics.m4
@@ -0,0 +1,64 @@
+include(head.m4)dnl
+dnl
+dnl This file contains the specific functions that are not handled in the
+dnl m4/specific.m4 file.
+
+#include "config.h"
+#include "kinds.inc"
+
+dnl This is from GNU m4 examples file foreach.m4:
+divert(-1)
+# foreach(x, (item_1, item_2, ..., item_n), stmt)
+define(`foreach', `pushdef(`$1', `')_foreach(`$1', `$2',
+`$3')popdef(`$1')')
+define(`_arg1', `$1')
+define(`_foreach',
+ `ifelse(`$2', `()', ,
+ `define(`$1', _arg1$2)$3`'_foreach(`$1', (shift$2),
+`$3')')')
+# traceon(`define', `foreach', `_foreach', `ifelse')
+divert
+
+dnl NINT specifics
+foreach(`ikind', `(4, 8, 16)', `foreach(`rkind', `(4, 8, 10, 16)', `
+`#if defined (HAVE_GFC_REAL_'rkind`) && defined (HAVE_GFC_INTEGER_'ikind`)'
+elemental function _gfortran_specific__nint_`'ikind`_'rkind (parm)
+ real (kind=rkind) , intent (in) :: parm
+ integer (kind=ikind) :: _gfortran_specific__nint_`'ikind`_'rkind
+ _gfortran_specific__nint_`'ikind`_'rkind = nint (parm)
+end function
+#endif
+')')
+
+dnl CHAR specifics
+foreach(`ckind', `(1)', `foreach(`ikind', `(4, 8, 16)', `
+`#if defined (HAVE_GFC_INTEGER_'ikind`)'
+elemental function _gfortran_specific__char_`'ckind`_i'ikind (parm)
+ integer (kind=ikind) , intent (in) :: parm
+ character (kind=ckind,len=1) :: _gfortran_specific__char_`'ckind`_i'ikind
+ _gfortran_specific__char_`'ckind`_i'ikind` = char (parm, kind='ckind`)'
+end function
+#endif
+')')
+
+dnl LEN specifics
+foreach(`ckind', `(1)', `foreach(`ikind', `(4, 8, 16)', `
+`#if defined (HAVE_GFC_INTEGER_'ikind`)'
+elemental function _gfortran_specific__len_`'ckind`_i'ikind (parm)
+ character (kind=ckind,len=*) , intent (in) :: parm
+ integer (kind=ikind) :: _gfortran_specific__len_`'ckind`_i'ikind
+ _gfortran_specific__len_`'ckind`_i'ikind` = len (parm)'
+end function
+#endif
+')')
+
+dnl INDEX specifics
+foreach(`ckind', `(1)', `foreach(`ikind', `(4, 8, 16)', `
+`#if defined (HAVE_GFC_INTEGER_'ikind`)'
+elemental function _gfortran_specific__index_`'ckind`_i'ikind (parm1, parm2)
+ character (kind=ckind,len=*) , intent (in) :: parm1, parm2
+ integer (kind=ikind) :: _gfortran_specific__index_`'ckind`_i'ikind
+ _gfortran_specific__index_`'ckind`_i'ikind` = index (parm1, parm2)'
+end function
+#endif
+')')