set(MODULE_NAME core)

list(APPEND HEADERS
    AbstractApp.h
	AbstractNamedItem.h
	AbstractWebApp.h
    Dictionary.h
    Event.h
    Color.h
    CommandLineArgs.h
	data_structures/RawTree.h
	data_structures/List.h
    data_structures/Tree.h
	encoding/ByteUtils.h
	encoding/StringUtils.h
	encoding/UnicodeUtils.h
    loggers/FileLogger.h
    file_utilities/Directory.h
    file_utilities/File.h
    file_utilities/FileFormats.h
    file_utilities/PathUtils.h
    http/HttpResponse.h
    http/HttpHeader.h
    http/HttpRequest.h
	http/HttpParser.h
	http/HttpPreamble.h
    serializers/TomlReader.h
	Win32BaseIncludes.h
	ThreadCollection.h
	xml/XmlParser.h
    xml/XmlDocument.h
    xml/XmlWriter.h
    xml/xml-elements/XmlElement.h
    xml/xml-elements/XmlAttribute.h
    xml/xml-elements/XmlProlog.h
)   

list(APPEND SOURCES 
    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
	encoding/StringUtils.cpp
    encoding/ByteUtils.cpp
	encoding/UnicodeUtils.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
	http/HttpParser.cpp
    serializers/TomlReader.cpp
	ThreadCollection.cpp
    xml/XmlParser.cpp
    xml/XmlDocument.cpp
    xml/XmlWriter.cpp
    xml/xml-elements/XmlElement.cpp
    xml/xml-elements/XmlAttribute.cpp
    xml/xml-elements/XmlProlog.cpp
	)

add_library(${MODULE_NAME} SHARED ${SOURCES} ${HEADERS})

target_include_directories(${MODULE_NAME} PUBLIC
                          ${CMAKE_CURRENT_SOURCE_DIR}
						  ${CMAKE_CURRENT_SOURCE_DIR}/encoding
                          ${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
						  ${CMAKE_CURRENT_SOURCE_DIR}/xml
                          ${CMAKE_CURRENT_SOURCE_DIR}/xml/xml-elements
                          )
set_target_properties( ${MODULE_NAME} PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON )
set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER src/base)