Commit dae1e949 authored by Sebastien Decugis's avatar Sebastien Decugis
Browse files

Added the ALL_EXTENSIONS build option; and simplified some CMakeFile directives

parent 6e13aaca
......@@ -5,22 +5,6 @@
set(WITH_COVERAGE TRUE)
set(CTEST_BUILD_NAME "All extensions")
set(CTEST_BUILD_OPTIONS "${CTEST_BUILD_OPTIONS} -DBUILD_ACL_WL:BOOL=ON")
set(CTEST_BUILD_OPTIONS "${CTEST_BUILD_OPTIONS} -DBUILD_APP_ACCT:BOOL=ON -DTEST_APP_ACCT:BOOL=ON -DTEST_APP_ACCT_CONNINFO:STRING=user=test\\ dbname=test")
set(CTEST_BUILD_OPTIONS "${CTEST_BUILD_OPTIONS} -DBUILD_APP_DIAMEAP:BOOL=ON -DBUILD_EAP_IDENTITY:BOOL=ON -DBUILD_EAP_MD5:BOOL=ON -DBUILD_EAP_TLS:BOOL=ON")
set(CTEST_BUILD_OPTIONS "${CTEST_BUILD_OPTIONS} -DBUILD_APP_RADGW:BOOL=ON")
set(CTEST_BUILD_OPTIONS "${CTEST_BUILD_OPTIONS} -DBUILD_APP_SIP:BOOL=ON")
set(CTEST_BUILD_OPTIONS "${CTEST_BUILD_OPTIONS} -DBUILD_DBG_MONITOR:BOOL=ON")
set(CTEST_BUILD_OPTIONS "${CTEST_BUILD_OPTIONS} -DBUILD_DBG_RT:BOOL=ON")
set(CTEST_BUILD_OPTIONS "${CTEST_BUILD_OPTIONS} -DBUILD_DICT_EAP:BOOL=ON")
set(CTEST_BUILD_OPTIONS "${CTEST_BUILD_OPTIONS} -DBUILD_DICT_NASREQ:BOOL=ON")
set(CTEST_BUILD_OPTIONS "${CTEST_BUILD_OPTIONS} -DBUILD_DICT_SIP:BOOL=ON")
set(CTEST_BUILD_OPTIONS "${CTEST_BUILD_OPTIONS} -DBUILD_RGWX_ACCT:BOOL=ON")
set(CTEST_BUILD_OPTIONS "${CTEST_BUILD_OPTIONS} -DBUILD_RGWX_AUTH:BOOL=ON")
set(CTEST_BUILD_OPTIONS "${CTEST_BUILD_OPTIONS} -DBUILD_RGWX_DEBUG:BOOL=ON")
set(CTEST_BUILD_OPTIONS "${CTEST_BUILD_OPTIONS} -DBUILD_RGWX_ECHODROP:BOOL=ON")
set(CTEST_BUILD_OPTIONS "${CTEST_BUILD_OPTIONS} -DBUILD_RGWX_SAMPLE:BOOL=ON")
set(CTEST_BUILD_OPTIONS "${CTEST_BUILD_OPTIONS} -DBUILD_RT_DEFAULT:BOOL=ON")
set(CTEST_BUILD_OPTIONS "${CTEST_BUILD_OPTIONS} -DBUILD_TEST_APP:BOOL=ON")
set(CTEST_BUILD_OPTIONS "${CTEST_BUILD_OPTIONS} -DBUILD_TEST_SIP:BOOL=ON")
set(CTEST_BUILD_OPTIONS "${CTEST_BUILD_OPTIONS} -DALL_EXTENSIONS:BOOL=ON")
set(CTEST_BUILD_OPTIONS "${CTEST_BUILD_OPTIONS} -DTEST_APP_ACCT_CONNINFO:STRING=user=test\\ dbname=test")
......@@ -12,6 +12,20 @@ MACRO(FD_ADD_EXTENSION EXTNAME)
SET_TARGET_PROPERTIES(${EXTNAME} PROPERTIES SUFFIX ".fdx" )
ENDMACRO(FD_ADD_EXTENSION)
# Use the macro FD_EXTENSION_SUBDIR(extmacroname subdir descr default) to
# add a new extension subdirectory.
MACRO(FD_EXTENSION_SUBDIR EXTSUBDIR EXTDESCR EXTDEFAULT)
STRING(TOUPPER ${EXTSUBDIR} EXTMACRONAME)
IF (NOT ALL_EXTENSIONS)
OPTION(BUILD_${EXTMACRONAME} "Build ${EXTSUBDIR}.fdx? (${EXTDESCR})" ${EXTDEFAULT})
ENDIF (NOT ALL_EXTENSIONS)
IF (BUILD_${EXTMACRONAME} OR ALL_EXTENSIONS)
SUBDIRS(${EXTSUBDIR})
ENDIF (BUILD_${EXTMACRONAME} OR ALL_EXTENSIONS)
ENDMACRO(FD_EXTENSION_SUBDIR)
OPTION(ALL_EXTENSIONS "Build ALL available extensions? (disable to select individual components)" OFF)
# The extensions include the headers of freeDiameter that contains gnutls objects
FIND_PACKAGE(GnuTLS REQUIRED)
INCLUDE_DIRECTORIES(${GNUTLS_INCLUDE_DIR})
......@@ -22,114 +36,53 @@ Endif ( NOT GCRYPT_INCLUDE_DIR )
MARK_AS_ADVANCED(GCRYPT_INCLUDE_DIR)
INCLUDE_DIRECTORIES(${GCRYPT_INCLUDE_DIR})
###########################
# Extensions section
####
# Diameter applications dictionary
OPTION(BUILD_DICT_NASREQ "Build NASREQ (RFC4005) Dictionary definitions?" ON)
IF (BUILD_DICT_NASREQ)
SUBDIRS(dict_nasreq)
ENDIF (BUILD_DICT_NASREQ)
OPTION(BUILD_DICT_EAP "Build Diameter EAP (RFC4072) Dictionary definitions?" ON)
IF (BUILD_DICT_EAP)
SUBDIRS(dict_eap)
ENDIF (BUILD_DICT_EAP)
OPTION(BUILD_DICT_SIP "Build Diameter SIP (RFC4740) Dictionary definitions?" ON)
IF (BUILD_DICT_SIP)
SUBDIRS(dict_sip)
ENDIF (BUILD_DICT_SIP)
# Diameter applications dictionaries
FD_EXTENSION_SUBDIR(dict_nasreq "NASREQ (RFC4005) Dictionary definitions?" ON)
FD_EXTENSION_SUBDIR(dict_eap "Diameter EAP (RFC4072) Dictionary definitions?" ON)
FD_EXTENSION_SUBDIR(dict_sip "Diameter SIP (RFC4740) Dictionary definitions?" ON)
####
# Diameter applications
OPTION(BUILD_APP_RADGW "Build app_radgw? (one-way RADIUS/Diameter gateway - RADIUS NAS <-> Diameter server)" OFF)
IF (BUILD_APP_RADGW)
SUBDIRS(app_radgw)
ENDIF (BUILD_APP_RADGW)
OPTION(BUILD_APP_ACCT "Build app_acct? (simple accounting application that stores accounting records in flat database)" OFF)
IF (BUILD_APP_ACCT)
SUBDIRS(app_acct)
ENDIF (BUILD_APP_ACCT)
FD_EXTENSION_SUBDIR(app_acct "Simple accounting application that stores accounting records in flat database" OFF)
FD_EXTENSION_SUBDIR(app_diameap "Diameter EAP Application server (RFC 4072)" OFF)
FD_EXTENSION_SUBDIR(app_radgw "RADIUS/Diameter gateway translation - RADIUS client to Diameter server" OFF)
FD_EXTENSION_SUBDIR(app_sip "Diameter SIP Authentication and Authorization server (RFC 4740)" OFF)
OPTION(BUILD_APP_SIP "Build app_sip? (Authentication and Authorization for Diameter SIP RFC4740)" OFF)
IF (BUILD_APP_SIP)
SUBDIRS(app_sip)
ENDIF (BUILD_APP_SIP)
OPTION(BUILD_APP_DIAMEAP "Build app_diameap? (Diameter EAP Application - RFC 4072 )" OFF)
IF (BUILD_APP_DIAMEAP)
SUBDIRS(app_diameap)
ENDIF (BUILD_APP_DIAMEAP)
####
# Routing extensions
OPTION(BUILD_RT_DEFAULT "Build rt_default? (Configurable routing rules for freeDiameter)" ON)
IF (BUILD_RT_DEFAULT)
SUBDIRS(rt_default)
ENDIF (BUILD_RT_DEFAULT)
OPTION(BUILD_RT_EREG "Build rt_ereg? (Configurable routing based on regexp matching of AVP values)" OFF)
IF (BUILD_RT_EREG)
SUBDIRS(rt_ereg)
ENDIF (BUILD_RT_EREG)
FD_EXTENSION_SUBDIR(rt_default "Configurable routing rules for freeDiameter" ON)
FD_EXTENSION_SUBDIR(rt_ereg "Configurable routing based on regexp matching of AVP values" OFF)
####
# Peers security extensions
OPTION(BUILD_ACL_WL "Build acl_wl? (White-list of remote connecting peers)" ON)
IF (BUILD_ACL_WL)
SUBDIRS(acl_wl)
ENDIF (BUILD_ACL_WL)
FD_EXTENSION_SUBDIR(acl_wl "White-list based authorization of incoming connections" ON)
####
# Debug & test extensions
OPTION(BUILD_DBG_MONITOR "Build dbg_monitor.fdx? (display periodical debug information on the console)" OFF)
IF (BUILD_DBG_MONITOR)
SUBDIRS(dbg_monitor)
ENDIF (BUILD_DBG_MONITOR)
OPTION(BUILD_DBG_RT "Build dbg_rt.fdx? (Routing extension for debugging the routing module)" OFF)
IF (BUILD_DBG_RT)
SUBDIRS(dbg_rt)
ENDIF (BUILD_DBG_RT)
OPTION(BUILD_TEST_APP "Build test_app.fdx? (Testing application to send dummy message to another peer, for testing purpose only)" OFF)
IF (BUILD_TEST_APP)
SUBDIRS(test_app)
ENDIF (BUILD_TEST_APP)
OPTION(BUILD_TEST_SIP "Build test_sip.fdx? (Testing application to simulate Diameter-SIP client (RFC4740), for testing purpose only)" OFF)
IF (BUILD_TEST_SIP)
SUBDIRS(test_sip)
ENDIF (BUILD_TEST_SIP)
FD_EXTENSION_SUBDIR(dbg_monitor "Outputs periodical status information" OFF)
FD_EXTENSION_SUBDIR(dbg_rt "Routing extension for debugging the routing module" OFF)
FD_EXTENSION_SUBDIR(test_app "Testing application to send dummy message to another peer, like a Diameter 'ping'" OFF)
FD_EXTENSION_SUBDIR(test_sip "Testing application to simulate Diameter-SIP client (RFC4740)" OFF)
# The following extension have very little use except for specific tests, so we disable them except in Debug configurations.
IF (CMAKE_BUILD_TYPE MATCHES "Debug")
OPTION(BUILD_SAMPLE "Build sample.fdx? (Simple extension to demonstrate extension mechanism, for developpers only)" OFF)
IF (BUILD_SAMPLE)
SUBDIRS(_sample)
ENDIF (BUILD_SAMPLE)
OPTION(BUILD_TEST_ACCT "Build test_acct.fdx? (Receive Accounting-Requests and display the data, but no storage)" OFF)
IF (BUILD_TEST_ACCT)
SUBDIRS(test_acct)
ENDIF (BUILD_TEST_ACCT)
OPTION(BUILD_TEST_RT_ANY "Build test_rt_any.fdx? (Routing extension randomly sending message to any peer available, for testing purpose only)" OFF)
IF (BUILD_TEST_RT_ANY)
SUBDIRS(test_rt_any)
ENDIF (BUILD_TEST_RT_ANY)
FD_EXTENSION_SUBDIR(_sample "Simple extension to demonstrate extension mechanism, for developpers" OFF)
FD_EXTENSION_SUBDIR(test_acct "Receive Accounting-Requests and display the data, but no storage" OFF)
FD_EXTENSION_SUBDIR(test_rt_any "Routing extension randomly sending message to any peer available, for testing purpose" OFF)
ENDIF (CMAKE_BUILD_TYPE MATCHES "Debug")
......@@ -9,23 +9,26 @@ MACRO(EAP_ADD_METHOD METHNAME)
COMPONENT freeDiameter-eap-server)
ENDMACRO(EAP_ADD_METHOD)
# Use the macro FD_EAP_PLUGIN(extmacroname subdir descr default) to
# add a new extension subdirectory.
MACRO(FD_EAP_PLUGIN EXTSUBDIR EXTDESCR EXTDEFAULT)
STRING(TOUPPER ${EXTSUBDIR} EXTMACRONAME)
IF (NOT ALL_EXTENSIONS)
OPTION(BUILD_${EXTMACRONAME} ${EXTDESCR} ${EXTDEFAULT})
ENDIF (NOT ALL_EXTENSIONS)
IF (BUILD_${EXTMACRONAME} OR ALL_EXTENSIONS)
ADD_SUBDIRECTORY(${EXTSUBDIR})
ENDIF (BUILD_${EXTMACRONAME} OR ALL_EXTENSIONS)
ENDMACRO(FD_EAP_PLUGIN)
###########################
# EAP Methods Plugins Section
# EAP Identity plugin
OPTION(BUILD_EAP_IDENTITY "Build EAP Identity Plugin " ON)
IF (BUILD_EAP_IDENTITY)
ADD_SUBDIRECTORY(eap_identity)
ENDIF (BUILD_EAP_IDENTITY)
FD_EAP_PLUGIN(eap_identity "Build EAP Identity Plugin " ON)
# EAP MD5 plugin
OPTION(BUILD_EAP_MD5 "Build EAP-MD5 Plugin " OFF)
IF (BUILD_EAP_MD5)
ADD_SUBDIRECTORY(eap_md5)
ENDIF (BUILD_EAP_MD5)
FD_EAP_PLUGIN(eap_md5 "Build EAP-MD5 Plugin " OFF)
# EAP TLS plugin
OPTION(BUILD_EAP_TLS "Build EAP-TLS Plugin " OFF)
IF (BUILD_EAP_TLS)
ADD_SUBDIRECTORY(eap_tls)
ENDIF (BUILD_EAP_TLS)
FD_EAP_PLUGIN(eap_tls "Build EAP-TLS Plugin " OFF)
......@@ -59,50 +59,63 @@ MACRO(RGWX_ADD_PLUGIN PLGNAME)
COMPONENT freeDiameter-radius-gateway)
ENDMACRO(RGWX_ADD_PLUGIN)
# Ask unless ALL_EXTENSIONS is set:
MACRO(FD_OPTION_PLUGIN PLGVAR DESCR DEFLT)
IF (NOT ALL_EXTENSIONS)
OPTION(BUILD_${PLGVAR} ${DESCR} ${DEFLT})
ENDIF (NOT ALL_EXTENSIONS)
IF (BUILD_${PLGVAR} OR ALL_EXTENSIONS)
SET(${PLGVAR} TRUE)
ELSE (BUILD_${PLGVAR} OR ALL_EXTENSIONS)
SET(${PLGVAR} FALSE)
ENDIF (BUILD_${PLGVAR} OR ALL_EXTENSIONS)
ENDMACRO(FD_OPTION_PLUGIN PLGVAR DESCR DEFLT)
### Debug
# Example of plugin:
OPTION(BUILD_RGWX_SAMPLE "Build sample plugin? (for developers only)" OFF)
IF (BUILD_RGWX_SAMPLE)
FD_OPTION_PLUGIN(RGWX_SAMPLE "Build sample plugin? (for developers only)" OFF)
IF (RGWX_SAMPLE)
RGWX_ADD_PLUGIN(sample ${RG_COMMON_HEADER} rgwx_sample.c)
ENDIF (BUILD_RGWX_SAMPLE)
ENDIF (RGWX_SAMPLE)
# A plugin for debug: dumps RADIUS and Diameter messages state at the time the plugin is called.
OPTION(BUILD_RGWX_DEBUG "Build debug plugin? (display status of RADIUS and Diameter messages)" ON)
IF (BUILD_RGWX_DEBUG)
FD_OPTION_PLUGIN(RGWX_DEBUG "Build debug plugin? (display status of RADIUS and Diameter messages)" ON)
IF (RGWX_DEBUG)
RGWX_ADD_PLUGIN(debug ${RG_COMMON_HEADER} rgwx_debug.c)
ENDIF (BUILD_RGWX_DEBUG)
ENDIF (RGWX_DEBUG)
### Authentication, Authorization messages translation.
OPTION(BUILD_RGWX_AUTH "Build Authentication & Authorization RADIUS translation plugin? (RFC2865, RFC3579)" ON)
IF (BUILD_RGWX_AUTH)
FD_OPTION_PLUGIN(RGWX_AUTH "Build Authentication & Authorization RADIUS translation plugin? (RFC2865, RFC3579)" ON)
IF (RGWX_AUTH)
RGWX_ADD_PLUGIN(auth ${RG_COMMON_HEADER} rgwx_auth.c)
ENDIF (BUILD_RGWX_AUTH)
ENDIF (RGWX_AUTH)
### SIP Authentication, Authorization messages translation.
OPTION(BUILD_RGWX_SIP "Build SIP RADIUS translation plugin? (RFC4740 or RFC5090)" OFF)
IF (BUILD_RGWX_SIP)
FD_OPTION_PLUGIN(RGWX_SIP "Build SIP RADIUS translation plugin? (RFC4740 or RFC5090)" OFF)
IF (RGWX_SIP)
RGWX_ADD_PLUGIN(sip ${RG_COMMON_HEADER} rgwx_sip.c)
ENDIF (BUILD_RGWX_SIP)
ENDIF (RGWX_SIP)
### Accounting messages translation.
OPTION(BUILD_RGWX_ACCT "Build Accounting RADIUS translation plugin? (RFC2866)" ON)
IF (BUILD_RGWX_ACCT)
FD_OPTION_PLUGIN(RGWX_ACCT "Build Accounting RADIUS translation plugin? (RFC2866)" ON)
IF (RGWX_ACCT)
RGWX_ADD_PLUGIN(acct ${RG_COMMON_HEADER} rgwx_acct.c)
ENDIF (BUILD_RGWX_ACCT)
ENDIF (RGWX_ACCT)
### Generic plugin to handle some attributes (either delete them or simply echo them in the answer)
OPTION(BUILD_RGWX_ECHODROP "Build 'echo/drop' plugin? (drop specific RADIUS attributes or echo them in RADIUS answer)" ON)
IF (BUILD_RGWX_ECHODROP)
FD_OPTION_PLUGIN(RGWX_ECHODROP "Build 'echo/drop' plugin? (drop specific RADIUS attributes or echo them in RADIUS answer)" ON)
IF (RGWX_ECHODROP)
BISON_FILE(rgwx_echodrop.y)
FLEX_FILE(rgwx_echodrop.l)
SET_SOURCE_FILES_PROPERTIES(lex.rgwx_echodrop.c rgwx_echodrop.tab.c PROPERTIES COMPILE_FLAGS "-I ${CMAKE_CURRENT_SOURCE_DIR}")
RGWX_ADD_PLUGIN(echodrop ${RG_COMMON_HEADER} rgwx_echodrop.h rgwx_echodrop.c lex.rgwx_echodrop.c rgwx_echodrop.tab.c rgwx_echodrop.tab.h )
ENDIF (BUILD_RGWX_ECHODROP)
ENDIF (RGWX_ECHODROP)
####
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment