]> git.ipfire.org Git - pakfire.git/blobdiff - configure.ac
compress: Remove legacy logger
[pakfire.git] / configure.ac
index 0a8b12bba1eccd8184afe9d1c6cd255fe253b1eb..204556a801e815dcf18fa4ffc6ab3b6f0fe57d35 100644 (file)
 #                                                                             #
 ###############################################################################
 
-AC_PREREQ([2.64])
+AC_PREREQ([2.69])
 
 AC_INIT([pakfire],
-       [0.9.27],
+       [0.9.29],
        [info@ipfire.org],
        [pakfire],
-       [http://git.ipfire.org/?p=pakfire.git;a=summary])
+       [https://git.ipfire.org/?p=pakfire.git;a=summary])
 
 AC_CONFIG_MACRO_DIR([m4])
 AC_CONFIG_HEADERS([config.h])
@@ -65,6 +65,32 @@ AS_IF([test "x$enable_debug" = "xyes"], [
        AC_DEFINE(ENABLE_DEBUG, [1], [Debug messages.])
 ])
 
+# Online Tests
+AC_ARG_ENABLE([online-tests],
+       AS_HELP_STRING(
+               [--enable-online-tests],
+               [enable tests that require internet access @<:@default=disabled@:>@]
+       ), [], [enable_online_tests=no]
+)
+AS_IF([test "x$enable_online_tests" = "xyes"], [
+       AC_DEFINE(ENABLE_ONLINE_TESTS, [1], [Online Tests])
+])
+
+# Man Pages
+
+have_man_pages=no
+AC_ARG_ENABLE(man_pages, AS_HELP_STRING([--disable-man-pages],
+       [do not install man pages]))
+AS_IF([test "x$enable_man_pages" != xno], [have_man_pages=yes])
+AM_CONDITIONAL(ENABLE_MAN_PAGES, [test "x$have_man_pages" = "xyes"])
+
+AC_PATH_PROG([XSLTPROC], [xsltproc])
+
+AC_CHECK_PROGS(ASCIIDOC, [asciidoc])
+if test "${have_man_pages}" = "yes" && test -z "${ASCIIDOC}"; then
+       AC_MSG_ERROR([Required program 'asciidoc' not found])
+fi
+
 # pkg-config
 PKG_PROG_PKG_CONFIG
 # This makes sure pkg.m4 is available.
@@ -72,41 +98,80 @@ m4_pattern_forbid([^_?PKG_[A-Z_]+$],[*** pkg.m4 missing, please install pkg-conf
 
 # C Compiler
 AC_PROG_CC
-AC_PROG_CC_C99
-AC_PROG_CC_C_O
-AC_PROG_GCC_TRADITIONAL
-AC_OPENMP
 
 CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [\
-       -pipe \
+       -std=gnu11 \
        -Wall \
        -Wextra \
-       -Wno-inline \
-       -Wundef \
-       "-Wformat=2 -Wformat-security -Wformat-nonliteral" \
+       -Warray-bounds=2 \
+       -Wdate-time \
+       -Wendif-labels \
+       -Werror=format=2 \
+       -Werror=format-signedness \
+       -Werror=implicit-function-declaration \
+       -Werror=implicit-int \
+       -Werror=incompatible-pointer-types \
+       -Werror=int-conversion \
+       -Werror=missing-declarations \
+       -Werror=missing-prototypes \
+       -Werror=overflow \
+       -Werror=override-init \
+       -Werror=return-type \
+       -Werror=shift-count-overflow \
+       -Werror=shift-overflow=2 \
+       -Werror=strict-flex-arrays \
+       -Werror=undef \
+       -Wfloat-equal \
+       -Wimplicit-fallthrough=5 \
+       -Winit-self \
+       -Wlogical-op \
+       -Wmissing-include-dirs \
+       -Wmissing-noreturn \
+       -Wnested-externs \
+       -Wold-style-definition \
+       -Wpointer-arith \
+       -Wredundant-decls \
+       -Wshadow \
+       -Wstrict-aliasing=2 \
+       -Wstrict-prototypes \
+       -Wsuggest-attribute=noreturn \
+       -Wunused-function \
+       -Wwrite-strings \
+       -Wzero-length-bounds \
        -Wno-unused-parameter \
-       -Wno-unused-result \
-       -fno-strict-aliasing \
-       -ffunction-sections \
-       -fdata-sections \
-       -fstack-protector-all \
-       --param=ssp-buffer-size=4])
-AC_SUBST([OUR_CFLAGS], $with_cflags)
+       -Wno-missing-field-initializers \
+       -fdiagnostics-show-option \
+       -fno-common \
+])
 
-AS_CASE([$CFLAGS], [*-O[[12345g\ ]]*],
-       [CC_CHECK_FLAGS_APPEND([with_cppflags], [CPPFLAGS], [\
-               -Wp,-D_FORTIFY_SOURCE=2])],
-       [AC_MSG_RESULT([skipping -D_FORTIFY_SOURCE, optimization not enabled])])
-AC_SUBST([OUR_CPPFLAGS], $with_cppflags)
+# Enable -fanalyzer if requested
+AC_ARG_ENABLE([analyzer],
+       AS_HELP_STRING([--enable-analyzer], [enable static analyzer (-fanalyzer) @<:@default=disabled@:>@]),
+       [], [enable_analyzer=no])
+AS_IF([test "x$enable_analyzer" = "xyes"],
+       CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [-fanalyzer])
+)
+
+# Enable -fno-semantic-interposition (if available)
+CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [-fno-semantic-interposition])
+CC_CHECK_FLAGS_APPEND([with_ldflags], [LDFLAGS], [-fno-semantic-interposition])
 
-CC_CHECK_FLAGS_APPEND([with_ldflags], [LDFLAGS], [\
-       -Wl,--as-needed \
-       -Wl,--no-undefined \
-       -Wl,--gc-sections \
-       -Wl,-z,relro \
-       -Wl,-z,now])
+AC_SUBST([OUR_CPPFLAGS], $with_cppflags)
+AC_SUBST([OUR_CFLAGS], $with_cflags)
 AC_SUBST([OUR_LDFLAGS], $with_ldflags)
 
+# C Types
+AC_TYPE_INT64_T
+AC_TYPE_INTMAX_T
+AC_TYPE_INTPTR_T
+AC_TYPE_MODE_T
+AC_TYPE_OFF_T
+AC_TYPE_PID_T
+AC_TYPE_SIZE_T
+AC_TYPE_SSIZE_T
+AC_TYPE_UID_T
+AC_TYPE_UINT64_T
+
 # Bison
 AC_PROG_YACC
 
@@ -125,65 +190,130 @@ if test -z "${ac_cv_prog_LEX}"; then
         exit 1
 fi
 
-# Python
-AM_PATH_PYTHON([3.6])
-
 AC_C_CONST
 AC_CHECK_LIB([m], [round])
 
 AC_CHECK_HEADERS([ \
-       ctypes.h \
+       ctype.h \
+       dirent.h \
+       errno.h \
        fcntl.h \
+       fnmatch.h \
+       fts.h \
+       ftw.h \
+       glob.h \
+       grp.h \
+       libgen.h \
+       libintl.h \
+       linux/bpf.h \
+       linux/capability.h \
+       linux/limits.h \
+       linux/magic.h \
+       linux/sched.h \
        math.h \
+       pwd.h \
        regex.h \
        sched.h \
+       signal.h \
        stdarg.h \
+       stdint.h \
+       stdio.h \
        stdlib.h \
        string.h \
        syslog.h \
+       sys/capability.h \
        sys/epoll.h \
+       sys/file.h \
+       sys/ioctl.h \
+       sys/mount.h \
        sys/personality.h \
+       sys/prctl.h \
+       sys/random.h \
+       sys/resource.h \
+       sys/sendfile.h \
        sys/stat.h \
-       unistd.h
+       sys/sysmacros.h \
+       sys/types.h \
+       sys/user.h \
+       sys/utsname.h \
+       sys/vfs.h \
+       sys/wait.h \
+       time.h \
+       unistd.h \
+       utime.h
 ])
 
 AC_CHECK_FUNCS([ \
-       assert \
+       asprintf \
+       bpf \
        epoll_ctl \
        epoll_create1 \
        epoll_wait \
+       flock \
        fnctl \
+       getpid \
+       glob \
+       nftw \
+       openlog \
        personality \
+       prctl \
+       remove \
        secure_getenv \
+       sendfile \
+       snprintf \
        strcmp \
        strdup \
+       syslog \
        qsort \
-       unshare
+       uname \
+       unlink \
+       vasprintf \
+       vsnprintf
 ])
 
-save_LIBS="$LIBS"
-
-# libdl
-LIBS=
-AC_SEARCH_LIBS([dlsym], [dl], [], [AC_MSG_ERROR([*** Dynamic linking loader library not found])])
-DL_LIBS="$LIBS"
-AC_SUBST(DL_LIBS)
+# Python Stuff
+AM_PATH_PYTHON([3.6])
 
-LIBS="$save_LIBS"
+AX_PYTHON_MODULE([kerberos], [fatal])
+AX_PYTHON_MODULE([setproctitle], [fatal])
+AX_PYTHON_MODULE([systemd], [fatal])
+AX_PYTHON_MODULE([tornado], [fatal])
 
-PKG_CHECK_MODULES([ARCHIVE], [libarchive >= 3.3.3])
+# Libraries we depend on
+PKG_CHECK_MODULES([ARCHIVE], [libarchive >= 3.4.0])
+PKG_CHECK_MODULES([BPF], [libbpf])
+PKG_CHECK_MODULES([CAP], [libcap])
 PKG_CHECK_MODULES([CURL], [libcurl])
-PKG_CHECK_MODULES([PYTHON_DEVEL], [python-${PYTHON_VERSION}])
-PKG_CHECK_MODULES([JSON_C], [json-c])
+PKG_CHECK_MODULES([ELF], [libelf])
+PKG_CHECK_MODULES([PYTHON_DEVEL], [python-${PYTHON_VERSION}-embed],
+       [], [PKG_CHECK_MODULES([PYTHON_DEVEL], [python-${PYTHON_VERSION}])])
+PKG_CHECK_MODULES([JSON_C], [json-c >= 0.15])
+PKG_CHECK_MODULES([KRB5], [krb5])
 PKG_CHECK_MODULES([LZMA], [liblzma])
+PKG_CHECK_MODULES([MAGIC], [libmagic])
+PKG_CHECK_MODULES([NL3], [libnl-3.0])
+PKG_CHECK_MODULES([NL3_ROUTE], [libnl-route-3.0])
 PKG_CHECK_MODULES([OPENSSL], [openssl >= 1.1.1])
 PKG_CHECK_MODULES([PCRE2], [libpcre2-8])
-PKG_CHECK_MODULES([SOLV], [libsolv])
+PKG_CHECK_MODULES([SECCOMP], [libseccomp])
+PKG_CHECK_MODULES([SOLV], [libsolv >= 0.7.5])
 PKG_CHECK_MODULES([SQLITE3], [sqlite3])
+PKG_CHECK_MODULES([SYSTEMD], [libsystemd],
+       [AC_DEFINE([HAVE_SYSTEMD], [1], [Use systemd])])
 PKG_CHECK_MODULES([UUID], [uuid])
 PKG_CHECK_MODULES([ZSTD], [libzstd])
 
-AM_PATH_GPGME([1.6.0], [], [AC_MSG_ERROR([*** GPGME not found])])
+save_LIBS="$LIBS"
+
+# subid
+#LIBS=
+#AC_SEARCH_LIBS([subid_init], [subid],
+#      [AC_DEFINE([HAVE_SUBID], [], [subid is present])],
+#      [AC_MSG_WARN([*** subid library not found])])
+#SUBID_LIBS="$LIBS"
+#AC_SUBST(SUBID_LIBS)
+
+LIBS="$save_LIBS"
 
 AC_ARG_WITH([systemdsystemunitdir],
        AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files]),
@@ -191,12 +321,16 @@ AC_ARG_WITH([systemdsystemunitdir],
 AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])
 AM_CONDITIONAL(HAVE_SYSTEMD, [test -n "$with_systemdsystemunitdir"])
 
-AC_DEFINE_UNQUOTED([PAKFIRE_CONFIG_PATH], ["${sysconfdir}/${PACKAGE_NAME}"],
+AC_DEFINE_UNQUOTED([PAKFIRE_CONFIG_DIR], ["${sysconfdir}/${PACKAGE_NAME}"],
        [The path where Pakfire stores configuration files])
-AC_DEFINE_UNQUOTED([PAKFIRE_CACHE_PATH], ["/var/cache/${PACKAGE_NAME}"],
-       [The path where Pakfire stores temporary data])
+AC_DEFINE_UNQUOTED([PAKFIRE_CACHE_DIR], ["/var/cache/${PACKAGE_NAME}"],
+       [The path where Pakfire caches downloaded data])
 AC_DEFINE_UNQUOTED([PAKFIRE_PRIVATE_DIR], ["/var/lib/${PACKAGE_NAME}"],
        [The path where Pakfire stores its private data])
+AC_DEFINE_UNQUOTED([PAKFIRE_SCRIPTS_DIR], ["${PREFIX}/lib/${PACKAGE_NAME}"],
+       [The path where Pakfire stores its scripts])
+AC_DEFINE_UNQUOTED([PAKFIRE_TMP_DIR], ["/var/tmp"],
+       [The path where Pakfire stores temporary data])
 
 AC_CONFIG_FILES([
        Makefile
@@ -209,9 +343,10 @@ AC_MSG_RESULT([
        $PACKAGE_NAME $VERSION
 
        Debug:                  ${enable_debug}
+       Online Tests:           ${enable_online_tests}
 
-       CFLAGS:                 ${OUR_CFLAGS} ${CFLAGS}
        CPPFLAGS:               ${OUR_CPPFLAGS} ${CPPFLAGS}
+       CFLAGS:                 ${OUR_CFLAGS} ${CFLAGS}
        LDFLAGS:                ${OUR_LDFLAGS} ${LDFLAGS}
        PYTHON_CFLAGS:          ${PYTHON_DEVEL_CFLAGS}
        PYTHON_LIBS:            ${PYTHON_DEVEL_LIBS}