collector_create (PROJECT_LIB_TESTS "${CMAKE_CURRENT_SOURCE_DIR}")

add_subdirectory (system)

collect (PROJECT_LIB_HEADERS metal-test.h)

collect (PROJECT_LIB_TESTS version.c)
collect (PROJECT_LIB_TESTS metal-test.c)

collector_list  (_list PROJECT_INC_DIRS)
include_directories (${_list} ${CMAKE_CURRENT_SOURCE_DIR})

collector_list  (_list PROJECT_LIB_DIRS)
link_directories (${_list})

collector_list (_deps PROJECT_LIB_DEPS)

collector_list (_list PROJECT_LIB_TESTS)

if (WITH_SHARED_LIB)
  set (_lib ${PROJECT_NAME}-shared)
  add_executable (test-${_lib} ${_list})
  target_link_libraries (test-${_lib} ${_deps} ${_lib})
  install (TARGETS test-${_lib} RUNTIME DESTINATION bin)
  if (PROJECT_EC_FLAGS)
    string(REPLACE " " ";" _ec_flgs ${PROJECT_EC_FLAGS})
    target_compile_options (test-${_lib} PUBLIC ${_ec_flgs})
  endif (PROJECT_EC_FLAGS)
  add_dependencies (test-${_lib}  ${PROJECT_NAME}-shared)
  if (WITH_TESTS_EXEC)
    add_test (test-${_lib} test-${_lib})
  endif (WITH_TESTS_EXEC)
endif (WITH_SHARED_LIB)

if (WITH_STATIC_LIB)
  get_property (_linker_options GLOBAL PROPERTY TEST_LINKER_OPTIONS)
  set (_lib ${PROJECT_NAME}-static)
  add_executable (test-${_lib} ${_list})
  target_link_libraries (test-${_lib} -Wl,-Map=test-${_lib}.map ${_linker_options} -Wl,--start-group ${_lib} ${_deps} -Wl,--end-group)
  install (TARGETS test-${_lib} RUNTIME DESTINATION bin)
  if (PROJECT_EC_FLAGS)
    string(REPLACE " " ";" _ec_flgs ${PROJECT_EC_FLAGS})
    target_compile_options (test-${_lib} PUBLIC ${_ec_flgs})
  endif (PROJECT_EC_FLAGS)
  add_dependencies (test-${_lib}  ${PROJECT_NAME}-static)
  if (WITH_TESTS_EXEC)
    add_test (test-${_lib} test-${_lib})
  endif (WITH_TESTS_EXEC)
endif (WITH_STATIC_LIB)

collector_list (_headers PROJECT_HDR_TESTS)
foreach (INCLUDE ${_headers})
  string (REGEX REPLACE "[^a-zA-Z0-9]+" "-" _f ${INCLUDE})
  configure_file (metal-header-template.c ${_f}.c)
  list (APPEND _flist "${CMAKE_CURRENT_BINARY_DIR}/${_f}")
endforeach (INCLUDE)
add_library (metal-headers STATIC ${_flist})

collector_list (_list PROJECT_HDR_TESTS)


# vim: expandtab:ts=2:sw=2:smartindent
