# ------------------------------ # cmake project # ------------------------------ cmake_minimum_required(VERSION 4.1.0) project(seallib LANGUAGES CXX) # ------------------------------ # options # ------------------------------ option(SEALLIB_ASSERT "Use assert library" OFF) option(SEALLIB_EVENTS "Use events library" OFF) option(SEALLIB_LOG "Use log library" OFF) option(SEALLIB_VFS "Use virtual filesystem library" OFF) option(SEALLIB_TEST "Build test project" OFF) # enable all on test if (SEALLIB_TEST) set(ALL_LIBS SEALLIB_ASSERT SEALLIB_EVENTS SEALLIB_LOG SEALLIB_VFS) foreach(lib ${ALL_LIBS}) set(${lib} ON CACHE BOOL "" FORCE) endforeach() endif() # ------------------------------ # lib # ------------------------------ set(SEALLIB_SOURCES "") if (SEALLIB_ASSERT) list(APPEND SEALLIB_SOURCES "src/lib/seallib/assert.cpp" "src/lib/seallib/assert.h") endif() if (SEALLIB_EVENTS) list(APPEND SEALLIB_SOURCES "src/lib/seallib/events.h") endif() if (SEALLIB_LOG) list(APPEND SEALLIB_SOURCES "src/lib/seallib/log.h") endif() if (SEALLIB_VFS) list(APPEND SEALLIB_SOURCES "src/lib/seallib/vfs.cpp" "src/lib/seallib/vfs.h") endif() set(SEALLIB_HAS_SOURCES FALSE) foreach(src ${SEALLIB_SOURCES}) if(src MATCHES "\\.cpp$") set(SEALLIB_HAS_SOURCES TRUE) break() endif() endforeach() if (SEALLIB_HAS_SOURCES) add_library(seallib STATIC ${SEALLIB_SOURCES}) else() add_library(seallib INTERFACE) target_sources(seallib INTERFACE ${SEALLIB_SOURCES}) endif() if(SEALLIB_HAS_SOURCES) set(SEALLIB_SCOPE PUBLIC) else() set(SEALLIB_SCOPE INTERFACE) endif() set_target_properties(seallib PROPERTIES LINKER_LANGUAGE CXX) target_include_directories(seallib ${SEALLIB_SCOPE} src/lib) target_compile_features(seallib ${SEALLIB_SCOPE} cxx_std_20) set_target_properties(seallib PROPERTIES CXX_EXTENSIONS OFF) # ------------------------------ # test # ------------------------------ if (SEALLIB_TEST) file(GLOB_RECURSE SEALLIB_TEST_SOURCES CONFIGURE_DEPENDS "src/test/*.h" "src/test/*.cpp") add_executable(seallib-test ${SEALLIB_TEST_SOURCES}) target_include_directories(seallib-test PRIVATE "src/test") target_link_libraries(seallib-test PRIVATE seallib) endif()