File: acx_enable_optimization.m4

package info (click to toggle)
madness 0.10.1%2Bgit20200818.eee5fd9f-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 34,980 kB
  • sloc: cpp: 280,841; ansic: 12,626; python: 4,961; fortran: 4,245; xml: 1,053; makefile: 714; sh: 276; perl: 244; yacc: 227; lex: 188; asm: 141; csh: 55
file content (73 lines) | stat: -rw-r--r-- 2,379 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# This function is used to add compiler specific optimization flags (e.g. -O3)
# to CFLAGS and CXXFLAGS environment variables. Users are expected to specify 
# their own optimization flags for unknown compilers or special use cases by 
# adding appropriate values to CFLAGS and CXXFLAGS.
AC_DEFUN([ACX_ENABLE_OPTIMIZATION], [
  # Specify the default optimization level for a given compiler. This value is
  # appended to "-O" in the flag variables.
  default_optimization=""
  case $CXXVENDOR in
    GNU)
      default_optimization="3"
    ;;
    clang)
      default_optimization="3"
    ;;
    Pathscale)
      default_optimization="fast"
    ;;
    Portland)
      default_optimization="3"
    ;;
    Intel)
      default_optimization="3"
    ;;
    IBM)
      default_optimization="3"
    ;;
    *)
      default_optimization="2"
    ;;
  esac

  acx_enable_optimization="yes"
  acx_enable_optimization_flags=""

  # Allow the user to enable or disable optimization flag
  AC_ARG_ENABLE([optimization],
    [AC_HELP_STRING([--enable-optimization@<:@=yes|no|OPTION@:>@],
      [Enable optimization for C and C++ (e.g. -O2) @<:@default=yes@:>@]) ],
    [
      case $enableval in
        yes)
          acx_enable_optimization_flags="-O$default_optimization"
        ;;
        no)
          acx_enable_optimization="no"
        ;;
        *)
          acx_enable_optimization_flags="-O$enableval"
        ;;
      esac
    ],
    [
      if test "x$acx_enable_debugging" == xno; then
        acx_enable_optimization_flags="-O$default_optimization"
      else
        acx_enable_optimization_flags="-O0"
        AC_MSG_WARN([Optimizations is disabled, because debugging is enabled. Add --enable-optimization to overide this behavior.])
      fi
    ]
  )

  # Test the flags and add them to flag variables if successful.
  if test $acx_enable_optimization != no; then
    ACX_CHECK_COMPILER_FLAG([C], [CFLAGS], [$acx_enable_optimization_flags],
      [CFLAGS="$CFLAGS $acx_enable_optimization_flags"],
      [AC_MSG_WARN([$CC does not accept $acx_enable_optimization_flags, no optimization flags will be used.])])
    ACX_CHECK_COMPILER_FLAG([C++], [CXXFLAGS], [$acx_enable_optimization_flags],
      [CXXFLAGS="$CXXFLAGS $acx_enable_optimization_flags"],
      [AC_MSG_WARN([$CXX does not accept $acx_enable_optimization_flags, no optimization flags will be used.])])
  fi

])