File: Open3DFetchISPCCompiler.cmake

package info (click to toggle)
open3d 0.19.0-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 83,496 kB
  • sloc: cpp: 206,543; python: 27,254; ansic: 8,356; javascript: 1,883; sh: 1,527; makefile: 259; xml: 69
file content (60 lines) | stat: -rw-r--r-- 2,304 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# open3d_fetch_ispc_compiler()
#
# Fetches the ISPC compiler and makes it available in the build.
# If a user-provided path is detected, fetching will be skipped.
#
# If fetched, the following variables will be defined:
# - $ENV{ISPC}
function(open3d_fetch_ispc_compiler)
    cmake_parse_arguments(PARSE_ARGV 0 ARG "" "" "")

    # Check correct usage
    if (ARG_UNPARSED_ARGUMENTS)
        message(FATAL_ERROR "Unknown arguments: ${ARG_UNPARSED_ARGUMENTS}")
    endif()

    if (ARG_KEYWORDS_MISSING_VALUES)
        message(FATAL_ERROR "Missing values for arguments: ${ARG_KEYWORDS_MISSING_VALUES}")
    endif()

    # Sanity check as this module is not called from 3rdparty
    if (NOT OPEN3D_THIRD_PARTY_DOWNLOAD_DIR)
        message(FATAL_ERROR "OPEN3D_THIRD_PARTY_DOWNLOAD_DIR not defined!")
    endif()

    if (DEFINED ENV{ISPC} OR DEFINED CMAKE_ISPC_COMPILER)
        message(STATUS "Using user-provided path to the ISPC compiler")
    else()
        message(STATUS "Fetching ISPC compiler")

        include(FetchContent)

        set(ISPC_VER 1.16.1)
        if (APPLE)
            set(ISPC_URL https://github.com/ispc/ispc/releases/download/v${ISPC_VER}/ispc-v${ISPC_VER}-macOS.tar.gz)
            set(ISPC_SHA256 7dbce602d97227a9603aabfae6dc3b3aa24d1cd44f0ccfb5ae47ecd4d68e988e)
        elseif (WIN32)
            set(ISPC_URL https://github.com/ispc/ispc/releases/download/v${ISPC_VER}/ispc-v${ISPC_VER}-windows.zip)
            set(ISPC_SHA256 b34de2c36aff2afaa56b669ea41f9e614a045564ca74fc0b138e17ccea4880b7)
        else()  # Linux
            set(ISPC_URL https://github.com/ispc/ispc/releases/download/v${ISPC_VER}/ispc-v${ISPC_VER}-linux.tar.gz)
            set(ISPC_SHA256 88db3d0461147c10ed81053a561ec87d3e14265227c03318f4fcaaadc831037f)
        endif()

        FetchContent_Declare(
            ext_ispc
            PREFIX ispc
            URL ${ISPC_URL}
            URL_HASH SHA256=${ISPC_SHA256}
            DOWNLOAD_DIR "${OPEN3D_THIRD_PARTY_DOWNLOAD_DIR}/ispc"
        )

        FetchContent_MakeAvailable(ext_ispc)
        if (WIN32)
            set(CMAKE_ISPC_COMPILER "${ext_ispc_SOURCE_DIR}/bin/ispc.exe" PARENT_SCOPE)
        else()  # Linux
            set(CMAKE_ISPC_COMPILER "${ext_ispc_SOURCE_DIR}/bin/ispc" PARENT_SCOPE)
        endif()

    endif()
endfunction()