]> git.ipfire.org Git - pakfire.git/blame - configure.ac
testsuite: Safety check if value is suddenly NULL
[pakfire.git] / configure.ac
CommitLineData
b55979b4
MT
1###############################################################################
2# #
3# Pakfire - The IPFire package management system #
4# Copyright (C) 2013 Pakfire development team #
5# #
6# This program is free software: you can redistribute it and/or modify #
7# it under the terms of the GNU General Public License as published by #
8# the Free Software Foundation, either version 3 of the License, or #
9# (at your option) any later version. #
10# #
11# This program is distributed in the hope that it will be useful, #
12# but WITHOUT ANY WARRANTY; without even the implied warranty of #
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
14# GNU General Public License for more details. #
15# #
16# You should have received a copy of the GNU General Public License #
17# along with this program. If not, see <http://www.gnu.org/licenses/>. #
18# #
19###############################################################################
20
21AC_PREREQ([2.64])
22
23AC_INIT([pakfire],
48b888dc 24 [0.9.27],
b55979b4
MT
25 [info@ipfire.org],
26 [pakfire],
27 [http://git.ipfire.org/?p=pakfire.git;a=summary])
28
29AC_CONFIG_MACRO_DIR([m4])
30AC_CONFIG_HEADERS([config.h])
31AC_CONFIG_AUX_DIR([build-aux])
32
33AC_USE_SYSTEM_EXTENSIONS
34AC_SYS_LARGEFILE
35AC_PREFIX_DEFAULT([/usr])
36
37AM_INIT_AUTOMAKE([
38 foreign
39 1.11
40 -Wall
41 -Wno-portability
42 silent-rules
43 tar-pax
44 subdir-objects
45])
46AM_SILENT_RULES([yes])
47LT_PREREQ(2.2)
48LT_INIT([disable-static])
49
50IT_PROG_INTLTOOL([0.40.0])
51
b5da7e9a
MT
52XGETTEXT="${XGETTEXT} --keyword=_:1,2 --keyword=N_:1,2 --no-location"
53
b55979b4
MT
54GETTEXT_PACKAGE=pakfire
55AC_SUBST(GETTEXT_PACKAGE)
56
57AC_PROG_LN_S
58AC_PROG_MKDIR_P
59AC_PROG_SED
60
a5fc19b7
MT
61AC_ARG_ENABLE([debug],
62 AS_HELP_STRING([--enable-debug], [enable debug messages @<:@default=disabled@:>@]),
63 [], [enable_debug=no])
64AS_IF([test "x$enable_debug" = "xyes"], [
65 AC_DEFINE(ENABLE_DEBUG, [1], [Debug messages.])
66])
67
5f14f4ce
MT
68# Online Tests
69AC_ARG_ENABLE([online-tests],
70 AS_HELP_STRING(
71 [--enable-online-tests],
72 [enable tests that require internet access @<:@default=disabled@:>@]
73 ), [], [enable_online_tests=no]
74)
75AS_IF([test "x$enable_online_tests" = "xyes"], [
76 AC_DEFINE(ENABLE_ONLINE_TESTS, [1], [Online Tests])
77])
78
b55979b4
MT
79# pkg-config
80PKG_PROG_PKG_CONFIG
81# This makes sure pkg.m4 is available.
82m4_pattern_forbid([^_?PKG_[A-Z_]+$],[*** pkg.m4 missing, please install pkg-config])
83
84# C Compiler
85AC_PROG_CC
86AC_PROG_CC_C99
87AC_PROG_CC_C_O
88AC_PROG_GCC_TRADITIONAL
89AC_OPENMP
90
91CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [\
92 -pipe \
93 -Wall \
94 -Wextra \
95 -Wno-inline \
96 -Wundef \
97 "-Wformat=2 -Wformat-security -Wformat-nonliteral" \
98 -Wno-unused-parameter \
99 -Wno-unused-result \
100 -fno-strict-aliasing \
101 -ffunction-sections \
102 -fdata-sections \
103 -fstack-protector-all \
104 --param=ssp-buffer-size=4])
9413f094
MT
105
106# Enable -fanalyzer if requested
107AC_ARG_ENABLE([analyzer],
108 AS_HELP_STRING([--enable-analyzer], [enable static analyzer (-fanalyzer) @<:@default=disabled@:>@]),
109 [], [enable_analyzer=no])
110AS_IF([test "x$enable_analyzer" = "xyes"],
111 CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [-fanalyzer])
31c03998 112)
9413f094 113
b55979b4
MT
114AC_SUBST([OUR_CFLAGS], $with_cflags)
115
116AS_CASE([$CFLAGS], [*-O[[12345g\ ]]*],
117 [CC_CHECK_FLAGS_APPEND([with_cppflags], [CPPFLAGS], [\
118 -Wp,-D_FORTIFY_SOURCE=2])],
119 [AC_MSG_RESULT([skipping -D_FORTIFY_SOURCE, optimization not enabled])])
120AC_SUBST([OUR_CPPFLAGS], $with_cppflags)
121
122CC_CHECK_FLAGS_APPEND([with_ldflags], [LDFLAGS], [\
123 -Wl,--as-needed \
124 -Wl,--no-undefined \
125 -Wl,--gc-sections \
126 -Wl,-z,relro \
127 -Wl,-z,now])
128AC_SUBST([OUR_LDFLAGS], $with_ldflags)
129
201c0ac0 130# Bison
dee8ae80 131AC_PROG_YACC
dbcf80a3
MT
132
133if test -z "${ac_cv_prog_YACC}"; then
134 echo "*** Error: No suitable bison/yacc found. ***"
135 echo " Please install the 'bison' package."
136 exit 1
137fi
201c0ac0
MT
138
139# Flex
73e181f6
MT
140AM_PROG_LEX
141
dbcf80a3
MT
142if test -z "${ac_cv_prog_LEX}"; then
143 echo "*** Error: No suitable flex/lex found. ***"
144 echo " Please install the 'flex' package."
145 exit 1
146fi
147
221cc3ce
MT
148AC_C_CONST
149AC_CHECK_LIB([m], [round])
150
151AC_CHECK_HEADERS([ \
280ffaee 152 ctype.h \
e44d46cd
MT
153 dirent.h \
154 errno.h \
31f64b2c 155 fcntl.h \
e44d46cd
MT
156 fnmatch.h \
157 fts.h \
158 ftw.h \
159 glob.h \
160 grp.h \
161 libgen.h \
162 libintl.h \
163 linux/limits.h \
164 linux/magic.h \
165 linux/sched.h \
221cc3ce 166 math.h \
e44d46cd 167 pwd.h \
0ba52fbe 168 regex.h \
d0759555 169 sched.h \
e44d46cd 170 signal.h \
5f548bf0 171 stdarg.h \
e44d46cd
MT
172 stdint.h \
173 stdio.h \
221cc3ce
MT
174 stdlib.h \
175 string.h \
5f548bf0 176 syslog.h \
31f64b2c 177 sys/epoll.h \
e44d46cd
MT
178 sys/ioctl.h \
179 sys/mount.h \
9dd163f4 180 sys/personality.h \
e44d46cd
MT
181 sys/random.h \
182 sys/resource.h \
285b2758 183 sys/sendfile.h \
221cc3ce 184 sys/stat.h \
e44d46cd
MT
185 sys/sysmacros.h \
186 sys/types.h \
187 sys/user.h \
188 sys/utsname.h \
189 sys/vfs.h \
190 sys/wait.h \
191 time.h \
192 unistd.h \
193 utime.h
221cc3ce
MT
194])
195
196AC_CHECK_FUNCS([ \
e44d46cd 197 asprintf \
31f64b2c
MT
198 epoll_ctl \
199 epoll_create1 \
200 epoll_wait \
201 fnctl \
e44d46cd
MT
202 fts_close \
203 fts_open \
204 fts_read \
205 getpid \
206 glob \
207 nftw \
208 openlog \
9dd163f4 209 personality \
e44d46cd 210 remove \
5f548bf0 211 secure_getenv \
285b2758 212 sendfile \
e44d46cd 213 snprintf \
221cc3ce 214 strcmp \
d0759555 215 strdup \
e44d46cd 216 syslog \
2b04f43c 217 qsort \
e44d46cd
MT
218 uname \
219 unlink \
220 vasprintf \
221 vsnprintf
221cc3ce
MT
222])
223
8e4ddb5f 224# Python Stuff
9861f185 225AM_PATH_PYTHON([3.6])
8e4ddb5f 226
09ccdffa
MT
227AX_PYTHON_MODULE([systemd], [fatal])
228AX_PYTHON_MODULE([tornado], [fatal])
a40b356c 229
8e4ddb5f 230# Libraries we depend on
2ad202cf 231PKG_CHECK_MODULES([ARCHIVE], [libarchive >= 3.5.0])
9d017afc 232PKG_CHECK_MODULES([CURL], [libcurl])
a5180a26
MT
233PKG_CHECK_MODULES([PYTHON_DEVEL], [python-${PYTHON_VERSION}-embed],
234 [], [PKG_CHECK_MODULES([PYTHON_DEVEL], [python-${PYTHON_VERSION}])])
705a7c99 235PKG_CHECK_MODULES([JSON_C], [json-c >= 0.15])
b55979b4 236PKG_CHECK_MODULES([LZMA], [liblzma])
36230729 237PKG_CHECK_MODULES([OPENSSL], [openssl >= 1.1.1])
ae83d808 238PKG_CHECK_MODULES([PCRE2], [libpcre2-8])
113a6d68 239PKG_CHECK_MODULES([SOLV], [libsolv >= 0.7.5])
26affd69 240PKG_CHECK_MODULES([SQLITE3], [sqlite3])
eba8ae92
MT
241PKG_CHECK_MODULES([SYSTEMD], [libsystemd],
242 [AC_DEFINE([HAVE_SYSTEMD], [1], [Use systemd])])
df552c32 243PKG_CHECK_MODULES([UUID], [uuid])
2f5d648d 244PKG_CHECK_MODULES([ZSTD], [libzstd])
b55979b4 245
0e75ae24
MT
246AM_PATH_GPGME([1.6.0], [], [AC_MSG_ERROR([*** GPGME not found])])
247
b55979b4
MT
248AC_ARG_WITH([systemdsystemunitdir],
249 AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files]),
250 [], [with_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)])
251AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])
252AM_CONDITIONAL(HAVE_SYSTEMD, [test -n "$with_systemdsystemunitdir"])
253
3f559dd0 254AC_DEFINE_UNQUOTED([PAKFIRE_CONFIG_DIR], ["${sysconfdir}/${PACKAGE_NAME}"],
54bf8fba 255 [The path where Pakfire stores configuration files])
3f559dd0 256AC_DEFINE_UNQUOTED([PAKFIRE_CACHE_DIR], ["/var/cache/${PACKAGE_NAME}"],
93d45f3c 257 [The path where Pakfire caches downloaded data])
9ad608aa
MT
258AC_DEFINE_UNQUOTED([PAKFIRE_PRIVATE_DIR], ["/var/lib/${PACKAGE_NAME}"],
259 [The path where Pakfire stores its private data])
8d0f3a35
MT
260AC_DEFINE_UNQUOTED([PAKFIRE_SCRIPTS_DIR], ["${PREFIX}/lib/${PACKAGE_NAME}"],
261 [The path where Pakfire stores its scripts])
93d45f3c
MT
262AC_DEFINE_UNQUOTED([PAKFIRE_TMP_DIR], ["/var/tmp/${PACKAGE_NAME}"],
263 [The path where Pakfire stores temporary data])
9ad608aa 264
b55979b4
MT
265AC_CONFIG_FILES([
266 Makefile
267 po/Makefile.in
b55979b4
MT
268 src/pakfire/__version__.py
269])
270
271AC_OUTPUT
272AC_MSG_RESULT([
273 $PACKAGE_NAME $VERSION
274
a5fc19b7 275 Debug: ${enable_debug}
5f14f4ce 276 Online Tests: ${enable_online_tests}
a5fc19b7 277
b55979b4
MT
278 CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
279 CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
280 LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
281 PYTHON_CFLAGS: ${PYTHON_DEVEL_CFLAGS}
282 PYTHON_LIBS: ${PYTHON_DEVEL_LIBS}
283])