view extensions/CMakeLists.txt @ 514:179ef7de53de

New extension: load-balancing based on numerical user-name AVP values
author Sebastien Decugis <sdecugis@nict.go.jp>
date Wed, 25 Aug 2010 19:00:25 +0900
parents d68f27e7e814
children bc25e91e1e3c
line wrap: on
line source

PROJECT("freeDiameter extensions" C)

# We want all resulting objects in the same folder
SET(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR})

# Use the macro FD_ADD_EXTENSION(name files...) to create an extension
# It is equivalent to add_library with the appropriate parameters
# and naming conventions (.fdx : FreeDiameter eXtension)
MACRO(FD_ADD_EXTENSION EXTNAME)
  ADD_LIBRARY(${EXTNAME} MODULE ${ARGN})
  SET_TARGET_PROPERTIES(${EXTNAME} PROPERTIES PREFIX "" )
  SET_TARGET_PROPERTIES(${EXTNAME} PROPERTIES SUFFIX ".fdx" )
ENDMACRO(FD_ADD_EXTENSION)

# The extensions include the headers of freeDiameter that contains gnutls objects
FIND_PACKAGE(GnuTLS REQUIRED)
INCLUDE_DIRECTORIES(${GNUTLS_INCLUDE_DIR})
find_path(GCRYPT_INCLUDE_DIR NAMES gcrypt.h)
If ( NOT GCRYPT_INCLUDE_DIR )
	MESSAGE(SEND_ERROR "Unable to find gcrypt.h, please install libgcrypt-dev or equivalent")
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

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)

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_UN_NUMBER "Build rt_un_number? (Load-balancing based on numerical User-Name AVP value)" OFF)
	IF (BUILD_RT_UN_NUMBER)
	   SUBDIRS(rt_un_number)
	ENDIF (BUILD_RT_UN_NUMBER)


####
# 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)



####
# 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)
 	
# 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)
ENDIF (CMAKE_BUILD_TYPE MATCHES "Debug")

"Welcome to our mercurial repository"