set(MODULE_NAME core)

list(APPEND core_HEADERS
    AbstractApp.h
    Dictionary.h
    Event.h
    Color.h
    CommandLineArgs.h
    loggers/FileLogger.h
    file_utilities/Directory.h
    file_utilities/File.h
    file_utilities/FileFormats.h
    file_utilities/PathUtils.h
    StringUtils.h
    http/HttpResponse.h
    serializers/TomlReader.h
)   

list(APPEND core_LIB_INCLUDES 
    ByteUtils.cpp
    Event.cpp
    Dictionary.cpp
    Color.cpp
    CommandLineArgs.cpp
    data_structures/RawTree.cpp
    data_structures/Tree.cpp
    loggers/FileLogger.cpp
    file_utilities/Directory.cpp
    file_utilities/File.cpp
    file_utilities/FileFormats.cpp
    file_utilities/PathUtils.cpp
    memory/SharedMemory.cpp
    RandomUtils.cpp
    StringUtils.cpp
    streams/BinaryStream.cpp
    streams/BitStream.cpp
    streams/InputBitStream.cpp
    streams/OutputBitStream.cpp
    streams/BufferBitStream.cpp
    http/HttpResponse.cpp
    http/HttpHeader.cpp
    http/HttpRequest.cpp
    serializers/TomlReader.cpp)

add_library(${MODULE_NAME} SHARED ${core_LIB_INCLUDES} ${core_HEADERS})

target_include_directories(${MODULE_NAME} PUBLIC
                          ${CMAKE_CURRENT_SOURCE_DIR}
                          ${CMAKE_CURRENT_SOURCE_DIR}/file_utilities
                          ${CMAKE_CURRENT_SOURCE_DIR}/loggers
                          ${CMAKE_CURRENT_SOURCE_DIR}/memory
                          ${CMAKE_CURRENT_SOURCE_DIR}/streams
                          ${CMAKE_CURRENT_SOURCE_DIR}/http
                          ${CMAKE_CURRENT_SOURCE_DIR}/data_structures
                          ${CMAKE_CURRENT_SOURCE_DIR}/serializers
                          )
set_target_properties( ${MODULE_NAME} PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON )
set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER src)