MACRO( ADD_MOBILE_TEST _testName ) 
	ADD_EXECUTABLE( ${_testName} mobiles/${_testName}/test.c )
	TARGET_LINK_LIBRARIES( ${_testName} ${ARGN} )
	ADD_TEST( ${_testName} ${CMAKE_CURRENT_BINARY_DIR}/${_testName} ${CMAKE_CURRENT_SOURCE_DIR}/mobiles/${_testName} )
ENDMACRO( ADD_MOBILE_TEST )

IF( ENABLE_UNIT_TEST )
	LINK_DIRECTORIES( ${GLIB2_LIBRARY_DIRS} ${LIBXML2_LIBRARY_DIRS} ${OPENOBEX_LIBRARY_DIRS} ${LIBWBXML2_LIBRARY_DIRS} ${LIBSOUP2_LIBRARY_DIRS} ${BLUEZ_LIBRARY_DIRS} ${CHECK_LIBRARY_DIRS} )
	if(COMMAND cmake_policy)
		cmake_policy(SET CMP0003 NEW)
	endif(COMMAND cmake_policy)
	# create support library
	ADD_LIBRARY( support STATIC support.c )
	TARGET_LINK_LIBRARIES( support syncml ${CHECK_LIBRARIES} )
	# include Testing Macro
	INCLUDE( Testing )
	# include necessary headers
	INCLUDE_DIRECTORIES( ${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${GLIB2_INCLUDE_DIRS} ${LIBXML2_INCLUDE_DIRS} ${LIBWBXML2_INCLUDE_DIRS} )
	# add tests
	SET( TEST_TARGET_LIBRARIES support )
	ADD_CHECK_TEST( error check_error.c ${TEST_TARGET_LIBRARIES} )
	ADD_CHECK_TEST( elements check_elements.c ${TEST_TARGET_LIBRARIES} )
	ADD_CHECK_TEST( xml-fix-broken-item-data check_xml_fix_broken_item_data.c ${TEST_TARGET_LIBRARIES} )
	ADD_CHECK_TEST( xmlparser check_xml_parser.c ${TEST_TARGET_LIBRARIES} )
	ADD_CHECK_TEST( xmlassembler check_xml_assembler.c ${TEST_TARGET_LIBRARIES} )
	ADD_CHECK_TEST( session check_session.c ${TEST_TARGET_LIBRARIES} )
	ADD_CHECK_TEST( md5 check_md5.c ${TEST_TARGET_LIBRARIES} )
	ADD_CHECK_TEST( datasync check_ds.c ${TEST_TARGET_LIBRARIES} )
	ADD_CHECK_TEST( san check_san.c ${TEST_TARGET_LIBRARIES} )
	ADD_CHECK_TEST( devinf check_devinf.c ${TEST_TARGET_LIBRARIES} )
	ADD_CHECK_TEST( sync check_sync.c ${TEST_TARGET_LIBRARIES} )

	# dependent tests

	IF( ENABLE_OBEX AND ENABLE_OPENOBEX_TCP )
		ADD_CHECK_TEST( obex check_obex.c ${TEST_TARGET_LIBRARIES} )
	ENDIF( ENABLE_OBEX AND ENABLE_OPENOBEX_TCP )

	IF ( ENABLE_HTTP )
		ADD_CHECK_TEST( http check_http.c ${TEST_TARGET_LIBRARIES} )
		ADD_CHECK_TEST( manager check_manager.c ${TEST_TARGET_LIBRARIES} )
	ENDIF ( ENABLE_HTTP )

	IF ( ENABLE_WBXML )
		ADD_CHECK_TEST( wbxmlparser check_wbxml_parser.c ${TEST_TARGET_LIBRARIES} )
		ADD_CHECK_TEST( wbxmlassembler check_wbxml_assembler.c ${TEST_TARGET_LIBRARIES} )
	ENDIF( ENABLE_WBXML )

	IF ( ENABLE_OBEX AND ENABLE_OPENOBEX_TCP AND ENABLE_WBXML AND ENABLE_GLIB2_GREGEX )
		# mobile tests
		ADD_MOBILE_TEST( nokia_e65_vcard ${TEST_TARGET_LIBRARIES} )
		ADD_MOBILE_TEST( nokia_e65_vcard_vcal ${TEST_TARGET_LIBRARIES} )
		ADD_MOBILE_TEST( nokia_6230_vcard ${TEST_TARGET_LIBRARIES} )
		ADD_MOBILE_TEST( nokia_6230_vcal ${TEST_TARGET_LIBRARIES} )
		ADD_MOBILE_TEST( nokia_9500_vcard ${TEST_TARGET_LIBRARIES} )
		ADD_MOBILE_TEST( nokia_9500_vcal ${TEST_TARGET_LIBRARIES} )
		ADD_MOBILE_TEST( nokia_9500_vcard_vcal ${TEST_TARGET_LIBRARIES} )
	ENDIF ( ENABLE_OBEX AND ENABLE_OPENOBEX_TCP AND ENABLE_WBXML AND ENABLE_GLIB2_GREGEX )

	IF ( ENABLE_OPENOBEX_TCP OR ENABLE_HTTP )
		ADD_CHECK_TEST( ds_api check_data_sync_api.c ${TEST_TARGET_LIBRARIES} )
	ENDIF ( ENABLE_OPENOBEX_TCP OR ENABLE_HTTP )

	# tests of deprecated stuff
	# such tests produce compiler warnings

	IF ( ENABLE_BASE64_TEST )
		ADD_CHECK_TEST( base64 check_base64.c ${TEST_TARGET_LIBRARIES} )
	ENDIF ( ENABLE_BASE64_TEST )

ENDIF( ENABLE_UNIT_TEST )
