configure.ac 7.16 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
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"
77
	AC_SEARCH_LIBS(gcov_open, gcov, [LDFLAGS="$LDFLAGS $CODE_COVERAGE_LDFLAGS"])
78 79
])

Lev Walkin's avatar
Lev Walkin committed
80 81
dnl Skeletons should be very compatible with most of the compilers, hence
dnl very strict backward compatibility flags.
82
SKELETONS_CFLAGS="${ADD_CFLAGS} ${SKELETONS_CFLAGS}"
Lev Walkin's avatar
Lev Walkin committed
83
AX_CHECK_COMPILE_FLAG([-std=c89],
Lev Walkin's avatar
Lev Walkin committed
84
    [SKELETONS_CFLAGS="$SKELETONS_CFLAGS -std=c89"])
Lev Walkin's avatar
Lev Walkin committed
85
AX_CHECK_COMPILE_FLAG([-Wpedantic],
86 87 88 89 90 91 92 93
    [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
Lev Walkin's avatar
Lev Walkin committed
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113

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="${ADD_CFLAGS} -Werror -W -Wall -Wpointer-arith"
      SKELETONS_CFLAGS="${SKELETONS_CFLAGS} -Werror -W -Wall -Wpointer-arith"
      AX_CHECK_COMPILE_FLAG([-Wgnu],
        [SKELETONS_CFLAGS="${SKELETONS_CFLAGS} -Wgnu"])
  ])

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="${TESTSUITE_CFLAGS} -Werror -W -Wpointer-arith"
  ])

114 115 116 117 118 119
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])
Lev Walkin's avatar
Lev Walkin committed
120 121
  AS_IF([test "x$enable_test_asan" != xno], [
echo test asan1 [${enable_test_asan}]
122
    AX_CHECK_COMPILE_FLAG([-fsanitize=address],
Lev Walkin's avatar
Lev Walkin committed
123 124 125 126
      [SKELETONS_CFLAGS="${SKELETONS_CFLAGS} -fsanitize=address"
      TESTSUITE_CFLAGS="${TESTSUITE_CFLAGS} -fsanitize=address"]
                          [enable_test_asan=no])
    AS_IF([test "x$enable_test_asan" = xno], [
127 128 129 130 131 132 133 134 135 136 137 138 139 140
        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
141 142
AC_SUBST(SKELETONS_CFLAGS)

Lev Walkin's avatar
Lev Walkin committed
143 144
dnl Checks for header files.
AC_HEADER_STDC
145
AC_CHECK_HEADERS(sys/param.h)
146
AC_CHECK_HEADERS(alloca.h)
Lev Walkin's avatar
Lev Walkin committed
147 148 149 150 151 152

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

Lev Walkin's avatar
Lev Walkin committed
157 158 159
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])
160

161 162 163
dnl For mingw
AC_SEARCH_LIBS(getopt, iberty)

Lev Walkin's avatar
Lev Walkin committed
164
AC_CHECK_FUNCS(strtoimax strtoll)
Lev Walkin's avatar
Lev Walkin committed
165
AC_CHECK_FUNCS(mergesort)
Lev Walkin's avatar
Lev Walkin committed
166
AC_CHECK_FUNCS(mkstemps)
167
AC_CHECK_FUNCS(timegm)
Frank Morgner's avatar
Frank Morgner committed
168
AC_CHECK_DECLS(alloca strcasecmp)
169
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
170

171 172 173 174
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
175
AC_CONFIG_FILES([\
Lev Walkin's avatar
Lev Walkin committed
176 177 178
tests/tests-c-compiler/check-src/Makefile   \
tests/tests-asn1c-compiler/Makefile         \
tests/tests-c-compiler/Makefile             \
Lev Walkin's avatar
Lev Walkin committed
179
tests/tests-skeletons/Makefile              \
Lev Walkin's avatar
Lev Walkin committed
180
libasn1compiler/Makefile                    \
Lev Walkin's avatar
Lev Walkin committed
181
libasn1common/Makefile                      \
Lev Walkin's avatar
Lev Walkin committed
182 183 184 185 186 187 188 189 190 191 192
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
193 194
])
AC_OUTPUT
Lev Walkin's avatar
Lev Walkin committed
195