docdir = @docdir@
mandir = @mandir@
datadir = @datadir@
-dictdir = $(datadir)/freeradius
+dictdir = @dictdir@
logdir = @logdir@
+includedir = @includedir@
+
+#
+# In some systems, we don't want to over-write ANY configuration.
+# So we do:
+#
+# $./configure
+# $ make
+# $ make -Draddbdir=/tmp/garbage install
+#
+# and all of the configuration files go into /tmp/garbage
+#
+ifeq "${raddbdir}" ""
raddbdir = @raddbdir@
+endif
+modconfdir = @modconfdir@
radacctdir = @radacctdir@
top_builddir = @abs_top_builddir@
+top_build_prefix=@abs_top_builddir@/
top_srcdir = @abs_top_srcdir@
+datarootdir = @datarootdir@
MAKE = @MAKE@
+
+# Makeflags set within the makefile appear to be additive and override
+# flags set on the command line and the environmental variables
+MAKEFLAGS = @FR_MAKEFLAGS@
+
CC = @CC@
RANLIB = @RANLIB@
-INCLUDE =
-CFLAGS = $(INCLUDE) @CFLAGS@ @LFS_CFLAGS@
+INCLUDE = -I. -Isrc \
+ -include src/freeradius-devel/autoconf.h \
+ -include src/freeradius-devel/build.h \
+ -include src/freeradius-devel/features.h \
+ -include src/freeradius-devel/radpaths.h
+CFLAGS = $(INCLUDE) -fno-strict-aliasing @CFLAGS@
CPPFLAGS = @CPPFLAGS@
LIBPREFIX = @LIBPREFIX@
-EXEEXT = @EXEEXT@
+EXEEXT = @EXEEXT@
-LIBTOOL = @LIBTOOL@
+LIBTOOL = JLIBTOOL
ACLOCAL = @ACLOCAL@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
INSTALL_SCRIPT = ${INSTALL_PROGRAM}
INSTALLSTRIP = @INSTALLSTRIP@
+#
+# Linker arguments for libraries searched for by the main
+# configure script.
+#
+TALLOC_LIBS = @TALLOC_LIBS@
+TALLOC_LDFLAGS = @TALLOC_LDFLAGS@
+
+OPENSSL_LIBS = @OPENSSL_LIBS@
+OPENSSL_LDFLAGS = @OPENSSL_LDFLAGS@
+OPENSSL_CPPFLAGS = @OPENSSL_CPPFLAGS@
+
+PCAP_LIBS = @PCAP_LIBS@
+PCAP_LDFLAGS = @PCAP_LDFLAGS@
+
+COLLECTDC_LIBS = @COLLECTDC_LIBS@
+COLLECTDC_LDFLAGS = @COLLECTDC_LDFLAGS@
+
LCRYPT = @CRYPTLIB@
-LIBS = @LIBS@ @LFS_LIBS@
-LDFLAGS = @LDFLAGS@ @LFS_LDFLAGS@
+
+#
+# OpenSSL libs (if used) must be linked everywhere in order for
+# the server to work properly on on all platforms.
+#
+LIBS = $(OPENSSL_LIBS) $(TALLOC_LIBS) @LIBS@
+LDFLAGS = $(OPENSSL_LDFLAGS) $(TALLOC_LDFLAGS) @LDFLAGS@
LOGDIR = ${logdir}
RADDBDIR = ${raddbdir}
RUNDIR = ${localstatedir}/run/radiusd
SBINDIR = ${sbindir}
RADIR = ${radacctdir}
+LIBRADIUS = $(top_builddir)/src/lib/$(LIBPREFIX)freeradius-radius.la $(TALLOC_LIBS)
-LIBLTDL = @LIBLTDL@
-INCLTDL = @INCLTDL@
-LTDL_SUBDIRS = @LTDL_SUBDIRS@
-
-USE_SHARED_LIBS = @USE_SHARED_LIBS@
+USE_SHARED_LIBS = @USE_SHARED_LIBS@
+bm_shared_libs = @USE_SHARED_LIBS@
USE_STATIC_LIBS = @USE_STATIC_LIBS@
+bm_static_libs = @USE_STATIC_LIBS@
+
STATIC_MODULES = @STATIC_MODULES@
+LIBREADLINE = @LIBREADLINE@
-SNMP_INCLUDE = @SNMP_INCLUDE@
-SNMP_LIBS = @SNMP_LIBS@
+#
+# Version to use for packaging and other Make related things
+#
+RADIUSD_VERSION_STRING = @RADIUSD_VERSION_STRING@
-OPENSSL_LIBS = @OPENSSL_LIBS@
-OPENSSL_INCLUDE = @OPENSSL_INCLUDE@
+#
+# This allows dlopen to do runtime checks for version mismatches
+# between what it was originally linked with, and the library it's
+# actually loading.
+#
+MODULES = @MODULES@
+HOSTINFO = @HOSTINFO@
#
-# SQL driver defines
+# If the system has OpenSSL, use it's version of MD4/MD5/SHA1, instead of
+# using ours.
+#
+# We don't use OpenSSL SHA1 by default because src/modules/rlm_eap/libeap/fips186prf.c
+# needs access to the SHA internals.
#
-SQL_ODBC_LIBS = @ODBC_LIBS@
-SQL_ODBC_INCLUDE = @ODBC_INCLUDE@
+ifeq "$(WITH_OPENSSL)" "yes"
+CFLAGS += -DWITH_OPENSSL_MD4 -DWITH_OPENSSL_MD5
+CPPFLAGS := "$(OPENSSL_CPPFLAGS) $(CPPFLAGS)"
+endif
-RADIUSD_MAJOR_VERSION = @RADIUSD_MAJOR_VERSION@
-RADIUSD_MINOR_VERSION = @RADIUSD_MINOR_VERSION@
-RADIUSD_VERSION = @RADIUSD_VERSION@
+OPENSSL_LIBS = @OPENSSL_LIBS@
+
+ifneq ($(WITH_OPENSSL_MD5),)
+LIBRADIUS_WITH_OPENSSL = 1
+CFLAGS += -DWITH_OPENSSL_MD5
+endif
+
+ifneq ($(WITH_OPENSSL_SHA1),)
+LIBRADIUS_WITH_OPENSSL = 1
+CFLAGS += -DWITH_OPENSSL_SHA1
+endif
+
+ifneq ($(LIBRADIUS_WITH_OPENSSL),)
+ifeq ($(OPENSSL_LIBS),)
+$(error OPENSSL_LIBS must be define in order to use WITH_OPENSSL_*)
+else
+LIBRADIUS += $(OPENSSL_LIBS)
+endif
+endif
-MODULES = @MODULES@
-HOSTINFO = @HOSTINFO@
+# Path to clang, setting this enables the 'scan.*' build targets
+# which perform static analysis on various server components.
+ANALYZE.c := @clang_path@
+
+#
+# With shared libs, the test binaries are in a different place
+# AND the method we use to run those binaries changes.
+#
+ifeq "$(USE_SHARED_LIBS)" "yes"
+ TESTBINDIR = ./$(BUILD_DIR)/bin/local
+ TESTBIN = FR_LIBRARY_PATH=./build/lib/.libs $(JLIBTOOL) --quiet --mode=execute $(TESTBINDIR)
+else
+ TESTBINDIR = ./$(BUILD_DIR)/bin
+ TESTBIN = ./$(BUILD_DIR)/bin
+endif