2022-04-19 18:08:51 +02:00
|
|
|
diff -Naur ispc-1.17.0.org/CMakeLists.txt ispc-1.17.0/CMakeLists.txt
|
|
|
|
--- ispc-1.17.0.org/CMakeLists.txt 2022-01-15 01:35:15 -0700
|
|
|
|
+++ ispc-1.17.0/CMakeLists.txt 2022-02-12 12:44:24 -0700
|
2020-07-09 15:59:57 +02:00
|
|
|
@@ -36,8 +36,12 @@
|
|
|
|
cmake_minimum_required(VERSION 3.13)
|
|
|
|
|
|
|
|
if (UNIX)
|
|
|
|
- set(CMAKE_C_COMPILER "clang")
|
|
|
|
- set(CMAKE_CXX_COMPILER "clang++")
|
|
|
|
+ if (NOT CMAKE_C_COMPILER)
|
|
|
|
+ set(CMAKE_C_COMPILER "clang")
|
|
|
|
+ endif()
|
|
|
|
+ if (NOT CMAKE_CXX_COMPILER)
|
|
|
|
+ set(CMAKE_CXX_COMPILER "clang++")
|
|
|
|
+ endif()
|
|
|
|
endif()
|
|
|
|
|
|
|
|
set(PROJECT_NAME ispc)
|
2022-04-19 18:08:51 +02:00
|
|
|
@@ -443,7 +447,7 @@
|
|
|
|
|
|
|
|
# Include directories
|
|
|
|
target_include_directories(${PROJECT_NAME} PRIVATE
|
|
|
|
- ${LLVM_INCLUDE_DIRS}
|
|
|
|
+ ${LLVM_INCLUDE_DIRS} ${CLANG_INCLUDE_DIRS}
|
|
|
|
${XE_DEPS_DIR}/include
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR})
|
|
|
|
@@ -507,7 +511,7 @@
|
|
|
|
|
|
|
|
# Link against Clang libraries
|
|
|
|
foreach(clangLib ${CLANG_LIBRARY_LIST})
|
|
|
|
- find_library(${clangLib}Path NAMES ${clangLib} HINTS ${LLVM_LIBRARY_DIRS})
|
|
|
|
+ find_library(${clangLib}Path NAMES ${clangLib} HINTS ${LLVM_LIBRARY_DIRS} ${CLANG_LIBRARY_DIR})
|
|
|
|
list(APPEND CLANG_LIBRARY_FULL_PATH_LIST ${${clangLib}Path})
|
|
|
|
endforeach()
|
|
|
|
target_link_libraries(${PROJECT_NAME} ${CLANG_LIBRARY_FULL_PATH_LIST})
|
|
|
|
@@ -546,6 +550,29 @@
|
2020-07-09 15:59:57 +02:00
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
|
|
|
+# Link against libstdc++.a which must be provided to the linker after
|
|
|
|
+# LLVM and CLang libraries.
|
|
|
|
+# This is needed because some of LLVM/CLang dependencies are using
|
|
|
|
+# std::make_shared, which is defined in one of those:
|
|
|
|
+# - libclang-cpp.so
|
|
|
|
+# - libstdc++.a
|
|
|
|
+# Using the former one is tricky because then generated binary depends
|
|
|
|
+# on a library which is outside of the LD_LIBRARY_PATH.
|
|
|
|
+#
|
|
|
|
+# Hence, using C++ implementation from G++ which seems to work just fine.
|
|
|
|
+# In fact, from investigation seems that libclang-cpp.so itself is pulling
|
|
|
|
+# std::_Sp_make_shared_tag from G++'s libstdc++.a.
|
|
|
|
+if(UNIX AND NOT APPLE)
|
|
|
|
+ execute_process(
|
|
|
|
+ COMMAND g++ --print-file-name libstdc++.a
|
|
|
|
+ OUTPUT_VARIABLE GCC_LIBSTDCXX_A
|
|
|
|
+ OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
|
|
+ )
|
|
|
|
+ if(GCC_LIBSTDCXX_A AND EXISTS ${GCC_LIBSTDCXX_A})
|
|
|
|
+ target_link_libraries(${PROJECT_NAME} ${GCC_LIBSTDCXX_A})
|
|
|
|
+ endif()
|
|
|
|
+endif()
|
|
|
|
+
|
|
|
|
# Build target for utility checking host ISA
|
|
|
|
if (ISPC_INCLUDE_UTILS)
|
|
|
|
add_executable(check_isa "")
|
2022-04-19 18:08:51 +02:00
|
|
|
diff -Naur ispc-1.17.0.org/cmake/GenerateBuiltins.cmake ispc-1.17.0/cmake/GenerateBuiltins.cmake
|
|
|
|
--- ispc-1.17.0.org/cmake/GenerateBuiltins.cmake 2022-01-15 01:35:15 -0700
|
|
|
|
+++ ispc-1.17.0/cmake/GenerateBuiltins.cmake 2022-02-12 12:44:24 -0700
|
|
|
|
@@ -124,6 +124,8 @@
|
|
|
|
|
|
|
|
if ("${bit}" STREQUAL "32" AND ${arch} STREQUAL "x86")
|
|
|
|
set(target_arch "i686")
|
|
|
|
+ # Blender: disable 32bit due to build issues on Linux and being unnecessary.
|
|
|
|
+ set(SKIP ON)
|
|
|
|
elseif ("${bit}" STREQUAL "64" AND ${arch} STREQUAL "x86")
|
|
|
|
set(target_arch "x86_64")
|
|
|
|
elseif ("${bit}" STREQUAL "32" AND ${arch} STREQUAL "arm")
|