cmake_minimum_required(VERSION 3.16)

project(Ports C CXX)

macro(add_port_executable EXECUTABLE_NAME SOURCES)
    set(COLLECTED_SOURCES ${SOURCES} ${ARGN})
    add_executable(${EXECUTABLE_NAME} ${COLLECTED_SOURCES})
    target_link_libraries(${EXECUTABLE_NAME} c)
    list(APPEND PORT_EXECUTABLES "${EXECUTABLE_NAME}")
    set(PORT_EXECUTABLES "${PORT_EXECUTABLES}" PARENT_SCOPE)
    list(APPEND PORT_FILES_LIST "${PROJECT_BINARY_DIR}/${EXECUTABLE_NAME}")
    set(PORT_FILES_LIST "${PORT_FILES_LIST}" PARENT_SCOPE)
endmacro()

macro(add_extra_files FILES)
    list(APPEND PORT_FILES_LIST "${FILES}")
    set(PORT_FILES_LIST "${PORT_FILES_LIST}" PARENT_SCOPE)
endmacro()

include(ports_list.txt OPTIONAL)

string(REPLACE ";" " " PORT_FILES_LIST "${PORT_FILES_LIST}")
string(REPLACE ";" " " PORT_EXECUTABLES "${PORT_EXECUTABLES}")

set(PORT_FILES_LIST ${PORT_FILES_LIST} PARENT_SCOPE)
set(PORT_EXECUTABLES ${PORT_EXECUTABLES} PARENT_SCOPE)
