cmake_minimum_required(VERSION 3.27) if (NOT CMAKE_HOST_SYSTEM_PROCESSOR) if (WIN32) if(CMAKE_SIZEOF_VOID_P EQUAL 8) set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64") else() set(CMAKE_HOST_SYSTEM_PROCESSOR "i386") endif() else() execute_process(COMMAND uname -m OUTPUT_VARIABLE CMAKE_HOST_SYSTEM_PROCESSOR OUTPUT_STRIP_TRAILING_WHITESPACE) endif() endif() message(STATUS "Host processor: ${CMAKE_HOST_SYSTEM_PROCESSOR}") if (NOT CMAKE_SYSTEM_PROCESSOR) set(CMAKE_SYSTEM_PROCESSOR ${CMAKE_HOST_SYSTEM_PROCESSOR}) endif() include(cmake-scripts/common.cmake) include(asy-pkg-version-suffix.cmake OPTIONAL RESULT_VARIABLE ASY_ADDR_VERSION_SUFFIX_FILE) include(cmake-scripts/options.cmake) include(pkg-info.cmake) include(cmake-scripts/vcpkg-features.cmake) project(${ASY_PACKAGE_NAME}) include(cmake-scripts/compiler-config.cmake) include(cmake-scripts/basic-parameters.cmake) include(cmake-scripts/buildfiles-to-src.cmake) include(cmake-scripts/asy-files.cmake) # setting build files if (WIN32) include(cmake-scripts/win32-specific.cmake) endif() build_files_to_src(CORE_BUILD_FILES CORE_SOURCE_FILES) include(cmake-scripts/subrepo-projects.cmake) include(cmake-scripts/external-libs.cmake) include(cmake-scripts/thirdparty-impl.cmake) # PRC add_subdirectory(prc/) list(APPEND ASY_STATIC_LIBRARIES PRC) get_target_property(prc_incl_dir PRC INCLUDE_DIRECTORIES) list(APPEND ASYMPTOTE_INCLUDES $) list(APPEND ASYMPTOTE_INCLUDES "LspCpp/include") include(cmake-scripts/gnu-install-macros.cmake) include(cmake-scripts/asy-macro.cmake) include(cmake-scripts/generated-files.cmake) # asy-reflect if (ENABLE_CUDA_ASY_REFLECT) message(STATUS "asy reflect target enabled") add_subdirectory(cudareflect/) endif() # defining asy target add_library( asycore STATIC ${CORE_SOURCE_FILES} ${ASY_GENERATED_BUILD_SOURCES} ) target_include_directories(asycore PUBLIC ${ASYMPTOTE_INCLUDES}) add_dependencies(asycore asy_gen_headers) target_link_libraries(asycore PUBLIC ${ASY_STATIC_LIBRARIES}) target_compile_definitions(asycore PUBLIC ${ASY_MACROS}) target_compile_options(asycore PUBLIC ${ASY_COMPILE_OPTS}) # CTAN variant of settings.cc: compiled separately with ASYMPTOTE_SYSDIR="" # and CTAN_BUILD defined. The normal asy.exe uses the settings.cc already # compiled into asycore (with ASYMPTOTE_SYSDIR="NUL" on Windows). add_library(settings_obj_ctan OBJECT ${ASY_SRC_DIR}/settings.cc) target_link_libraries(settings_obj_ctan PRIVATE asycore) target_compile_definitions(settings_obj_ctan PRIVATE ASYMPTOTE_SYSDIR="" CTAN_BUILD) target_compile_options(settings_obj_ctan PRIVATE ${ASY_COMPILE_OPTS}) # asy executable (normal installer build, uses settings from asycore) add_executable( asy ${ASY_SRC_DIR}/main.cc ${ASY_WIN_RC_FILE} ) target_link_libraries(asy PUBLIC asycore) # asy-ctan executable (CTAN/TexLive build with ASYMPTOTE_SYSDIR="") add_executable(asy-ctan ${ASY_SRC_DIR}/main.cc ${ASY_WIN_RC_FILE} $) target_link_libraries(asy-ctan PUBLIC asycore) # base files include(cmake-scripts/asy-base-files.cmake) # asy + base files add_custom_target(asy-basefiles DEPENDS ${ASY_OUTPUT_BASE_FILES}) # license files in build tree (for running asy locally without installing) include(cmake-scripts/copy-build-licenses.cmake) add_custom_target(asy-with-basefiles ALL DEPENDS asy asy-basefiles asy-licenses) # asy misc files if (ENABLE_MISCFILES_GEN) include(cmake-scripts/asy-misc-files.cmake) endif() # documentation generation if (ENABLE_DOCGEN) include(cmake-scripts/docgen.cmake) endif() # testing enable_testing() include(cmake-scripts/tests-asy.cmake) include(cmake-scripts/tests-wce.cmake) if (ENABLE_ASY_CXXTEST) add_subdirectory(cxxtests) endif() # installation if (WIN32) # on windows, pre-NSIS include(cmake-scripts/win32-pre-nsis-installer.cmake) else() # on unix systems include(cmake-scripts/linux-install.cmake) endif()