set(ARCAN_SRC "../..")
set(A12_SRC "..")
set(A12_EXT "../external")

set(MLK_CONFIG
	MLK_CONFIG_PARAMETER_SET=768
	MLK_CONFIG_NAMESPACE_PREFIX=mlkem
)

set(SOURCES
	a12_helper_cl.c
	a12_helper_srv.c
	a12_helper_discover.c
	a12_helper_framecache.c
	net.c
	nbio.c
	dir_lua.c
	dir_lua_appl.c
	dir_lua_support.c
	dir_cl.c
	dir_srv.c
	dir_srv_worker.c
	dir_srv_link.c
	dir_supp.c
	${ARCAN_SRC}/engine/arcan_db.c
	${ARCAN_SRC}/platform/posix/warning.c
	${ARCAN_SRC}/platform/posix/dbpath.c
	${ARCAN_SRC}/platform/posix/resource_io.c
	${ARCAN_SRC}/platform/posix/map_resource.c
	${ARCAN_SRC}/platform/stub/mem.c
	${ARCAN_SRC}/frameserver/util/anet_helper.c
	${ARCAN_SRC}/frameserver/util/anet_keystore_naive.c
	${A12_EXT}/fts.c
)

if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
	list(APPEND SOURCES ${ARCAN_SRC}/platform/posix/execvpe.c)
endif()
	
set(SESSION_SOURCES
	session.c
	a12_helper_srv.c
	a12_helper_framecache.c
	${ARCAN_SRC}/frameserver/util/anet_helper.c
	${ARCAN_SRC}/frameserver/util/anet_keystore_naive.c
)

if (NOT LUA_FOUND)
	find_package(Lua51 REQUIRED)
endif()

set(INCLUDE_DIRS
	"${ARCAN_SRC}/shmif"
	"${A12_EXT}"
	"${A12_EXT}/blake3"
	"${A12_SRC}"
	"${ARCAN_SRC}/engine"
	"${ARCAN_SRC}/frameserver/util"
	"${ARCAN_SRC}/platform"
	"${A12_EXT}/mono"
	"${A12_EXT}/mono/optional"
	${LUA_INCLUDE_DIR}
	${LUA_INCLUDE_DIRS}
	${SQLite3_INCLUDE_DIR}
)

add_executable(arcan-net ${SOURCES})
add_executable(arcan-net-session ${SESSION_SOURCES})

add_sanitizers(arcan-net)
add_sanitizers(arcan-net-session)

target_link_libraries(arcan-net PRIVATE
	arcan_shmif
	arcan_shmif_server
	arcan_tui
	arcan_a12
	${STDLIB}
	${LUA_LIBRARIES}
	${SQLite3_LIBRARIES}
)

target_link_libraries(arcan-net-session PRIVATE
	arcan_shmif
	arcan_shmif_server
	arcan_tui
	arcan_a12
	${STDLIB}
)

target_include_directories(arcan-net PRIVATE ${INCLUDE_DIRS})
target_include_directories(arcan-net-session PRIVATE ${INCLUDE_DIRS})

target_compile_definitions(arcan-net PRIVATE
	WANT_KEYSTORE_HASHER
	HAVE_DIRSRV
	ARCAN_DB_STANDALONE
	${MLK_CONFIG}
	ARCAN_BUILDVERSION=\"${SOURCE_TAG}-${CMAKE_SYSTEM_NAME}\"
)

target_compile_definitions(arcan-net-session PRIVATE
	${MLK_CONFIG}
	ARCAN_BUILDVERSION=\"${SOURCE_TAG}-${CMAKE_SYSTEM_NAME}\"
)

install(TARGETS arcan-net arcan-net-session DESTINATION ${CMAKE_INSTALL_BINDIR})
