set(ASY_SUBREPO_CLONE_ROOT ${CMAKE_CURRENT_SOURCE_DIR}) set(LSP_REPO_ROOT ${ASY_SUBREPO_CLONE_ROOT}/LspCpp) set(TINYEXR_SUBREPO_ROOT ${ASY_SUBREPO_CLONE_ROOT}/tinyexr) set(BOEHM_GC_ROOT ${ASY_SUBREPO_CLONE_ROOT}/gc) set(LIBATOMIC_OPS_ROOT ${ASY_SUBREPO_CLONE_ROOT}/libatomic_ops) # boehm gc if (ENABLE_GC) set(enable_gpl OFF CACHE INTERNAL "libatomicops gpl libs option") add_subdirectory(${LIBATOMIC_OPS_ROOT}) set(OLD_CFLAG_EXTRA ${CFLAG_EXTRA}) set(CFLAGS_EXTRA -I${LIBATOMIC_OPS_ROOT}/src) # for bdwgc set(OLD_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS}) set(BUILD_SHARED_LIBS OFF CACHE INTERNAL "bdwgc shared libs flag") set(enable_cplusplus ON CACHE INTERNAL "bdwgc enable C++") set(without_libatomic_ops ON CACHE INTERNAL "bdwgc use libatomic ops") add_subdirectory(${BOEHM_GC_ROOT}) set(CFLAG_EXTRA ${OLD_CFLAG_EXTRA}) unset(BUILD_SHARED_LIBS CACHE) set(BUILD_SHARED_LIBS ${OLD_BUILD_SHARED_LIBS}) list(APPEND ASY_STATIC_LIBARIES gc gccpp atomic_ops) if (WIN32) list(APPEND ASY_MACROS GC_NOT_DLL) endif() # We use #include as opposed to (and also for other gc include files) to allow # linking directly to the compiled source for testing different GC versions. # In GC tarballs downloaded from https://www.hboehm.info/gc/, the header files are in include/gc.h, and not # include/gc/gc.h, hence we need a way to allow inclusion of "gc.h". In vcpkg gc distributions, the include # files are provided in include/gc/gc.h (and other files). Hence we append "/gc" to the include directories. if (WIN32) list(APPEND ASY_STATIC_LIBARIES gctba) endif() list(APPEND ASY_MACROS USEGC) else() message(STATUS "Disabling gc support") endif() if (ENABLE_LSP) message(STATUS "LSP Enabled.") # disable New Boost version warning set(Boost_NO_WARN_NEW_VERSIONS 1) set(USE_SYSTEM_RAPIDJSON ON CACHE INTERNAL "Use system rapidjson") set(LSPCPP_USE_CPP17 ON CACHE INTERNAL "C++17 mode") # For transitive URI dependency set(Uri_BUILD_DOCS OFF CACHE INTERNAL "build docs for uri") set(Uri_BUILD_TESTS OFF CACHE INTERNAL "build tests for uri") if (WIN32) set(LSPCPP_WIN32_WINNT_VALUE ${ASY_WIN32_WINVER_VERSION} CACHE INTERNAL "lsp win32 winver value") endif() if (ENABLE_GC) set(LSPCPP_SUPPORT_BOEHM_GC ON CACHE INTERNAL "Use boehm GC") set(LSPCPP_GC_DOWNLOADED_ROOT ${BOEHM_GC_ROOT} CACHE INTERNAL "gc root for lsp") set(LSPCPP_GC_STATIC ON CACHE INTERNAL "lsp use static gc") endif() add_subdirectory(${LSP_REPO_ROOT}) list(APPEND ASY_STATIC_LIBARIES lspcpp) list(APPEND ASY_MACROS HAVE_LSP=1) else() # only include lsp libraries message(STATUS "LSP Disabled. Will not have language server protocol support.") list(APPEND ASYMPTOTE_INCLUDES ${LSP_REPO_ROOT}/include) endif()