Welcome to mirror list, hosted at ThFree Co, Russian Federation.

ispc.diff « patches « build_environment « build_files - git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 3ab67356e1906278fbf0555f80e4bf0d13e07035 (plain)
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
diff -Naur external_ispc/CMakeLists.txt external_ispc_fixed/CMakeLists.txt
--- external_ispc/CMakeLists.txt	2020-04-23 17:29:06 -0600
+++ external_ispc_fixed/CMakeLists.txt	2020-05-05 09:01:09 -0600
@@ -389,7 +389,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})
diff -Naur orig/CMakeLists.txt external_ispc/CMakeLists.txt
--- orig/CMakeLists.txt 2020-05-05 09:19:11 -0600
+++ external_ispc/CMakeLists.txt        2020-05-05 09:26:44 -0600
@@ -333,7 +333,7 @@

 # Include directories
 target_include_directories(${PROJECT_NAME} PRIVATE
-                           ${LLVM_INCLUDE_DIRS}
+                           ${LLVM_INCLUDE_DIRS} ${CLANG_INCLUDE_DIRS}
                            ${GENX_DEPS_DIR}/include
                            ${CMAKE_CURRENT_SOURCE_DIR}/src
                            ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR})
diff -Naur orig/cmake/GenerateBuiltins.cmake.txt external_ispc/cmake/GenerateBuiltins.cmake.txt
+++ orig/cmake/GenerateBuiltins.cmake	2020-05-25 13:32:40.830803821 +0200
+++ external_ispc/cmake/GenerateBuiltins.cmake	2020-05-25 13:32:40.830803821 +0200
@@ -97,6 +97,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")
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 46a8db8..f53beef 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -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)
@@ -412,6 +416,29 @@ else()
     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 "")