configure.ac 6.92 KB
Newer Older
Lev Walkin's avatar
Lev Walkin committed
1
AC_INIT([asn1c],[0.9.29],[vlm@lionet.info])
2 3

AC_CONFIG_AUX_DIR(config)
4
AC_CONFIG_HEADER([config.h])
5
AM_INIT_AUTOMAKE([foreign])
6
AC_CONFIG_MACRO_DIR([m4])
Lev Walkin's avatar
Lev Walkin committed
7 8 9 10 11 12 13 14 15

dnl Checks for programs.
AC_PROG_CC
AC_PROG_CPP
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
AC_PROG_YACC
AM_PROG_LEX
theirix's avatar
theirix committed
16 17 18 19 20 21
dnl locate ar using standard macro (old automake 1.11 does not know about AM_PROG_AR)
m4_ifdef([AM_PROG_AR],
         [AM_PROG_AR],
         [AC_PATH_PROG(AR, ar, ar, $PATH:/usr/ucb:/usr/ccs/bin)])

LT_INIT
Lev Walkin's avatar
Lev Walkin committed
22

Lev Walkin's avatar
Lev Walkin committed
23 24
dnl If you need to see the details, just run make V=1.
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
Frank Morgner's avatar
Frank Morgner committed
25

Lev Walkin's avatar
Lev Walkin committed
26
case "$host_os" in
Lev Walkin's avatar
Lev Walkin committed
27
cygwin)
Lev Walkin's avatar
Lev Walkin committed
28 29 30 31 32
	case "$target" in
	*mingw*)
		CC="$CC -mno-cygwin"
	esac
	;;
Lev Walkin's avatar
Lev Walkin committed
33 34
esac

35
AC_ARG_ENABLE([ASN_DEBUG],
36 37 38 39 40
  [AS_HELP_STRING([--enable-ASN_DEBUG],
                  [produce debug log during `make check` testing])],
  [enable_asn_debug=$enableval], [enable_asn_debug=no])
  AS_IF([test x$enable_asn_debug != xno], [
      TESTSUITE_CFLAGS="-DEMIT_ASN_DEBUG"
41
      SKELETONS_CFLAGS="-DEMIT_ASN_DEBUG"
42
  ])
43

44 45 46
AX_CHECK_COMPILE_FLAG([-Wall], [CFLAGS="$CFLAGS -Wall"])
AX_CHECK_COMPILE_FLAG([-Wcast-qual], [CFLAGS="$CFLAGS -Wcast-qual"])
AX_CHECK_COMPILE_FLAG([-Wchar-subscripts],
Lev Walkin's avatar
Lev Walkin committed
47
      [CFLAGS="$CFLAGS -Wchar-subscripts"])
48
AX_CHECK_COMPILE_FLAG([-Wmissing-prototypes],
Lev Walkin's avatar
Lev Walkin committed
49
      [CFLAGS="$CFLAGS -Wmissing-prototypes"])
50
AX_CHECK_COMPILE_FLAG([-Wmissing-declarations],
Lev Walkin's avatar
Lev Walkin committed
51
      [CFLAGS="$CFLAGS -Wmissing-declarations"])
Lev Walkin's avatar
Lev Walkin committed
52

53 54
dnl There are legitimate uses for these features, disable warnings/errors.
AX_CHECK_COMPILE_FLAG([-Wno-error=cast-align],
Lev Walkin's avatar
Lev Walkin committed
55
      [CFLAGS="$CFLAGS -Wno-error=cast-align"])
56
AX_CHECK_COMPILE_FLAG([-Wno-error=visibility],
Lev Walkin's avatar
Lev Walkin committed
57
      [CFLAGS="$CFLAGS -Wno-error=visibility"])
58
AX_CHECK_COMPILE_FLAG([-Wno-error=parentheses-equality],
Lev Walkin's avatar
Lev Walkin committed
59
      [CFLAGS="$CFLAGS -Wno-error=parentheses-equality"])
Lev Walkin's avatar
Lev Walkin committed
60
AX_CHECK_COMPILE_FLAG([-std=gnu99],
Lev Walkin's avatar
Lev Walkin committed
61
      [CFLAGS="$CFLAGS -std=gnu99"
62
TESTSUITE_CFLAGS="$TESTSUITE_CFLAGS -std=gnu99"])
Lev Walkin's avatar
Lev Walkin committed
63 64 65
AX_CHECK_COMPILE_FLAG([-Wno-error=unused-variable],
      [TESTSUITE_CFLAGS="$TESTSUITE_CFLAGS -Wno-error=unused-variable"])

66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
AC_ARG_ENABLE(Werror,
  [AS_HELP_STRING([--enable-Werror],
                  [abort compilation after any C compiler warning])],
  [enable_werror=$enableval], [enable_werror=no])
  AS_IF([test x$enable_werror != xno], [
      ADD_CFLAGS="-Werror -W -Wpointer-arith"
  ])

AC_ARG_ENABLE(test-Werror,
  [AS_HELP_STRING([--enable-test-Werror],
                  [abort compiling tests after any C compiler warning])],
  [enable_test_werror=$enableval], [enable_test_werror=no])
  AS_IF([test x$enable_test_werror != xno], [
      TESTSUITE_CFLAGS="-Werror -W -Wpointer-arith"
  ])

82 83 84 85 86 87 88 89 90 91 92
AX_CODE_COVERAGE
AS_IF([test x$enable_code_coverage != xno], [
	CFLAGS="$CFLAGS $CODE_COVERAGE_CFLAGS"
	# The CODE_COVERAGE_CPPFLAGS contains -DNDEBUG flag
	# which removes assert(...) macros from code coverage and improves the
	# branches score. But when it is defined it results in few
	# unsed-but-set-variable warnings that are treated as errors in the travis-ci
	# build because these variables are only used inside assert macros.
	# error: variable ‘ret’ set but not used [-Werror=unused-but-set-variable]
	#CPPFLAGS="$CPPFLAGS $CODE_COVERAGE_CPPFLAGS"
	CXXFLAGS="$CXXFLAGS $CODE_COVERAGE_CXXFLAGS"
93
	AC_SEARCH_LIBS(gcov_open, gcov, [LDFLAGS="$LDFLAGS $CODE_COVERAGE_LDFLAGS"])
94 95
])

Lev Walkin's avatar
Lev Walkin committed
96 97
dnl Skeletons should be very compatible with most of the compilers, hence
dnl very strict backward compatibility flags.
98
SKELETONS_CFLAGS="${ADD_CFLAGS} ${SKELETONS_CFLAGS}"
Lev Walkin's avatar
Lev Walkin committed
99
AX_CHECK_COMPILE_FLAG([-std=c89],
Lev Walkin's avatar
Lev Walkin committed
100
    [SKELETONS_CFLAGS="$SKELETONS_CFLAGS -std=c89"])
Lev Walkin's avatar
Lev Walkin committed
101
AX_CHECK_COMPILE_FLAG([-Wpedantic],
102 103 104 105 106 107 108 109
    [SKELETONS_CFLAGS="$SKELETONS_CFLAGS -Wpedantic"],
    [
        dnl When -Wpedantic is not supported try the -pedantic instead. (gcc-4.7)
        dnl See https://gcc.gnu.org/gcc-4.8/changes.html
        AX_CHECK_COMPILE_FLAG([-pedantic],
            [SKELETONS_CFLAGS="$SKELETONS_CFLAGS -pedantic"], [], [-Werror])
    ],
    [-Werror]) #clang 3.0 prints warning when the flag is not supported
110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
dnl Enable Address Sanitizer, if supported by gcc (4.8+) or clang.
dnl http://clang.llvm.org/docs/AddressSanitizer.html
dnl https://code.google.com/p/address-sanitizer/wiki/HowToBuild
AC_ARG_ENABLE([test-asan],
    [AS_HELP_STRING([--enable-test-asan], [Enable Address Sanitizer for tests of generated code])],
    [enable_test_asan=$enableval], [enable_test_asan=no])
  AS_IF([test "x$enable_asan" != xno], [
    AX_CHECK_COMPILE_FLAG([-fsanitize=address],
              [SKELETONS_CFLAGS="${SKELETONS_CFLAGS} -fsanitize=address"
              TESTSUITE_CFLAGS="${TESTSUITE_CFLAGS} -fsanitize=address"],
                          [enable_test_asan=no], [])
    AS_IF([test "x$enable_asan" = xno], [
        AC_MSG_FAILURE(
            [--enable-test-asan is given, but not supported on this platform.
 Check out https://code.google.com/p/address-sanitizer/wiki/HowToBuild])])
    dnl Keep error messages nice. Also consider:
    dnl export ASAN_SYMBOLIZER_PATH=/usr/bin/llvm-symbolizer
    dnl export ASAN_OPTIONS=symbolize=1
    AX_CHECK_COMPILE_FLAG([-fno-omit-frame-pointer],
              [SKELETONS_CFLAGS="${SKELETONS_CFLAGS} -fno-omit-frame-pointer"
              TESTSUITE_CFLAGS="${TESTSUITE_CFLAGS} -fno-omit-frame-pointer"],
              [], [])
  ])

AC_SUBST(ADD_CFLAGS)
AC_SUBST(TESTSUITE_CFLAGS)
Lev Walkin's avatar
Lev Walkin committed
136 137
AC_SUBST(SKELETONS_CFLAGS)

Lev Walkin's avatar
Lev Walkin committed
138 139
dnl Checks for header files.
AC_HEADER_STDC
140
AC_CHECK_HEADERS(sys/param.h)
141
AC_CHECK_HEADERS(alloca.h)
Lev Walkin's avatar
Lev Walkin committed
142 143 144 145 146 147

dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_BIGENDIAN
AC_TYPE_OFF_T
AC_TYPE_SIZE_T
AC_STRUCT_TM
148 149
AC_CHECK_TYPE([__int128],
    [AC_DEFINE(HAVE_128_BIT_INT, 1, [Have 128-bit integer])])
Lev Walkin's avatar
Lev Walkin committed
150 151
AC_CHECK_TYPE(intmax_t, int64_t)

Lev Walkin's avatar
Lev Walkin committed
152 153 154
dnl Test if we should test features that depend on 64-bitness.
AC_CHECK_SIZEOF([void *])
AM_CONDITIONAL([TEST_64BIT], [test "$ac_cv_sizeof_void_p" -eq 8])
155

156 157 158
dnl For mingw
AC_SEARCH_LIBS(getopt, iberty)

Lev Walkin's avatar
Lev Walkin committed
159
AC_CHECK_FUNCS(strtoimax strtoll)
Lev Walkin's avatar
Lev Walkin committed
160
AC_CHECK_FUNCS(mergesort)
Lev Walkin's avatar
Lev Walkin committed
161
AC_CHECK_FUNCS(mkstemps)
162
AC_CHECK_FUNCS(timegm)
Frank Morgner's avatar
Frank Morgner committed
163
AC_CHECK_DECLS(alloca strcasecmp)
164
AC_TRY_LINK_FUNC([symlink],[AC_DEFINE([HAVE_SYMLINK], 1, [Define to 1 if you have the symlink function.])])
Lev Walkin's avatar
Lev Walkin committed
165

166 167 168 169
dnl Use pandoc to generate manual pages.
AC_PATH_PROG([PANDOC], pandoc)
AM_CONDITIONAL([HAVE_PANDOC], [test -n "$PANDOC"])

Lev Walkin's avatar
Lev Walkin committed
170
AC_CONFIG_FILES([\
Lev Walkin's avatar
Lev Walkin committed
171 172 173 174 175
tests/tests-c-compiler/check-src/Makefile   \
tests/tests-asn1c-compiler/Makefile         \
tests/tests-c-compiler/Makefile             \
skeletons/tests/Makefile                    \
libasn1compiler/Makefile                    \
Lev Walkin's avatar
Lev Walkin committed
176
libasn1common/Makefile                      \
Lev Walkin's avatar
Lev Walkin committed
177 178 179 180 181 182 183 184 185 186 187
libasn1parser/Makefile                      \
libasn1print/Makefile                       \
libasn1fix/Makefile                         \
doc/docsrc/Makefile                         \
skeletons/Makefile                          \
examples/Makefile                           \
doc/man/Makefile                            \
tests/Makefile                              \
asn1c/Makefile                              \
doc/Makefile                                \
Makefile                                    \
Lev Walkin's avatar
Lev Walkin committed
188 189
])
AC_OUTPUT
Lev Walkin's avatar
Lev Walkin committed
190