cmake_minimum_required(VERSION 3.22)
project(Phoenix)

find_package(PhoenixCMake REQUIRED)

set(TEST_SWARM_EXAMPLE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/TESTS)
set(PROJECT_VERSION "4.0.0") # this line is updated by semantic release using regex
phoenix_base_project("PhoenixSwarm" "${PROJECT_VERSION}"
		"Library to ease communication between daemons"
		"https://gitlab.in2p3.fr/CTA-LAPP/PHOENIX_LIBS2/PhoenixSwarm")

pull_extra_module("PhoenixCore" "https://gitlab.in2p3.fr/CTA-LAPP/PHOENIX_LIBS2/system/PhoenixCore.git")
pull_extra_module("PhoenixDataStream" "https://gitlab.in2p3.fr/CTA-LAPP/PHOENIX_LIBS2/serialize-io/PhoenixDataStream.git")
pull_extra_module("PhoenixCheckStream" "https://gitlab.in2p3.fr/CTA-LAPP/PHOENIX_LIBS2/serialize-io/PhoenixCheckStream.git")
pull_extra_module("PhoenixPathStream" "https://gitlab.in2p3.fr/CTA-LAPP/PHOENIX_LIBS2/serialize-io/PhoenixPathStream.git")
pull_extra_module("PhoenixTypeStream" "https://gitlab.in2p3.fr/CTA-LAPP/PHOENIX_LIBS2/serialize-io/PhoenixTypeStream.git")
pull_extra_module("PhoenixOptionParser" "https://gitlab.in2p3.fr/CTA-LAPP/PHOENIX_LIBS2/config/PhoenixOptionParser.git")
pull_extra_module("PhoenixFileParser" "https://gitlab.in2p3.fr/CTA-LAPP/PHOENIX_LIBS2/config/PhoenixFileParser.git")
pull_extra_module("PhoenixToml" "https://gitlab.in2p3.fr/CTA-LAPP/PHOENIX_LIBS2/config/PhoenixToml.git")
pull_extra_module("PhoenixYml" "https://gitlab.in2p3.fr/CTA-LAPP/PHOENIX_LIBS2/config/PhoenixYml.git")

pull_extra_module("PhoenixClock" "https://gitlab.in2p3.fr/CTA-LAPP/PHOENIX_LIBS2/clock/PhoenixClock.git")
pull_extra_module("PhoenixSocket" "https://gitlab.in2p3.fr/CTA-LAPP/PHOENIX_LIBS2/network/PhoenixSocket.git")

set(phoenix_zmq "")
if(SELF_TESTS_MODE)
	pull_extra_module("PhoenixZMQ" "https://gitlab.in2p3.fr/CTA-LAPP/PHOENIX_LIBS2/network/PhoenixZMQ.git")
	set(phoenix_zmq "${PHOENIXZMQ}")
endif()

phoenix_include_directories(
	${CMAKE_CURRENT_SOURCE_DIR}
	${CMAKE_CURRENT_BINARY_DIR}
	${CMAKE_CURRENT_SOURCE_DIR}/src
	${CMAKE_CURRENT_SOURCE_DIR}/src/Representation
	${CMAKE_CURRENT_SOURCE_DIR}/src/Function
	${CMAKE_CURRENT_SOURCE_DIR}/src/Daemon
	${CMAKE_CURRENT_SOURCE_DIR}/src/Statistics
)

phoenix_create_find_full(PhoenixSwarm phoenix_swarm.h "phoenix_swarm_daemon;phoenix_swarm_function;phoenix_swarm_representation" "" "phoenixswarm_include.cmake" PhoenixCore PhoenixDataStream PhoenixPathStream PhoenixTypeStream PhoenixOptionParser PhoenixFileParser PhoenixToml PhoenixYml PhoenixClock PhoenixSocket)

install(FILES phoenixswarm_include.cmake DESTINATION share/cmake/Modules/)

set(PHOENIXSWARM_TEST_DEPENDENCIES
	phoenix_swarm_mock_daemons
	phoenix_swarm_daemon
	phoenix_swarm_function
	phoenix_swarm_representation
	${phoenix_zmq}
	phoenix_socket
	phoenix_clock
	phoenix_toml
	phoenix_yml
	phoenix_file_parser
	phoenix_option_parser
	phoenix_type_stream
	phoenix_path_stream
	phoenix_data_stream
	phoenix_check_stream
	phoenix_core
)

phoenix_add_subdirectory(src)
phoenix_add_subdirectory(program)
phoenix_add_subdirectory(Examples)

phoenix_tests()
