#
# Brisk
#
# Cross-platform application framework
# --------------------------------------------------------------
#
# Copyright (C) 2025 Brisk Developers
#
# This file is part of the Brisk library.
#
# Brisk is dual-licensed under the GNU General Public License, version 2 (GPL-2.0+), and a commercial license. You may
# use, modify, and distribute this software under the terms of the GPL-2.0+ license if you comply with its conditions.
#
# You should have received a copy of the GNU General Public License along with this program. If not, see
# .
#
# If you do not wish to be bound by the GPL-2.0+ license, you must purchase a commercial license. For commercial
# licensing options, please visit: https://brisklib.com
#
add_library(
brisk-core STATIC
${PROJECT_SOURCE_DIR}/include/brisk/core/BasicTypes.hpp
${PROJECT_SOURCE_DIR}/include/brisk/core/Json.hpp
${PROJECT_SOURCE_DIR}/include/brisk/core/Bytes.hpp
${PROJECT_SOURCE_DIR}/include/brisk/core/Compression.hpp
${PROJECT_SOURCE_DIR}/include/brisk/core/Cryptography.hpp
${PROJECT_SOURCE_DIR}/include/brisk/core/Hash.hpp
${PROJECT_SOURCE_DIR}/include/brisk/core/internal/CrcCompile.hpp
${PROJECT_SOURCE_DIR}/include/brisk/core/Encoding.hpp
${PROJECT_SOURCE_DIR}/include/brisk/core/internal/Expected.hpp
${PROJECT_SOURCE_DIR}/include/brisk/core/internal/Generation.hpp
${PROJECT_SOURCE_DIR}/include/brisk/core/Io.hpp
${PROJECT_SOURCE_DIR}/include/brisk/core/Utilities.hpp
${PROJECT_SOURCE_DIR}/include/brisk/core/internal/Fixed.hpp
${PROJECT_SOURCE_DIR}/include/brisk/core/Log.hpp
${PROJECT_SOURCE_DIR}/include/brisk/core/internal/Optional.hpp
${PROJECT_SOURCE_DIR}/include/brisk/core/Serialization.hpp
${PROJECT_SOURCE_DIR}/include/brisk/core/Settings.hpp
${PROJECT_SOURCE_DIR}/include/brisk/core/Text.hpp
${PROJECT_SOURCE_DIR}/include/brisk/core/Threading.hpp
${PROJECT_SOURCE_DIR}/include/brisk/core/Time.hpp
${PROJECT_SOURCE_DIR}/include/brisk/core/Math.hpp
${PROJECT_SOURCE_DIR}/include/brisk/core/internal/Initialization.hpp
${PROJECT_SOURCE_DIR}/include/brisk/core/internal/Functional.hpp
${PROJECT_SOURCE_DIR}/src/core/Json.cpp
${PROJECT_SOURCE_DIR}/src/core/Bytes.cpp
${PROJECT_SOURCE_DIR}/src/core/Binding.cpp
${PROJECT_SOURCE_DIR}/src/core/Compression.cpp
${PROJECT_SOURCE_DIR}/src/core/Compression_Brotli.cpp
${PROJECT_SOURCE_DIR}/src/core/Compression_GZip.cpp
${PROJECT_SOURCE_DIR}/src/core/Compression_LZ4.cpp
${PROJECT_SOURCE_DIR}/src/core/Cryptography.cpp
${PROJECT_SOURCE_DIR}/src/core/Hash.cpp
${PROJECT_SOURCE_DIR}/src/core/Encoding.cpp
${PROJECT_SOURCE_DIR}/src/core/Io.cpp
${PROJECT_SOURCE_DIR}/src/core/Log.cpp
${PROJECT_SOURCE_DIR}/src/core/Settings.cpp
${PROJECT_SOURCE_DIR}/src/core/Text.cpp
${PROJECT_SOURCE_DIR}/src/core/Localization.cpp
${PROJECT_SOURCE_DIR}/src/core/MetaClass.cpp
${PROJECT_SOURCE_DIR}/src/core/Threading.cpp
${PROJECT_SOURCE_DIR}/src/core/Stream.cpp
${PROJECT_SOURCE_DIR}/src/core/Time.cpp
${PROJECT_SOURCE_DIR}/src/core/Initialization.cpp
${PROJECT_SOURCE_DIR}/src/core/Uv.hpp
${PROJECT_SOURCE_DIR}/src/core/Uv.cpp
${PROJECT_SOURCE_DIR}/src/core/App.cpp
${PROJECT_SOURCE_DIR}/src/core/Version.cpp
${PROJECT_SOURCE_DIR}/src/core/cityhash/city.cc
${PROJECT_SOURCE_DIR}/src/core/cityhash/city.h
${PROJECT_SOURCE_DIR}/src/core/llvm/SmallVector.cpp
${PROJECT_SOURCE_DIR}/src/core/Throw.cpp
${PROJECT_SOURCE_DIR}/src/core/System.cpp
${PROJECT_SOURCE_DIR}/src/core/Threading${PLATFORM_SPECIFIC_CPP}
${PROJECT_SOURCE_DIR}/src/core/System${PLATFORM_SPECIFIC_CPP}
${PROJECT_SOURCE_DIR}/src/core/Io${PLATFORM_SPECIFIC_CPP}
${PROJECT_SOURCE_DIR}/src/core/DynamicLibrary${PLATFORM_SPECIFIC_CPP}
${PROJECT_SOURCE_DIR}/src/core/Cryptography${PLATFORM_SPECIFIC_CPP}
${PROJECT_SOURCE_DIR}/src/core/hash/md5.c
${PROJECT_SOURCE_DIR}/src/core/hash/sha1.c
${PROJECT_SOURCE_DIR}/src/core/hash/sha256.c
${PROJECT_SOURCE_DIR}/src/core/hash/sha512.c
${PROJECT_SOURCE_DIR}/src/core/hash/sha3.c)
set_property(TARGET brisk-core PROPERTY EXPORT_NAME Core)
add_library(Brisk::Core ALIAS brisk-core)
if (WIN32)
target_sources(brisk-core PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/COMInit.cpp)
endif ()
if (APPLE)
target_sources(brisk-core PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/AutoreleasePool.mm)
endif ()
target_include_directories(brisk-core PUBLIC $
$)
if (WIN32)
target_compile_definitions(brisk-core PUBLIC $)
target_compile_definitions(brisk-core PUBLIC $)
target_compile_definitions(brisk-core PUBLIC $)
target_compile_definitions(brisk-core PUBLIC $)
target_compile_definitions(brisk-core PUBLIC $)
target_compile_definitions(brisk-core PUBLIC $)
endif ()
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU")
target_compile_options(brisk-core PUBLIC $)
target_compile_options(brisk-core PUBLIC $)
endif ()
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
target_compile_options(brisk-core PUBLIC $)
endif ()
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
target_compile_options(brisk-core PUBLIC $)
target_compile_options(brisk-core PUBLIC $)
target_compile_options(brisk-core PUBLIC $)
target_compile_options(brisk-core PUBLIC $)
target_compile_options(brisk-core PUBLIC $)
target_compile_options(brisk-core PUBLIC $)
endif ()
set(_DEP_PUBLIC PUBLIC)
set(_DEP_PRIVATE PRIVATE)
include(Deps.cmake)
unset(_DEP_PUBLIC)
unset(_DEP_PRIVATE)
if (WIN32)
target_link_options(brisk-core PUBLIC $
$/${CMAKE_INSTALL_LIBDIR}/types.natvis>)
install(FILES types.natvis DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif ()
target_compile_definitions(brisk-core PUBLIC BRISK_CFG_$=1)
# System libraries and frameworks
if (WIN32)
target_link_libraries(brisk-core PUBLIC ole32 uuid)
endif ()
if (APPLE)
target_link_libraries(brisk-core PUBLIC "-framework Foundation")
target_compile_options(brisk-core PUBLIC $)
endif ()
set_target_properties(brisk-core PROPERTIES CXX_CLANG_TIDY "${CLANG_TIDY_ARGS}")
if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
target_compile_options(brisk-core PRIVATE -wd4003)
endif ()