d39d3a448f10d0dc8c49b99fd505d05b05bd1a84
[freeradius.git] / src / main / radiusd.mk
1 SOURCES := acct.c auth.c client.c conffile.c crypt.c exec.c files.c \
2                   listen.c log.c mainconfig.c modules.c modcall.c \
3                   radiusd.c stats.c soh.c \
4                   session.c threads.c util.c valuepair.c version.c  \
5                   xlat.c process.c realms.c evaluate.c vmps.c detail.c
6 ifneq ($(OPENSSL_LIBS),)
7 SOURCES += cb.c tls.c
8 endif
9
10 SRC_CFLAGS      := -DHOSTINFO=\"${HOSTINFO}\"
11 SRC_CFLAGS      += -DRADIUSD_VERSION=\"${RADIUSD_VERSION}\"
12 SRC_CFLAGS      += $(OPENSSL_INCLUDE)
13 TGT_INSTALLDIR  := ${sbindir}
14 TGT_LDLIBS      := $(OPENSSL_LIBS)
15 TGT_LDFLAGS     := $(LIBS) $(LCRYPT)
16
17 TGT_PREREQS     := libfreeradius-radius.a $(filter rlm_%,${ALL_TGTS})
18
19 ifneq "${LIBTOOL}" ""
20 SRC_FLAGS       += -DWITH_DLOPEN
21 else
22 ${DIR}/modules.c:       ${BUILD_DIR}/make/include/lt_dlmodules.c
23
24 # Find the modules
25 ALL_MODULES     := $(patsubst %.a,%,$(filter rlm_%,${ALL_TGTS}))
26 ALL_MODULES     := $(patsubst %.la,%,$(filter rlm_%,${ALL_MODULES}))
27
28 # Filter out ones with additional library dependencies.
29 # For the future, go through ALL modules and add their library dependencies
30 # to the TGT_LDLIBS.
31 ALL_MODULES     := $(filter-out rlm_perl rlm_ldap rlm_pam rlm_krb5 rlm_python,${ALL_MODULES})
32
33 # EAP and SQL require different variable declarations.
34 EAP_MODULES     := $(filter rlm_eap_%,${ALL_MODULES})
35 SQL_MODULES     := $(filter rlm_sql_%,${ALL_MODULES})
36
37 BASE_MODULES    := $(filter-out ${EAP_MODULES} ${SQL_MODULES},${ALL_MODULES})
38
39 #
40 #  Create the intermediate file which links to the modules.
41 #  And have it depend on this Makefile, which creates it.
42 #
43 ${BUILD_DIR}/make/include/lt_dlmodules.c: $(addprefix ${BUILD_DIR}/lib/,$(filter rlm_%,${ALL_TGTS})) $(lastword ${MAKEFILE_LIST})
44         @rm -f $@
45         @for x in ${BASE_MODULES}; do \
46                 echo "extern module_t $$x;" >> $@; \
47         done
48         @for x in ${EAP_MODULES}; do \
49                 echo "extern EAP_TYPE $$x;" >> $@; \
50         done
51         @for x in ${SQL_MODULES}; do \
52                 echo "extern rlm_sql_module_t $$x;" >> $@; \
53         done
54         @echo "static const lt_dlmodule_t lt_dlmodules[] = {" >> $@
55         @for x in ${ALL_MODULES}; do \
56                 echo "{ \"$$x\", &$$x }," >> $@; \
57         done
58         @echo "{ NULL, NULL }" >> $@
59         @echo "};" >> $@
60 endif
61
62 # Libraries can't depend on libraries (oops), so make the binary
63 # depend on the EAP code...
64 ifneq "$(filter rlm_eap_%,${ALL_TGTS})" ""
65 TGT_PREREQS     += libfreeradius-eap.a
66 endif
67
68 TARGET          := radiusd