2016-01-18 10:33:34 -06:00
|
|
|
|
2016-01-27 14:50:51 -06:00
|
|
|
|
|
|
|
FUNCTION(GET_GUILE_ENV)
|
|
|
|
SET(_GNC_MODULE_PATH ${CMAKE_BINARY_DIR}/lib:${CMAKE_BINARY_DIR}/lib/gnucash)
|
|
|
|
IF (WIN32)
|
|
|
|
SET(_GNC_MODULE_PATH ${CMAKE_BINARY_DIR}/bin)
|
|
|
|
ENDIF()
|
|
|
|
SET(env "")
|
|
|
|
LIST(APPEND env "GNC_UNINSTALLED=yes")
|
|
|
|
LIST(APPEND env "GNC_BUILDDIR=${CMAKE_BINARY_DIR}")
|
|
|
|
LIST(APPEND env "GUILE_WARN_DEPRECATED=no")
|
|
|
|
LIST(APPEND env "GNC_MODULE_PATH=${_GNC_MODULE_PATH}")
|
|
|
|
IF (APPLE)
|
|
|
|
LIST(APPEND env "DYLD_LIBRARY_PATH=${_GNC_MODULE_PATH}")
|
|
|
|
ENDIF()
|
|
|
|
IF (UNIX)
|
|
|
|
LIST(APPEND env LD_LIBRARY_PATH=${_GNC_MODULE_PATH})
|
|
|
|
ENDIF()
|
|
|
|
IF (NOT WIN32)
|
|
|
|
LIST(APPEND env "GUILE_LOAD_COMPILED_PATH=${CMAKE_BINARY_DIR}/lib/gnucash/scm/ccache/2.0")
|
|
|
|
ENDIF()
|
|
|
|
SET(guile_load_paths "")
|
|
|
|
LIST(APPEND guile_load_paths ${CMAKE_CURRENT_SOURCE_DIR}/mod-foo)
|
|
|
|
LIST(APPEND guile_load_paths ${CMAKE_CURRENT_SOURCE_DIR}/mod-bar)
|
|
|
|
LIST(APPEND guile_load_paths ${CMAKE_CURRENT_SOURCE_DIR}/mod-baz)
|
|
|
|
IF (WIN32)
|
|
|
|
LIST(APPEND guile_load_paths ${CMAKE_BINARY_DIR}/share/gnucash/scm)
|
|
|
|
ENDIF()
|
|
|
|
SET(guile_load_path "${guile_load_paths}")
|
|
|
|
IF (WIN32)
|
|
|
|
STRING(REPLACE ";" "\\\\;" GUILE_LOAD_PATH "${guile_load_path}")
|
|
|
|
ELSE()
|
|
|
|
STRING(REPLACE ";" ":" GUILE_LOAD_PATH "${guile_load_path}")
|
|
|
|
ENDIF()
|
|
|
|
LIST(APPEND env "GUILE_LOAD_PATH=${GUILE_LOAD_PATH}")
|
|
|
|
SET(GUILE_ENV ${env} PARENT_SCOPE)
|
|
|
|
ENDFUNCTION()
|
|
|
|
|
|
|
|
|
2016-01-18 10:33:34 -06:00
|
|
|
FUNCTION(GNC_ADD_TEST _TARGET _SOURCE_FILES TEST_INCLUDE_VAR_NAME TEST_LIBS_VAR_NAME)
|
|
|
|
SET(HAVE_ENV_VARS FALSE)
|
|
|
|
IF (${ARGC} GREATER 4)
|
|
|
|
# Extra arguments are treated as environment variables
|
|
|
|
SET(HAVE_ENV_VARS TRUE)
|
|
|
|
ENDIF()
|
|
|
|
SET(TEST_INCLUDE_DIRS ${${TEST_INCLUDE_VAR_NAME}})
|
|
|
|
SET(TEST_LIBS ${${TEST_LIBS_VAR_NAME}})
|
|
|
|
SET_SOURCE_FILES_PROPERTIES (${_SOURCE_FILES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
|
|
|
|
ADD_EXECUTABLE(${_TARGET} EXCLUDE_FROM_ALL ${_SOURCE_FILES})
|
|
|
|
TARGET_LINK_LIBRARIES(${_TARGET} ${TEST_LIBS})
|
|
|
|
TARGET_INCLUDE_DIRECTORIES(${_TARGET} PRIVATE ${TEST_INCLUDE_DIRS})
|
|
|
|
IF (${HAVE_ENV_VARS})
|
|
|
|
SET(CMAKE_COMMAND_TMP "")
|
|
|
|
IF (${CMAKE_VERSION} VERSION_GREATER 3.1)
|
2016-01-27 14:50:51 -06:00
|
|
|
SET(CMAKE_COMMAND_TMP ${CMAKE_COMMAND} -E env "${ARGN}")
|
2016-01-18 10:33:34 -06:00
|
|
|
ENDIF()
|
|
|
|
ADD_TEST(${_TARGET} ${CMAKE_COMMAND_TMP}
|
|
|
|
${CMAKE_BINARY_DIR}/bin/${_TARGET}
|
|
|
|
)
|
|
|
|
SET_TESTS_PROPERTIES(${_TARGET} PROPERTIES ENVIRONMENT "${ARGN}")
|
|
|
|
ELSE()
|
|
|
|
ADD_TEST(NAME ${_TARGET} COMMAND ${_TARGET})
|
|
|
|
ENDIF()
|
|
|
|
ADD_DEPENDENCIES(check ${_TARGET})
|
|
|
|
ENDFUNCTION()
|
|
|
|
|
|
|
|
FUNCTION(GNC_ADD_TEST_WITH_GUILE _TARGET _SOURCE_FILES TEST_INCLUDE_VAR_NAME TEST_LIBS_VAR_NAME)
|
2016-01-27 14:50:51 -06:00
|
|
|
GET_GUILE_ENV()
|
2016-01-18 10:33:34 -06:00
|
|
|
GNC_ADD_TEST(${_TARGET} "${_SOURCE_FILES}" "${TEST_INCLUDE_VAR_NAME}" "${TEST_LIBS_VAR_NAME}"
|
2016-01-27 14:50:51 -06:00
|
|
|
"${GUILE_ENV};${ARGN}"
|
2016-01-18 10:33:34 -06:00
|
|
|
)
|
|
|
|
ENDFUNCTION()
|
|
|
|
|
|
|
|
|
|
|
|
FUNCTION(GNC_ADD_SCHEME_TEST _TARGET _SOURCE_FILE)
|
|
|
|
SET(CMAKE_COMMAND_TMP "")
|
|
|
|
IF (${CMAKE_VERSION} VERSION_GREATER 3.1)
|
|
|
|
SET(CMAKE_COMMAND_TMP ${CMAKE_COMMAND} -E env)
|
|
|
|
ENDIF()
|
|
|
|
ADD_TEST(${_TARGET} ${CMAKE_COMMAND_TMP}
|
|
|
|
${GUILE_EXECUTABLE} --debug -l ${CMAKE_CURRENT_SOURCE_DIR}/${_SOURCE_FILE} -c "(exit (run-test))"
|
|
|
|
)
|
2016-01-27 14:50:51 -06:00
|
|
|
GET_GUILE_ENV()
|
|
|
|
SET_TESTS_PROPERTIES(${_TARGET} PROPERTIES ENVIRONMENT "${GUILE_ENV};${ARGN}")
|
2016-01-18 10:33:34 -06:00
|
|
|
ENDFUNCTION()
|
2016-07-01 15:26:17 -05:00
|
|
|
|
|
|
|
FUNCTION(GNC_GTEST_CONFIGURE)
|
2017-02-02 10:20:39 -06:00
|
|
|
MESSAGE(STATUS "Checking for GTEST")
|
|
|
|
IF (NOT DEFINED ${GTEST_ROOT})
|
|
|
|
SET(GTEST_ROOT $ENV{GTEST_ROOT})
|
|
|
|
ENDIF()
|
|
|
|
IF (NOT DEFINED ${GMOCK_ROOT})
|
|
|
|
SET(GMOCK_ROOT $ENV{GMOCK_ROOT})
|
|
|
|
ENDIF()
|
|
|
|
FIND_PATH(GTEST_INCLUDE_DIR gtest/gtest.h
|
|
|
|
PATHS ${GTEST_ROOT}/include ${GMOCK_ROOT}/gtest/include /usr/include)
|
|
|
|
FIND_PATH(GTEST_SRC_DIR src/gtest-all.cc
|
|
|
|
PATHS ${GTEST_ROOT} ${GMOCK_ROOT}/gtest /usr/src/gtest)
|
|
|
|
FIND_LIBRARY(GTEST_SHARED_LIB gtest)
|
|
|
|
FIND_LIBRARY(GTEST_MAIN_LIB gtest_main)
|
|
|
|
IF ((GTEST_SHARED_LIB OR GTEST_SRC_DIR) AND GTEST_INCLUDE_DIR)
|
|
|
|
SET(THREADS_PREFER_PTHREAD_FLAG ON)
|
|
|
|
FIND_PACKAGE(Threads REQUIRED)
|
|
|
|
SET(GTEST_FOUND YES CACHE INTERNAL "Found GTest")
|
|
|
|
IF(GTEST_SHARED_LIB)
|
|
|
|
SET(GTEST_LIB "${GTEST_SHARED_LIB};${GTEST_MAIN_LIB}" PARENT_SCOPE)
|
|
|
|
UNSET(GTEST_SRC_DIR CACHE)
|
|
|
|
ELSE()
|
|
|
|
SET(GTEST_SRC "${GTEST_SRC_DIR}/src/gtest_main.cc" PARENT_SCOPE)
|
|
|
|
SET(GTEST_LIB "${CMAKE_BINARY_DIR}/src/test-core/libgtest.a" PARENT_SCOPE)
|
2016-07-01 15:26:17 -05:00
|
|
|
ENDIF()
|
2017-02-02 10:20:39 -06:00
|
|
|
ELSE()
|
|
|
|
MESSAGE(FATAL_ERROR "GTEST not found. Please install it or set GTEST_ROOT or GMOCK_ROOT")
|
|
|
|
ENDIF()
|
|
|
|
|
|
|
|
MESSAGE(STATUS "Checking for GMOCK")
|
|
|
|
FIND_PATH(GMOCK_INCLUDE_DIR gmock/gmock.h
|
|
|
|
PATHS ${GMOCK_ROOT}/include /usr/include)
|
2017-02-08 10:10:35 -06:00
|
|
|
FIND_PATH(GMOCK_SRC_DIR src/gmock-all.cc
|
|
|
|
PATHS ${GMOCK_ROOT} /usr/src/gmock)
|
|
|
|
if (GMOCK_SRC_DIR)
|
|
|
|
SET(GMOCK_MAIN_SRC_DIR "${GMOCK_SRC_DIR}/src")
|
|
|
|
else()
|
2017-02-06 03:37:39 -06:00
|
|
|
FIND_PATH(GMOCK_SRC_DIR gmock-all.cc
|
|
|
|
PATHS ${GMOCK_ROOT} /usr/src/gmock)
|
2017-02-08 10:10:35 -06:00
|
|
|
if (GMOCK_SRC_DIR)
|
|
|
|
SET(GMOCK_MAIN_SRC_DIR "${GMOCK_SRC_DIR}")
|
|
|
|
endif()
|
2017-02-06 03:37:39 -06:00
|
|
|
endif()
|
2017-02-02 10:20:39 -06:00
|
|
|
if (GMOCK_INCLUDE_DIR AND GMOCK_SRC_DIR)
|
|
|
|
SET(GMOCK_FOUND YES PARENT_SCOPE)
|
2017-02-08 10:10:35 -06:00
|
|
|
SET(GMOCK_SRC "${GMOCK_MAIN_SRC_DIR}/gmock-all.cc" PARENT_SCOPE)
|
2017-02-02 10:20:39 -06:00
|
|
|
SET(GMOCK_LIB "${CMAKE_BINARY_DIR}/src/test-core/libgmock.a" PARENT_SCOPE)
|
|
|
|
ELSE()
|
|
|
|
MESSAGE(FATAL_ERROR "GMOCK not found. Please install it or set GMOCK_ROOT")
|
2016-07-01 15:26:17 -05:00
|
|
|
ENDIF()
|
|
|
|
ENDFUNCTION()
|