mirror of
https://github.com/wolfpld/tracy.git
synced 2026-10-23 09:10:51 +00:00
89 lines
4.2 KiB
CMake
89 lines
4.2 KiB
CMake
set(PANDOC_VERSION 3.12.1)
|
|
|
|
find_package(Python3 COMPONENTS Interpreter REQUIRED)
|
|
|
|
find_program(TRACY_PANDOC pandoc)
|
|
if(TRACY_PANDOC)
|
|
execute_process(
|
|
COMMAND ${TRACY_PANDOC} --version
|
|
OUTPUT_VARIABLE _pandoc_version
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
RESULT_VARIABLE _pandoc_rc
|
|
ERROR_QUIET)
|
|
string(REGEX MATCH "pandoc [0-9.]+" _pandoc_version "${_pandoc_version}")
|
|
if(NOT _pandoc_rc EQUAL 0 OR NOT _pandoc_version STREQUAL "pandoc ${PANDOC_VERSION}")
|
|
set(TRACY_PANDOC "")
|
|
endif()
|
|
endif()
|
|
if(TRACY_PANDOC)
|
|
message(STATUS "Using system pandoc ${PANDOC_VERSION}: ${TRACY_PANDOC}")
|
|
else()
|
|
if(WIN32)
|
|
if(NOT CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "^(x86_64|AMD64|amd64)$")
|
|
message(FATAL_ERROR "No pinned pandoc ${PANDOC_VERSION} binary for ${CMAKE_HOST_SYSTEM_PROCESSOR}; install pandoc ${PANDOC_VERSION}")
|
|
endif()
|
|
set(_pandoc_asset pandoc-${PANDOC_VERSION}-windows-x86_64.zip)
|
|
set(_pandoc_hash 6ef431cb20b2c24a0371fc19200dc49d452be54b1b5c9239f3462841ef53e587)
|
|
set(_pandoc_exe pandoc-${PANDOC_VERSION}/pandoc.exe)
|
|
elseif(APPLE)
|
|
if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "^(arm64|aarch64)$")
|
|
set(_pandoc_asset pandoc-${PANDOC_VERSION}-arm64-macOS.zip)
|
|
set(_pandoc_hash c2146cf33a583f3ac93eccddf1bb662371d5cfcce1aad1c87ad860cca1435d46)
|
|
set(_pandoc_exe pandoc-${PANDOC_VERSION}-arm64/bin/pandoc)
|
|
elseif(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "^(x86_64|AMD64|amd64)$")
|
|
set(_pandoc_asset pandoc-${PANDOC_VERSION}-x86_64-macOS.zip)
|
|
set(_pandoc_hash 81ed3e2cfecf096df15d407152f89a684fd65221082b919963f738e977fad3bc)
|
|
set(_pandoc_exe pandoc-${PANDOC_VERSION}-x86_64/bin/pandoc)
|
|
else()
|
|
message(FATAL_ERROR "No pinned pandoc ${PANDOC_VERSION} binary for ${CMAKE_HOST_SYSTEM_PROCESSOR}; install pandoc ${PANDOC_VERSION}")
|
|
endif()
|
|
else()
|
|
if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "^(aarch64|arm64)$")
|
|
set(_pandoc_asset pandoc-${PANDOC_VERSION}-linux-arm64.tar.gz)
|
|
set(_pandoc_hash 445d96fd08801fe636cab1158b4f017ee320ac3b7446328b4fe2f902117b19b9)
|
|
set(_pandoc_exe pandoc-${PANDOC_VERSION}/bin/pandoc)
|
|
elseif(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "^(x86_64|AMD64|amd64)$")
|
|
set(_pandoc_asset pandoc-${PANDOC_VERSION}-linux-amd64.tar.gz)
|
|
set(_pandoc_hash d0c90410e90204c9ca83b8539fac5c7aed01fd537207e4585849f8abc5df20b8)
|
|
set(_pandoc_exe pandoc-${PANDOC_VERSION}/bin/pandoc)
|
|
else()
|
|
message(FATAL_ERROR "No pinned pandoc ${PANDOC_VERSION} binary for ${CMAKE_HOST_SYSTEM_PROCESSOR}; install pandoc ${PANDOC_VERSION}")
|
|
endif()
|
|
endif()
|
|
|
|
# Shared cache: $PANDOC_CACHE_DIR, else the platform user cache directory.
|
|
if(DEFINED ENV{PANDOC_CACHE_DIR})
|
|
set(_pandoc_cache $ENV{PANDOC_CACHE_DIR})
|
|
elseif(WIN32)
|
|
set(_pandoc_cache $ENV{LOCALAPPDATA}/tracy/pandoc)
|
|
elseif(APPLE)
|
|
set(_pandoc_cache $ENV{HOME}/Library/Caches/tracy/pandoc)
|
|
elseif(DEFINED ENV{XDG_CACHE_HOME})
|
|
set(_pandoc_cache $ENV{XDG_CACHE_HOME}/tracy/pandoc)
|
|
else()
|
|
set(_pandoc_cache $ENV{HOME}/.cache/tracy/pandoc)
|
|
endif()
|
|
|
|
set(TRACY_PANDOC ${_pandoc_cache}/${_pandoc_exe})
|
|
if(NOT EXISTS ${TRACY_PANDOC})
|
|
# Concurrent configures on a cold cache can collide; worst case the
|
|
# hash check fails and a rerun succeeds.
|
|
message(STATUS "Downloading pandoc ${PANDOC_VERSION} (${_pandoc_asset})")
|
|
file(MAKE_DIRECTORY ${_pandoc_cache})
|
|
file(DOWNLOAD
|
|
https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/${_pandoc_asset}
|
|
${_pandoc_cache}/pandoc.archive
|
|
EXPECTED_HASH SHA256=${_pandoc_hash}
|
|
STATUS _pandoc_download)
|
|
list(GET _pandoc_download 0 _pandoc_download_rc)
|
|
if(NOT _pandoc_download_rc STREQUAL "0")
|
|
file(REMOVE ${_pandoc_cache}/pandoc.archive)
|
|
message(FATAL_ERROR "Failed to download pandoc ${PANDOC_VERSION}: ${_pandoc_download}")
|
|
endif()
|
|
file(ARCHIVE_EXTRACT
|
|
INPUT ${_pandoc_cache}/pandoc.archive
|
|
DESTINATION ${_pandoc_cache})
|
|
file(REMOVE ${_pandoc_cache}/pandoc.archive)
|
|
endif()
|
|
endif()
|