ADD_CORE_FILES(CMakeLists.txt FindCppUnit.cmake)

SET(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_MODULE_PATH})

FIND_PACKAGE(CppUnit REQUIRED)

MACRO(UNIT_TEST)
  SET(TEST_NAME ${ARGV0})
  UNSET(TEST_SRCS)
  FOREACH(loop_var ${ARGN})
    STRING(REGEX MATCH ".*\\.cpp" TEST_SRC_FILE ${loop_var})
    IF(TEST_SRC_FILE)
      SET(TEST_SRCS ${TEST_SRCS} ${loop_var})
    ENDIF(TEST_SRC_FILE)
  endforeach()
  ADD_EXECUTABLE(${TEST_NAME} ${TEST_SRCS})
  ADD_DEPENDENCIES(runTests ${TEST_NAME})
  TARGET_LINK_LIBRARIES(${TEST_NAME} ${LibTulipCoreName} ${CppUnit_LIBRARIES})
  ADD_TEST(NAME ${TEST_NAME} COMMAND ${TEST_NAME} ${TEST_NAME})
  # In order to run the tests on windows, we need to add the paths of the dll depencencies (cppunit, tulip, gzstream, yajl)
  # in the PATH environment variable
  IF(WIN32)
    IF(MINGW)
      STRING(REGEX MATCH ".*dll\\.a" IMPORT_LIBRARY ${CppUnit_LIBRARIES})
      STRING(REGEX MATCH ".*dll" DLL_LIBRARY ${CppUnit_LIBRARIES})
      IF(IMPORT_LIBRARY)
        GET_DLL_NAME_FROM_IMPORT_LIBRARY(${CppUnit_LIBRARIES} CppUnitDllName)
      ELSEIF(DLL_LIBRARY)
        GET_FILENAME_COMPONENT(CppUnitDllName ${CppUnit_LIBRARIES} NAME)
      ENDIF()
    ELSE(MINGW)
      GET_DLL_NAME_FROM_IMPORT_LIBRARY(${CppUnit_LIBRARIES} CppUnitDllName)
    ENDIF(MINGW)
    IF(CppUnitDllName)
      FIND_EXTERNAL_LIB(${CppUnitDllName} CppUnitDllPath)
      IF(CppUnitDllPath)
        GET_FILE_DIRECTORY(${CppUnitDllPath} CppUnitDllDir)
      ENDIF(CppUnitDllPath)
    ENDIF()
    SET(NEWPATH "${CppUnitDllDir};${QT_BINARY_DIR};${CMAKE_BINARY_DIR}/thirdparty/gzstream/;${CMAKE_BINARY_DIR}/thirdparty/yajl/src;${CMAKE_BINARY_DIR}/thirdparty/quazip;${CMAKE_BINARY_DIR}/thirdparty/ftgl;${CMAKE_BINARY_DIR}/thirdparty/qxt")
    SET(NEWPATH "${NEWPATH};${CMAKE_BINARY_DIR}/library/tulip-core/src;${CMAKE_BINARY_DIR}/library/tulip-ogl/src;${CMAKE_BINARY_DIR}/library/tulip-gui/src;$ENV{PATH}")
    STRING(REPLACE ";" "\\;" NEWPATH "${NEWPATH}")
    SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES ENVIRONMENT "PATH=${NEWPATH}")
  ENDIF(WIN32)
ENDMACRO(UNIT_TEST)

ADD_SUBDIRECTORY(library)

IF(NOT BUILD_CORE_ONLY)
ADD_SUBDIRECTORY(plugins)
ENDIF(NOT BUILD_CORE_ONLY)
