Remove redundant includes of netinet/in.h
[freeradius.git] / Make.inc.in
index e1716c8..04e1b01 100644 (file)
@@ -15,25 +15,49 @@ sbindir             = @sbindir@
 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@
+INCLUDE                = -I${top_srcdir} -I${top_srcdir}/src \
+                 -include ${top_srcdir}/src/freeradius-devel/autoconf.h \
+                 -include ${top_srcdir}/src/freeradius-devel/build.h \
+                 -include ${top_srcdir}/src/freeradius-devel/features.h \
+                 -include ${top_srcdir}/src/freeradius-devel/radpaths.h
+CFLAGS         = $(INCLUDE) -fno-strict-aliasing @CFLAGS@
 CPPFLAGS       = @CPPFLAGS@
 LIBPREFIX      = @LIBPREFIX@
 EXEEXT         = @EXEEXT@
 
-LIBTOOL                = @LIBTOOL@
+LIBTOOL                = JLIBTOOL
 ACLOCAL                = @ACLOCAL@
 AUTOCONF       = @AUTOCONF@
 AUTOHEADER     = @AUTOHEADER@
@@ -43,42 +67,71 @@ INSTALL_DATA        = ${INSTALL} -m 644
 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@
+
+PCAP_LIBS      = @PCAP_LIBS@
+PCAP_LDFLAGS    = @PCAP_LDFLAGS@
+
+COLLECTDC_LIBS = @COLLECTDC_LIBS@
+COLLECTDC_LDFLAGS = @COLLECTDC_LDFLAGS@
+
 LCRYPT         = @CRYPTLIB@
-LIBS           = @LIBS@
-LDFLAGS                = @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
-
-LIBLTDL                = @LIBLTDL@
-INCLTDL                = @INCLTDL@
-LTDL_SUBDIRS   = @LTDL_SUBDIRS@
+LIBRADIUS      = $(top_builddir)/src/lib/$(LIBPREFIX)freeradius-radius.la $(TALLOC_LIBS)
 
-USE_SHARED_LIBS        = @USE_SHARED_LIBS@
+USE_SHARED_LIBS = @USE_SHARED_LIBS@
+bm_shared_libs  = @USE_SHARED_LIBS@
 USE_STATIC_LIBS = @USE_STATIC_LIBS@
-STATIC_MODULES = @STATIC_MODULES@
-
-OPENSSL_LIBS   = @OPENSSL_LIBS@
-OPENSSL_INCLUDE = @OPENSSL_INCLUDE@
+bm_static_libs  = @USE_STATIC_LIBS@
 
+STATIC_MODULES = @STATIC_MODULES@
 LIBREADLINE    = @LIBREADLINE@
 
 #
-#  SQL driver defines
+#  Version to use for packaging and other Make related things
 #
-SQL_ODBC_LIBS = @ODBC_LIBS@
-SQL_ODBC_INCLUDE = @ODBC_INCLUDE@
+RADIUSD_VERSION_STRING = @RADIUSD_VERSION_STRING@
 
-RADIUSD_MAJOR_VERSION  = @RADIUSD_MAJOR_VERSION@
-RADIUSD_MINOR_VERSION  = @RADIUSD_MINOR_VERSION@
-RADIUSD_VERSION                = @RADIUSD_VERSION@
+#
+#  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@
 
-MODULES                        = @MODULES@
-HOSTINFO               = @HOSTINFO@
+#
+#  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.
+#
+ifeq "$(WITH_OPENSSL)" "yes"
+CFLAGS         +=  -DWITH_OPENSSL_MD4 -DWITH_OPENSSL_MD5
+endif
+
+OPENSSL_LIBS   = @OPENSSL_LIBS@
 
 ifneq ($(WITH_OPENSSL_MD5),)
 LIBRADIUS_WITH_OPENSSL = 1
@@ -100,10 +153,67 @@ endif
 
 #  http://clang.llvm.org/StaticAnalysis.html
 #
-#  $ make scan | sed "s/.*Run '//;s/'.*//" > scan.sh
-#  $ ./scan.sh
+#  $ make SCAN=/path/to/checker/
+#
+ifneq ($(SCAN),)
+CC             := $(SCAN)/scan-build gcc -DFR_SCAN_BUILD
+LIBTOOL                :=
+endif
+
+#
+#  Portability cruft.  This is for replacing libtroll && libltdl
+#  with gcc and dlopen().
+#
+ifeq "$(USE_SHARED_LIBS)" "yes"
+LINK_MODE.exe  = -export-dynamic
+CFLAGS         += -fPIC
+else
+LINK_MODE.exe  = -static
+endif
+
+ifneq "$(LIBTOOL)" ""
+COMPILE.c      := $(LIBTOOL) --quiet --mode=compile $(CC)
+LINK.lib       := $(LIBTOOL) --quiet --mode=link $(CC) -rpath $(libdir) -o
+LO             := lo
+LA             := la
+else
+COMPILE.c      := $(CC)
+LO             := o
+
+ifeq "$(USE_SHARED_LIBS)" "yes"
+LINK.lib       := $(CC) -shared -o
+LA             := so
+else
+LINK.lib       := $(AR) cru
+LA             := a
+endif
+
+endif
+
+ifeq "$(LA)" "so"
+ifneq "$(findstring Darwin,$(shell uname -a))" ""
+LA             := dylib
+endif
+endif
+
+# Path to clang, setting this enables the 'scan.*' build targets
+# which perform static analysis on various server components.
+ANALYZE.c       := @clang_path@
+
+ifeq "${CC}" "clang"
+    ifeq "${ANALYZE.c}" ""
+        ANALYZE.c := "${CC}"
+    endif
+endif
+
+#
+#  With shared libs, the test binaries are in a different place
+#  AND the method we use to run those binaries changes.
 #
-SCAN_BUILD     = /path/to/checker-0.167/scan-build
-ifeq ($(SCAN),yes)
-CC             := $(SCAN_BUILD) gcc -DFR_SCAN_BUILD
+ifeq "$(USE_SHARED_LIBS)" "yes"
+       TESTBINDIR = ./$(BUILD_DIR)/bin/local
+       TESTBIN    = $(JLIBTOOL) --quiet --mode=execute $(TESTBINDIR)
+else
+       TESTBINDIR = ./$(BUILD_DIR)/bin
+       TESTBIN    = ./$(BUILD_DIR)/bin
 endif