view cmake/function/MalikaniaDefineTest.cmake @ 215:268b66d72ec0 default tip @

misc: remove Javascript bindings, closes #2402
author David Demelier <markand@malikania.fr>
date Thu, 10 Oct 2019 13:52:57 +0200
parents 10687519f46e
children
line wrap: on
line source

#
# MalikaniaDefineTest.cmake -- CMake build system for malikania
#
# Copyright (c) 2013-2018 David Demelier <markand@malikania.fr>
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#

#
# malikania_create_test
# ---------------------
#
# malikania_create_test(
#       NAME            Test name (must be lowercase)
#       SOURCES         Test sources files
#       LIBRARIES       (Optional) Libraries to link to
#       FLAGS           (Optional) Add list of compile definitions
# )
#
# This will generate a target named test-<name> where name is the parameter
# NAME.
#
# The variables CMAKE_SOURCE_DIR, CMAKE_BINARY_DIR, CMAKE_CURRENT_SOURCE_DIR
# and CMAKE_CURRENT_BINARY_DIR are automatically set.
#

function(malikania_create_test)
	set(singleArgs NAME)
	set(multiArgs FLAGS LIBRARIES SOURCES RESOURCES)

	cmake_parse_arguments(TEST "" "${singleArgs}" "${multiArgs}" ${ARGN})

	if (NOT TEST_NAME)
		message(FATAL_ERROR "Missing NAME parameter")
	endif ()
	if (NOT TEST_SOURCES)
		message(FATAL_ERROR "Missing SOURCES parameter")
	endif ()

	add_executable(test-${TEST_NAME} ${TEST_SOURCES})
	target_compile_definitions(
		test-${TEST_NAME}
		PRIVATE
			BOOST_TEST_DYN_LINK
			CMAKE_CURRENT_BINARY_DIR="${CMAKE_CURRENT_BINARY_DIR}"
			CMAKE_CURRENT_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}"
			CMAKE_BINARY_DIR="${CMAKE_BINARY_DIR}"
			CMAKE_SOURCE_DIR="${CMAKE_SOURCE_DIR}"
			${TEST_FLAGS}
	)

	set_target_properties(test-${TEST_NAME} PROPERTIES FOLDER "tests")

	add_test(
		NAME ${TEST_NAME}
		COMMAND $<TARGET_FILE:test-${TEST_NAME}>
	)

	target_link_libraries(
		test-${TEST_NAME}
		${TEST_LIBRARIES}
		Boost::boost
		Boost::dynamic_linking
		Boost::disable_autolinking
		Boost::unit_test_framework
	)
endfunction()