blob: 6181ba59273fd53fcaa2389fe18666aea31bcb6f [file] [log] [blame]
Jeongik Cha1199caa2021-07-20 12:32:58 +09001dnl Process this file with autoconf to produce a configure script.
2
3AC_INIT(libconfig, 1.7.3, hyperrealm@gmail.com, libconfig,
4 [https://hyperrealm.github.io/libconfig/])
5AC_CONFIG_AUX_DIR([aux-build])
6AC_CONFIG_MACRO_DIR([m4])
7AC_CANONICAL_TARGET
8AM_INIT_AUTOMAKE
9AC_CONFIG_HEADERS(ac_config.h)
10
11m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
12
13AC_MSG_NOTICE([libconfig - made with pride in Colorado])
14sleep 3
15
16AC_DEFINE_UNQUOTED(TARGET, "${target}", [Configured target name.])
17
18# Enable GNU extensions.
19AC_GNU_SOURCE
20
21LT_INIT()
22
23dnl Checks for programs.
24AC_PROG_CC
25AM_PROG_CC_C_O
26AC_PROG_CXX
27AC_LIBTOOL_WIN32_DLL
28AC_PROG_LIBTOOL
29
30AM_PROG_LEX
31if test Z"$LEX" != Zflex; then
32cat <<EOF
33*******************************************************************
34You do not seem to have flex. While flex is not required to build
35libconfig, you may need it to regenerate the lexer if you change
36the scanner.l file.
37*******************************************************************
38EOF
39fi
40
41AC_PROG_YACC
42if test Z"$YACC" != "Zbison -y"; then
43cat <<EOF
44*******************************************************************
45You do not seem to have bison. While bison is not required to build
46libconfig, you may need it to regenerate the parser if you change
47the grammar.y file.
48*******************************************************************
49EOF
50fi
51
52AC_MSG_CHECKING([for compiler switch to enable full C/C++ warnings]);
53
54dnl Checks for libraries
55
56dnl Enable warnings, if we can determine an appropriate switch...
57case "${CC}" in
58
59gcc)
60 warn_c_sw="-Wall -Wshadow -Wextra -Wdeclaration-after-statement -Wno-unused-parameter"
61 warn_cxx_sw="-Wall -Wshadow -Wextra -Wno-unused-parameter";;
62*)
63 warn_cxx_sw=""
64 warn_c_sw="";;
65esac
66
67if test -n "${warn_c_sw}";
68then
69 CFLAGS="${CFLAGS} ${warn_c_sw}";
70 CXXFLAGS="${CXXFLAGS} ${warn_cxx_sw}";
71 AC_MSG_RESULT([${warn_c_sw}, ${warn_cxx_sw}])
72else
73 AC_MSG_RESULT([(cannot determine)])
74fi;
75
76
77dnl Checks for header files.
78AC_HEADER_STDC
79AC_CHECK_HEADERS(unistd.h stdint.h xlocale.h)
80
81dnl Checks for typedefs, structures, and compiler characteristics.
82AC_C_CONST
83
84dnl Checks for functions
85
86AC_CHECK_FUNCS([newlocale uselocale freelocale])
87
88dnl Package options
89
90docxx=yes
91
92AC_ARG_ENABLE(cxx,
93AS_HELP_STRING([--disable-cxx], [Disable building of the C++ library]),
94[if test "$enableval" = "no"; then docxx="no"; fi],
95[
96docxx=yes
97]
98)
99
100AM_CONDITIONAL(BUILDCXX, test x$docxx = xyes)
101
102dodoc=yes
103
104AC_ARG_ENABLE(doc,
105AS_HELP_STRING([--disable-doc], [Disable building of the documentation]),
106[if test "$enableval" = "no"; then dodoc="no"; fi],
107[
108dodoc=yes
109]
110)
111
112AM_CONDITIONAL(BUILDDOC, test x$dodoc = xyes)
113
114doexamples=yes
115
116AC_ARG_ENABLE(examples,
117AS_HELP_STRING([--disable-examples], [Disable building of the example programs]),
118[if test "$enableval" = "no"; then doexamples="no"; fi],
119[
120doexamples=yes
121]
122)
123
124AM_CONDITIONAL(BUILDEXAMPLES, test x$doexamples = xyes)
125
126dotests=yes
127
128AC_ARG_ENABLE(tests,
129AS_HELP_STRING([--disable-tests], [Disable building of the tests]),
130[if test "$enableval" = "no"; then dotests="no"; fi],
131[
132dotests=yes
133]
134)
135
136AM_CONDITIONAL(BUILDTESTS, test x$dotests = xyes)
137
138dnl Check for MinGW. Workaround for libtool's DLL_EXPORT stupidity.
139
140case "$target" in
141 *-*-cygwin* | *-*-mingw*)
142 gnuwin=yes;;
143esac
144
145AM_CONDITIONAL(GNU_WIN, test x$gnuwin = xyes)
146
147dnl Checks for library functions.
148
149AC_OUTPUT(
150 Makefile
151 lib/Makefile
152 lib/libconfig.pc
153 lib/libconfig++.pc
154 lib/libconfigConfig.cmake
155 lib/libconfig++Config.cmake
156 doc/Makefile
157 examples/Makefile
158 examples/c/Makefile
159 examples/c++/Makefile
160 tinytest/Makefile
161 tests/Makefile
162 libconfig.spec
163 )