1program CMakeFortranCompilerABI
2
3implicit none
4
5integer :: i(1) = 0
6where (i==0) i=1
7if (any(i/=1)) stop 1
8! showing Fortran 90 syntax is OK
9
10#if 0
11! Address Size
12#endif
13#if defined(_LP64)
14PRINT *, 'INFO:sizeof_dptr[8]'
15#elif defined(_M_IA64)
16PRINT *, 'INFO:sizeof_dptr[8]'
17#elif defined(_M_X64)
18PRINT *, 'INFO:sizeof_dptr[8]'
19#elif defined(_M_AMD64)
20PRINT *, 'INFO:sizeof_dptr[8]'
21#elif defined(__x86_64__)
22PRINT *, 'INFO:sizeof_dptr[8]'
23
24#elif defined(_ILP32)
25PRINT *, 'INFO:sizeof_dptr[4]'
26#elif defined(_M_IX86)
27PRINT *, 'INFO:sizeof_dptr[4]'
28#elif defined(__i386__)
29PRINT *, 'INFO:sizeof_dptr[4]'
30
31#elif defined(__SIZEOF_POINTER__) && __SIZEOF_POINTER__ == 8
32PRINT *, 'INFO:sizeof_dptr[8]'
33#elif defined(__SIZEOF_POINTER__) && __SIZEOF_POINTER__ == 4
34PRINT *, 'INFO:sizeof_dptr[4]'
35#elif defined(__SIZEOF_SIZE_T__) && __SIZEOF_SIZE_T__ == 8
36PRINT *, 'INFO:sizeof_dptr[8]'
37#elif defined(__SIZEOF_SIZE_T__) && __SIZEOF_SIZE_T__ == 4
38PRINT *, 'INFO:sizeof_dptr[4]'
39#endif
40
41#if 0
42! Application Binary Interface
43#endif
44#if defined(__ELF__)
45PRINT *, 'INFO:abi[ELF]'
46#endif
47PRINT *, 'ABI Detection'
48end program
49