summaryrefslogtreecommitdiff
path: root/graphics/asymptote/cmake-scripts/subrepo-projects.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/asymptote/cmake-scripts/subrepo-projects.cmake')
-rw-r--r--graphics/asymptote/cmake-scripts/subrepo-projects.cmake74
1 files changed, 74 insertions, 0 deletions
diff --git a/graphics/asymptote/cmake-scripts/subrepo-projects.cmake b/graphics/asymptote/cmake-scripts/subrepo-projects.cmake
new file mode 100644
index 0000000000..a93c0367f4
--- /dev/null
+++ b/graphics/asymptote/cmake-scripts/subrepo-projects.cmake
@@ -0,0 +1,74 @@
+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 <gc.h> as opposed to <gc/gc.h> (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()