From 5cc21d66b3ce5054aca9d056c6ddf6e626d40db0 Mon Sep 17 00:00:00 2001 From: Bo Qiao Date: Fri, 22 Apr 2022 11:58:24 +0800 Subject: [PATCH 01/16] Move LLVM Cmake to its own dir --- CMakeLists.txt | 10 +--------- taichi/runtime/llvm/CMakeLists.txt | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 9 deletions(-) create mode 100644 taichi/runtime/llvm/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 474f8ce90348b..e07696fc883c2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -149,15 +149,7 @@ if (${CLANG_VERSION_MAJOR} VERSION_GREATER ${CLANG_HIGHEST_VERSION}) endif() endif() -# Build llvm-runtime for host arch and cuda (if available) -foreach(arch IN LISTS HOST_ARCH CUDA_ARCH) - add_custom_target( - "generate_llvm_runtime_${arch}" - COMMAND ${CLANG_EXECUTABLE} ${CLANG_OSX_FLAGS} -c runtime.cpp -o "runtime_${arch}.bc" -fno-exceptions -emit-llvm -std=c++17 -D "ARCH_${arch}" -I ${PROJECT_SOURCE_DIR}; - WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}/taichi/runtime/llvm" - ) - add_dependencies(${CORE_LIBRARY_NAME} "generate_llvm_runtime_${arch}") -endforeach() +add_subdirectory(taichi/runtime/llvm) configure_file(taichi/common/version.h.in ${CMAKE_SOURCE_DIR}/taichi/common/version.h) configure_file(taichi/common/commit_hash.h.in ${CMAKE_SOURCE_DIR}/taichi/common/commit_hash.h) diff --git a/taichi/runtime/llvm/CMakeLists.txt b/taichi/runtime/llvm/CMakeLists.txt new file mode 100644 index 0000000000000..175c6f55e6120 --- /dev/null +++ b/taichi/runtime/llvm/CMakeLists.txt @@ -0,0 +1,18 @@ +# ./taichi/runtime/llvm/CMakeLists.txt + +function(COMPILE_LLVM_RUNTIME rtm_arch) + message(STATUS "Compiling LLVM byte code file for arch ${rtm_arch}") + # Keep this for now, as .bc need to be generated. + add_custom_target( + "generate_llvm_runtime_${rtm_arch}" + COMMAND ${CLANG_EXECUTABLE} ${CLANG_OSX_FLAGS} -c runtime.cpp -o "runtime_${rtm_arch}.bc" -fno-exceptions -emit-llvm -std=c++17 -D "ARCH_${rtm_arch}" -I ${PROJECT_SOURCE_DIR}; + # TODO, it's better to avoid polluting the source dir, keep in build + WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}/taichi/runtime/llvm" + ) + add_dependencies(${CORE_LIBRARY_NAME} "generate_llvm_runtime_${rtm_arch}") +endfunction() + +# Build llvm-runtime for host arch and cuda (if available) +foreach(arch IN LISTS HOST_ARCH CUDA_ARCH) + compile_llvm_runtime(${arch}) +endforeach() From 225a2ddc3c59aa092137bf8f5b145a34338ab820 Mon Sep 17 00:00:00 2001 From: Bo Qiao Date: Fri, 22 Apr 2022 12:02:09 +0800 Subject: [PATCH 02/16] Suppress warning from submodules --- cmake/TaichiCore.cmake | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cmake/TaichiCore.cmake b/cmake/TaichiCore.cmake index 9bc218d9cc9ea..f973c3b0c144d 100644 --- a/cmake/TaichiCore.cmake +++ b/cmake/TaichiCore.cmake @@ -16,6 +16,9 @@ option(TI_EMSCRIPTENED "Build using emscripten" OFF) # projects. set(CMAKE_CXX_VISIBILITY_PRESET hidden) set(CMAKE_VISIBILITY_INLINES_HIDDEN ON) +# Suppress warnings from submodules introduced by the above symbol visibility change +set(CMAKE_POLICY_DEFAULT_CMP0063 NEW) +set(CMAKE_POLICY_DEFAULT_CMP0077 NEW) if(ANDROID) set(TI_WITH_VULKAN ON) From b98d02df81372073b9b5fef14f4fe7ee68b3c1e0 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 22 Apr 2022 05:31:45 +0000 Subject: [PATCH 03/16] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- taichi/runtime/llvm/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/taichi/runtime/llvm/CMakeLists.txt b/taichi/runtime/llvm/CMakeLists.txt index 175c6f55e6120..a0b5a4caf9c0e 100644 --- a/taichi/runtime/llvm/CMakeLists.txt +++ b/taichi/runtime/llvm/CMakeLists.txt @@ -6,7 +6,7 @@ function(COMPILE_LLVM_RUNTIME rtm_arch) add_custom_target( "generate_llvm_runtime_${rtm_arch}" COMMAND ${CLANG_EXECUTABLE} ${CLANG_OSX_FLAGS} -c runtime.cpp -o "runtime_${rtm_arch}.bc" -fno-exceptions -emit-llvm -std=c++17 -D "ARCH_${rtm_arch}" -I ${PROJECT_SOURCE_DIR}; - # TODO, it's better to avoid polluting the source dir, keep in build + # TODO, it's better to avoid polluting the source dir, keep in build WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}/taichi/runtime/llvm" ) add_dependencies(${CORE_LIBRARY_NAME} "generate_llvm_runtime_${rtm_arch}") From 9424bd6bbeeba254c082a04a15b8cfbad032bf88 Mon Sep 17 00:00:00 2001 From: Bo Qiao Date: Fri, 22 Apr 2022 13:38:43 +0800 Subject: [PATCH 04/16] Use current source dir --- taichi/runtime/llvm/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/taichi/runtime/llvm/CMakeLists.txt b/taichi/runtime/llvm/CMakeLists.txt index 175c6f55e6120..33103d135261c 100644 --- a/taichi/runtime/llvm/CMakeLists.txt +++ b/taichi/runtime/llvm/CMakeLists.txt @@ -7,7 +7,7 @@ function(COMPILE_LLVM_RUNTIME rtm_arch) "generate_llvm_runtime_${rtm_arch}" COMMAND ${CLANG_EXECUTABLE} ${CLANG_OSX_FLAGS} -c runtime.cpp -o "runtime_${rtm_arch}.bc" -fno-exceptions -emit-llvm -std=c++17 -D "ARCH_${rtm_arch}" -I ${PROJECT_SOURCE_DIR}; # TODO, it's better to avoid polluting the source dir, keep in build - WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}/taichi/runtime/llvm" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" ) add_dependencies(${CORE_LIBRARY_NAME} "generate_llvm_runtime_${rtm_arch}") endfunction() From b27d1fa07e072d45785e0165875d221cb1b412ce Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 22 Apr 2022 05:41:03 +0000 Subject: [PATCH 05/16] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- taichi/runtime/llvm/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/taichi/runtime/llvm/CMakeLists.txt b/taichi/runtime/llvm/CMakeLists.txt index 33103d135261c..efebcc93fa660 100644 --- a/taichi/runtime/llvm/CMakeLists.txt +++ b/taichi/runtime/llvm/CMakeLists.txt @@ -6,7 +6,7 @@ function(COMPILE_LLVM_RUNTIME rtm_arch) add_custom_target( "generate_llvm_runtime_${rtm_arch}" COMMAND ${CLANG_EXECUTABLE} ${CLANG_OSX_FLAGS} -c runtime.cpp -o "runtime_${rtm_arch}.bc" -fno-exceptions -emit-llvm -std=c++17 -D "ARCH_${rtm_arch}" -I ${PROJECT_SOURCE_DIR}; - # TODO, it's better to avoid polluting the source dir, keep in build + # TODO, it's better to avoid polluting the source dir, keep in build WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" ) add_dependencies(${CORE_LIBRARY_NAME} "generate_llvm_runtime_${rtm_arch}") From 92a757c01cde42915ddb9efa670dbf293c3f1989 Mon Sep 17 00:00:00 2001 From: Bo Qiao Date: Tue, 26 Apr 2022 17:16:00 +0800 Subject: [PATCH 06/16] Separate Vulkan runtime files from codegen --- cmake/TaichiCore.cmake | 10 +++++----- taichi/backends/dx/dx_program.h | 2 +- taichi/backends/vulkan/aot_module_builder_impl.h | 2 +- taichi/backends/vulkan/aot_module_loader_impl.cpp | 2 +- taichi/backends/vulkan/aot_module_loader_impl.h | 2 +- taichi/backends/vulkan/snode_tree_manager.cpp | 2 +- taichi/backends/vulkan/vulkan_program.h | 2 +- taichi/python/export_misc.cpp | 2 +- taichi/runtime/vulkan/CMakeLists.txt | 13 +++++++++++++ taichi/{backends => runtime}/vulkan/runtime.cpp | 2 +- taichi/{backends => runtime}/vulkan/runtime.h | 0 11 files changed, 26 insertions(+), 13 deletions(-) create mode 100644 taichi/runtime/vulkan/CMakeLists.txt rename taichi/{backends => runtime}/vulkan/runtime.cpp (99%) rename taichi/{backends => runtime}/vulkan/runtime.h (100%) diff --git a/cmake/TaichiCore.cmake b/cmake/TaichiCore.cmake index f973c3b0c144d..2aa35249a46ed 100644 --- a/cmake/TaichiCore.cmake +++ b/cmake/TaichiCore.cmake @@ -142,10 +142,6 @@ file(GLOB TAICHI_OPENGL_REQUIRED_SOURCE "taichi/backends/opengl/codegen_opengl.*" "taichi/backends/opengl/struct_opengl.*" ) -file(GLOB TAICHI_VULKAN_REQUIRED_SOURCE - "taichi/backends/vulkan/runtime.h" - "taichi/backends/vulkan/runtime.cpp" -) list(REMOVE_ITEM TAICHI_CORE_SOURCE ${TAICHI_BACKEND_SOURCE}) @@ -200,7 +196,7 @@ if (TI_WITH_VULKAN) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DTI_WITH_VULKAN") list(APPEND TAICHI_CORE_SOURCE ${TAICHI_VULKAN_SOURCE}) endif() -list(APPEND TAICHI_CORE_SOURCE ${TAICHI_VULKAN_REQUIRED_SOURCE}) + if (TI_WITH_DX11) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DTI_WITH_DX11") @@ -388,8 +384,12 @@ if (TI_WITH_VULKAN) configure_file(${MOLTEN_VK} ${CMAKE_BINARY_DIR}/libMoltenVK.dylib COPYONLY) message(STATUS "MoltenVK library ${MOLTEN_VK}") endif() + + add_subdirectory(taichi/runtime/vulkan) + target_link_libraries(${CORE_LIBRARY_NAME} vulkan_runtime) endif () + # Optional dependencies if (APPLE) diff --git a/taichi/backends/dx/dx_program.h b/taichi/backends/dx/dx_program.h index 4974139147b0c..493cb5c62c69a 100644 --- a/taichi/backends/dx/dx_program.h +++ b/taichi/backends/dx/dx_program.h @@ -3,7 +3,7 @@ #ifdef TI_WITH_DX11 #include "taichi/backends/dx/dx_device.h" -#include "taichi/backends/vulkan/runtime.h" +#include "taichi/runtime/vulkan/runtime.h" #include "taichi/backends/vulkan/snode_tree_manager.h" #include "taichi/program/program_impl.h" diff --git a/taichi/backends/vulkan/aot_module_builder_impl.h b/taichi/backends/vulkan/aot_module_builder_impl.h index bbd6b40e4df48..0accfcc203343 100644 --- a/taichi/backends/vulkan/aot_module_builder_impl.h +++ b/taichi/backends/vulkan/aot_module_builder_impl.h @@ -5,7 +5,7 @@ #include "taichi/aot/module_builder.h" #include "taichi/backends/vulkan/aot_utils.h" -#include "taichi/backends/vulkan/runtime.h" +#include "taichi/runtime/vulkan/runtime.h" #include "taichi/codegen/spirv/snode_struct_compiler.h" #include "taichi/codegen/spirv/kernel_utils.h" diff --git a/taichi/backends/vulkan/aot_module_loader_impl.cpp b/taichi/backends/vulkan/aot_module_loader_impl.cpp index a773f71f37def..5f87eb4fc9ca8 100644 --- a/taichi/backends/vulkan/aot_module_loader_impl.cpp +++ b/taichi/backends/vulkan/aot_module_loader_impl.cpp @@ -3,7 +3,7 @@ #include #include -#include "taichi/backends/vulkan/runtime.h" +#include "taichi/runtime/vulkan/runtime.h" namespace taichi { namespace lang { diff --git a/taichi/backends/vulkan/aot_module_loader_impl.h b/taichi/backends/vulkan/aot_module_loader_impl.h index 7d32d991f2e89..b188281cb749d 100644 --- a/taichi/backends/vulkan/aot_module_loader_impl.h +++ b/taichi/backends/vulkan/aot_module_loader_impl.h @@ -5,7 +5,7 @@ #include #include "taichi/backends/vulkan/aot_utils.h" -#include "taichi/backends/vulkan/runtime.h" +#include "taichi/runtime/vulkan/runtime.h" #include "taichi/codegen/spirv/kernel_utils.h" #include "taichi/aot/module_loader.h" diff --git a/taichi/backends/vulkan/snode_tree_manager.cpp b/taichi/backends/vulkan/snode_tree_manager.cpp index 0bfb6d2f01edd..b7d4816ae42d9 100644 --- a/taichi/backends/vulkan/snode_tree_manager.cpp +++ b/taichi/backends/vulkan/snode_tree_manager.cpp @@ -1,6 +1,6 @@ #include "taichi/backends/vulkan/snode_tree_manager.h" -#include "taichi/backends/vulkan/runtime.h" +#include "taichi/runtime/vulkan/runtime.h" namespace taichi { namespace lang { diff --git a/taichi/backends/vulkan/vulkan_program.h b/taichi/backends/vulkan/vulkan_program.h index a94f2abbb2ba7..b3b33348c525f 100644 --- a/taichi/backends/vulkan/vulkan_program.h +++ b/taichi/backends/vulkan/vulkan_program.h @@ -6,7 +6,7 @@ #include "taichi/backends/vulkan/vulkan_device_creator.h" #include "taichi/backends/vulkan/vulkan_utils.h" #include "taichi/backends/vulkan/vulkan_loader.h" -#include "taichi/backends/vulkan/runtime.h" +#include "taichi/runtime/vulkan/runtime.h" #include "taichi/backends/vulkan/snode_tree_manager.h" #include "taichi/backends/vulkan/vulkan_device.h" #include "vk_mem_alloc.h" diff --git a/taichi/python/export_misc.cpp b/taichi/python/export_misc.cpp index e75df0b88d856..a1abb389ab782 100644 --- a/taichi/python/export_misc.cpp +++ b/taichi/python/export_misc.cpp @@ -5,7 +5,7 @@ #include "taichi/backends/metal/api.h" #include "taichi/backends/opengl/opengl_api.h" -#include "taichi/backends/vulkan/runtime.h" +#include "taichi/runtime/vulkan/runtime.h" #include "taichi/backends/dx/dx_api.h" #include "taichi/common/core.h" #include "taichi/common/interface.h" diff --git a/taichi/runtime/vulkan/CMakeLists.txt b/taichi/runtime/vulkan/CMakeLists.txt new file mode 100644 index 0000000000000..8b676eeee4dd1 --- /dev/null +++ b/taichi/runtime/vulkan/CMakeLists.txt @@ -0,0 +1,13 @@ +# ./taichi/runtime/vulkan/CMakeLists.txt + +add_library(vulkan_runtime) +target_sources(vulkan_runtime + PRIVATE + runtime.cpp + ) +target_include_directories(vulkan_runtime + PRIVATE + ${PROJECT_SOURCE_DIR}/external/SPIRV-Tools/include + ${PROJECT_SOURCE_DIR}/external/eigen + ${PROJECT_SOURCE_DIR}/external/FP16/include + ) diff --git a/taichi/backends/vulkan/runtime.cpp b/taichi/runtime/vulkan/runtime.cpp similarity index 99% rename from taichi/backends/vulkan/runtime.cpp rename to taichi/runtime/vulkan/runtime.cpp index 7da6b181719b6..82478b05bf427 100644 --- a/taichi/backends/vulkan/runtime.cpp +++ b/taichi/runtime/vulkan/runtime.cpp @@ -1,4 +1,4 @@ -#include "taichi/backends/vulkan/runtime.h" +#include "taichi/runtime/vulkan/runtime.h" #include "taichi/program/program.h" #include diff --git a/taichi/backends/vulkan/runtime.h b/taichi/runtime/vulkan/runtime.h similarity index 100% rename from taichi/backends/vulkan/runtime.h rename to taichi/runtime/vulkan/runtime.h From 314f2609cb878b282a59a54f135dc6bbdb8ca9d5 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 26 Apr 2022 09:17:15 +0000 Subject: [PATCH 07/16] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- taichi/runtime/vulkan/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/taichi/runtime/vulkan/CMakeLists.txt b/taichi/runtime/vulkan/CMakeLists.txt index 8b676eeee4dd1..00ecee7a09caf 100644 --- a/taichi/runtime/vulkan/CMakeLists.txt +++ b/taichi/runtime/vulkan/CMakeLists.txt @@ -1,8 +1,8 @@ # ./taichi/runtime/vulkan/CMakeLists.txt add_library(vulkan_runtime) -target_sources(vulkan_runtime - PRIVATE +target_sources(vulkan_runtime + PRIVATE runtime.cpp ) target_include_directories(vulkan_runtime From f96dde4762a2d31048024e6aaa5a2409e3eb7690 Mon Sep 17 00:00:00 2001 From: Bo Qiao Date: Tue, 26 Apr 2022 22:53:45 +0800 Subject: [PATCH 08/16] Use keywords instead of plain target_link_libraries --- CMakeLists.txt | 2 +- cmake/TaichiCore.cmake | 60 +++++++++++++++++++++++------------- cmake/TaichiExamples.cmake | 2 +- cmake/TaichiExportCore.cmake | 2 +- cmake/TaichiTests.cmake | 4 +-- 5 files changed, 43 insertions(+), 27 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 433c494f08dea..14cccb0987047 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ # The Taichi Programming Language #********************************************************************* -cmake_minimum_required(VERSION 3.12) +cmake_minimum_required(VERSION 3.13) project(taichi) diff --git a/cmake/TaichiCore.cmake b/cmake/TaichiCore.cmake index 2aa35249a46ed..9d17ea256738b 100644 --- a/cmake/TaichiCore.cmake +++ b/cmake/TaichiCore.cmake @@ -245,12 +245,15 @@ add_library(${CORE_LIBRARY_NAME} OBJECT ${TAICHI_CORE_SOURCE}) if (APPLE) # Ask OS X to minic Linux dynamic linking behavior - target_link_libraries(${CORE_LIBRARY_NAME} "-undefined dynamic_lookup") + set_target_properties(${CORE_LIBRARY_NAME} + PROPERTIES INTERFACE_LINK_LIBRARIES "-undefined dynamic_lookup" + ) endif() include_directories(${CMAKE_SOURCE_DIR}) include_directories(external/include) include_directories(external/spdlog/include) +include_directories(external/SPIRV-Tools/include) include_directories(external/PicoSHA2) if (TI_WITH_OPENGL) target_include_directories(${CORE_LIBRARY_NAME} PRIVATE external/glad/include) @@ -271,7 +274,7 @@ if (TI_WITH_OPENGL OR TI_WITH_VULKAN AND NOT ANDROID AND NOT TI_EMSCRIPTENED) message("Building with GLFW") add_subdirectory(external/glfw) - target_link_libraries(${LIBRARY_NAME} glfw) + target_link_libraries(${LIBRARY_NAME} PRIVATE glfw) target_include_directories(${CORE_LIBRARY_NAME} PRIVATE external/glfw/include) endif() @@ -313,16 +316,16 @@ if(TI_WITH_LLVM) ipo Analysis ) - target_link_libraries(${LIBRARY_NAME} ${llvm_libs}) + target_link_libraries(${LIBRARY_NAME} PRIVATE ${llvm_libs}) if (APPLE AND "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "arm64") llvm_map_components_to_libnames(llvm_aarch64_libs AArch64) - target_link_libraries(${LIBRARY_NAME} ${llvm_aarch64_libs}) + target_link_libraries(${LIBRARY_NAME} PRIVATE ${llvm_aarch64_libs}) endif() if (TI_WITH_CUDA) llvm_map_components_to_libnames(llvm_ptx_libs NVPTX) - target_link_libraries(${LIBRARY_NAME} ${llvm_ptx_libs}) + target_link_libraries(${LIBRARY_NAME} PRIVATE ${llvm_ptx_libs}) endif() endif() @@ -336,7 +339,7 @@ if (TI_WITH_CUDA_TOOLKIT) include_directories($ENV{CUDA_TOOLKIT_ROOT_DIR}/include) link_directories($ENV{CUDA_TOOLKIT_ROOT_DIR}/lib64) #libraries for cuda kernel profiler CuptiToolkit - target_link_libraries(${CORE_LIBRARY_NAME} cupti nvperf_host) + target_link_libraries(${CORE_LIBRARY_NAME} PRIVATE cupti nvperf_host) endif() else() message(STATUS "TI_WITH_CUDA_TOOLKIT = OFF") @@ -346,13 +349,13 @@ if (TI_WITH_OPENGL) set(SPIRV_CROSS_CLI false) add_subdirectory(external/SPIRV-Cross) target_include_directories(${CORE_LIBRARY_NAME} PRIVATE external/SPIRV-Cross) - target_link_libraries(${CORE_LIBRARY_NAME} spirv-cross-glsl spirv-cross-core) + target_link_libraries(${CORE_LIBRARY_NAME} PRIVATE spirv-cross-glsl spirv-cross-core) endif() if (TI_WITH_DX11) set(SPIRV_CROSS_CLI false) #target_include_directories(${CORE_LIBRARY_NAME} PRIVATE external/SPIRV-Cross) - target_link_libraries(${CORE_LIBRARY_NAME} spirv-cross-hlsl spirv-cross-core) + target_link_libraries(${CORE_LIBRARY_NAME} PRIVATE spirv-cross-hlsl spirv-cross-core) endif() # SPIR-V codegen is always there, regardless of Vulkan @@ -361,7 +364,7 @@ set(SPIRV-Headers_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/SPIRV-Headers) add_subdirectory(external/SPIRV-Tools) # NOTE: SPIRV-Tools-opt must come before SPIRV-Tools # https://github.com/KhronosGroup/SPIRV-Tools/issues/1569#issuecomment-390250792 -target_link_libraries(${CORE_LIBRARY_NAME} SPIRV-Tools-opt ${SPIRV_TOOLS}) +target_link_libraries(${CORE_LIBRARY_NAME} PRIVATE SPIRV-Tools-opt ${SPIRV_TOOLS}) if (TI_WITH_VULKAN) include_directories(SYSTEM external/Vulkan-Headers/include) @@ -376,7 +379,7 @@ if (TI_WITH_VULKAN) # shaderc requires pthread set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads REQUIRED) - target_link_libraries(${CORE_LIBRARY_NAME} Threads::Threads) + target_link_libraries(${CORE_LIBRARY_NAME} PRIVATE Threads::Threads) endif() if (APPLE) @@ -386,44 +389,57 @@ if (TI_WITH_VULKAN) endif() add_subdirectory(taichi/runtime/vulkan) - target_link_libraries(${CORE_LIBRARY_NAME} vulkan_runtime) + target_link_libraries(${CORE_LIBRARY_NAME} PRIVATE vulkan_runtime) endif () # Optional dependencies if (APPLE) - target_link_libraries(${CORE_LIBRARY_NAME} "-framework Cocoa -framework Metal") + find_library(COCOA Cocoa) + if (NOT COCOA) + message(FATAL_ERROR "Cocoa not found") + endif() + find_library(METAL Metal) + if (NOT METAL) + message(FATAL_ERROR "Metal not found") + endif() + target_link_libraries(${CORE_LIBRARY_NAME} + PRIVATE + ${COCOA} + ${METAL} + ) endif () if (NOT WIN32) # Android has a custom toolchain so pthread is not available and should # link against other libraries as well for logcat and internal features. if (ANDROID) - target_link_libraries(${CORE_LIBRARY_NAME} android log) + target_link_libraries(${CORE_LIBRARY_NAME} PRIVATE android log) else() - target_link_libraries(${CORE_LIBRARY_NAME} pthread stdc++) + target_link_libraries(${CORE_LIBRARY_NAME} PRIVATE pthread stdc++) endif() if (UNIX AND NOT ${CMAKE_SYSTEM_NAME} MATCHES "Linux") # OS X or BSD else() # Linux - target_link_libraries(${CORE_LIBRARY_NAME} stdc++fs X11) - target_link_libraries(${CORE_LIBRARY_NAME} -static-libgcc -static-libstdc++) + target_link_libraries(${CORE_LIBRARY_NAME} PRIVATE stdc++fs X11) + + target_link_options(${CORE_LIBRARY_NAME} PRIVATE -static-libgcc -static-libstdc++) if (${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "x86_64") # Avoid glibc dependencies if (TI_WITH_VULKAN) - target_link_libraries(${CORE_LIBRARY_NAME} -Wl,--wrap=log2f) + target_link_options(${CORE_LIBRARY_NAME} PRIVATE -Wl,--wrap=log2f) else() # Enforce compatibility with manylinux2014 - target_link_libraries(${CORE_LIBRARY_NAME} -Wl,--wrap=log2f -Wl,--wrap=exp2 -Wl,--wrap=log2 -Wl,--wrap=logf -Wl,--wrap=powf -Wl,--wrap=exp -Wl,--wrap=log -Wl,--wrap=pow) + target_link_options(${CORE_LIBRARY_NAME} PRIVATE -Wl,--wrap=log2f -Wl,--wrap=exp2 -Wl,--wrap=log2 -Wl,--wrap=logf -Wl,--wrap=powf -Wl,--wrap=exp -Wl,--wrap=log -Wl,--wrap=pow) endif() endif() endif() else() # windows - target_link_libraries(${CORE_LIBRARY_NAME} Winmm) + target_link_libraries(${CORE_LIBRARY_NAME} PRIVATE Winmm) endif () foreach (source IN LISTS TAICHI_CORE_SOURCE) @@ -451,7 +467,7 @@ if(NOT TI_EMSCRIPTENED) endif() # It is actually possible to link with an OBJECT library # https://cmake.org/cmake/help/v3.13/command/target_link_libraries.html?highlight=target_link_libraries#linking-object-libraries - target_link_libraries(${CORE_WITH_PYBIND_LIBRARY_NAME} PUBLIC ${CORE_LIBRARY_NAME}) + target_link_libraries(${CORE_WITH_PYBIND_LIBRARY_NAME} PRIVATE ${CORE_LIBRARY_NAME}) # These commands should apply to the DLL that is loaded from python, not the OBJECT library. if (MSVC) @@ -467,7 +483,7 @@ endif() if(TI_EMSCRIPTENED) set(CORE_WITH_EMBIND_LIBRARY_NAME taichi) add_executable(${CORE_WITH_EMBIND_LIBRARY_NAME} ${TAICHI_EMBIND_SOURCE}) - target_link_libraries(${CORE_WITH_EMBIND_LIBRARY_NAME} PUBLIC ${CORE_LIBRARY_NAME}) + target_link_libraries(${CORE_WITH_EMBIND_LIBRARY_NAME} PRIVATE ${CORE_LIBRARY_NAME}) target_compile_options(${CORE_WITH_EMBIND_LIBRARY_NAME} PRIVATE "-Oz") # target_compile_options(${CORE_LIBRARY_NAME} PRIVATE "-Oz") set_target_properties(${CORE_LIBRARY_NAME} PROPERTIES LINK_FLAGS "-s ERROR_ON_UNDEFINED_SYMBOLS=0 -s ASSERTIONS=1") @@ -487,6 +503,6 @@ else() include_directories(external/glfw/include) add_library(imgui ${IMGUI_DIR}/backends/imgui_impl_glfw.cpp ${IMGUI_DIR}/backends/imgui_impl_vulkan.cpp ${IMGUI_DIR}/imgui.cpp ${IMGUI_DIR}/imgui_draw.cpp ${IMGUI_DIR}/imgui_tables.cpp ${IMGUI_DIR}/imgui_widgets.cpp) endif() - target_link_libraries(${CORE_LIBRARY_NAME} imgui) + target_link_libraries(${CORE_LIBRARY_NAME} PRIVATE imgui) endif() diff --git a/cmake/TaichiExamples.cmake b/cmake/TaichiExamples.cmake index 742119013d623..3ab7d0084a1f3 100644 --- a/cmake/TaichiExamples.cmake +++ b/cmake/TaichiExamples.cmake @@ -25,6 +25,6 @@ if (WIN32) set_target_properties(${EXAMPLES_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${EXAMPLES_OUTPUT_DIR}) set_target_properties(${EXAMPLES_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${EXAMPLES_OUTPUT_DIR}) endif() -target_link_libraries(${EXAMPLES_NAME} taichi_isolated_core) +target_link_libraries(${EXAMPLES_NAME} PRIVATE taichi_isolated_core) endif() diff --git a/cmake/TaichiExportCore.cmake b/cmake/TaichiExportCore.cmake index c7fc0335948bf..d94a14a7d250e 100644 --- a/cmake/TaichiExportCore.cmake +++ b/cmake/TaichiExportCore.cmake @@ -3,4 +3,4 @@ cmake_minimum_required(VERSION 3.0) set(TAICHI_EXPORT_CORE_NAME taichi_export_core) add_library(${TAICHI_EXPORT_CORE_NAME} SHARED) -target_link_libraries(${TAICHI_EXPORT_CORE_NAME} taichi_isolated_core) +target_link_libraries(${TAICHI_EXPORT_CORE_NAME} PRIVATE taichi_isolated_core) diff --git a/cmake/TaichiTests.cmake b/cmake/TaichiTests.cmake index 2b6da207c82ff..5f6adb66d1c07 100644 --- a/cmake/TaichiTests.cmake +++ b/cmake/TaichiTests.cmake @@ -35,7 +35,7 @@ if (WIN32) set_target_properties(${TESTS_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${TESTS_OUTPUT_DIR}) set_target_properties(${TESTS_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${TESTS_OUTPUT_DIR}) endif() -target_link_libraries(${TESTS_NAME} taichi_isolated_core) -target_link_libraries(${TESTS_NAME} gtest_main) +target_link_libraries(${TESTS_NAME} PRIVATE taichi_isolated_core) +target_link_libraries(${TESTS_NAME} PRIVATE gtest_main) add_test(NAME ${TESTS_NAME} COMMAND ${TESTS_NAME}) From 1c19cb79b1af0d3eb53572a4e01673bbe82855c9 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 26 Apr 2022 15:04:13 +0000 Subject: [PATCH 09/16] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- cmake/TaichiCore.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/TaichiCore.cmake b/cmake/TaichiCore.cmake index 9d17ea256738b..613fe7aa95628 100644 --- a/cmake/TaichiCore.cmake +++ b/cmake/TaichiCore.cmake @@ -245,7 +245,7 @@ add_library(${CORE_LIBRARY_NAME} OBJECT ${TAICHI_CORE_SOURCE}) if (APPLE) # Ask OS X to minic Linux dynamic linking behavior - set_target_properties(${CORE_LIBRARY_NAME} + set_target_properties(${CORE_LIBRARY_NAME} PROPERTIES INTERFACE_LINK_LIBRARIES "-undefined dynamic_lookup" ) endif() From 5d6388f6124fd8f01914d713d568d53723062c21 Mon Sep 17 00:00:00 2001 From: Bo Qiao Date: Fri, 29 Apr 2022 11:41:51 +0800 Subject: [PATCH 10/16] Separate opengl runtime files from backend --- cmake/TaichiCore.cmake | 4 ++++ taichi/backends/opengl/codegen_opengl.cpp | 4 ++-- taichi/backends/opengl/codegen_opengl.h | 2 +- taichi/backends/opengl/opengl_device.cpp | 2 +- taichi/backends/opengl/opengl_program.h | 4 ++-- taichi/backends/opengl/shaders/indirect.glsl.h | 2 +- taichi/backends/opengl/struct_opengl.h | 2 +- taichi/program/extension.cpp | 2 +- taichi/python/export_misc.cpp | 2 +- taichi/runtime/opengl/CMakeLists.txt | 18 ++++++++++++++++++ .../opengl/opengl_api.cpp | 2 +- .../{backends => runtime}/opengl/opengl_api.h | 2 +- .../opengl/opengl_kernel_launcher.h | 0 .../opengl/shaders/runtime.h | 0 14 files changed, 34 insertions(+), 12 deletions(-) create mode 100644 taichi/runtime/opengl/CMakeLists.txt rename taichi/{backends => runtime}/opengl/opengl_api.cpp (99%) rename taichi/{backends => runtime}/opengl/opengl_api.h (98%) rename taichi/{backends => runtime}/opengl/opengl_kernel_launcher.h (100%) rename taichi/{backends => runtime}/opengl/shaders/runtime.h (100%) diff --git a/cmake/TaichiCore.cmake b/cmake/TaichiCore.cmake index 7017364300774..d9024b1a31b93 100644 --- a/cmake/TaichiCore.cmake +++ b/cmake/TaichiCore.cmake @@ -251,9 +251,11 @@ if (APPLE) ) endif() +# TODO: replace these includes per target basis include_directories(${CMAKE_SOURCE_DIR}) include_directories(external/include) include_directories(external/spdlog/include) +include_directories(external/glad/include) include_directories(external/SPIRV-Tools/include) include_directories(external/PicoSHA2) if (TI_WITH_OPENGL) @@ -351,6 +353,8 @@ if (TI_WITH_OPENGL) add_subdirectory(external/SPIRV-Cross) target_include_directories(${CORE_LIBRARY_NAME} PRIVATE external/SPIRV-Cross) target_link_libraries(${CORE_LIBRARY_NAME} PRIVATE spirv-cross-glsl spirv-cross-core) + + add_subdirectory(taichi/runtime/opengl) endif() if (TI_WITH_DX11) diff --git a/taichi/backends/opengl/codegen_opengl.cpp b/taichi/backends/opengl/codegen_opengl.cpp index 173d8cd1c8aee..7f232b26315b5 100644 --- a/taichi/backends/opengl/codegen_opengl.cpp +++ b/taichi/backends/opengl/codegen_opengl.cpp @@ -3,7 +3,7 @@ #include -#include "taichi/backends/opengl/opengl_api.h" +#include "taichi/runtime/opengl/opengl_api.h" #include "taichi/backends/opengl/opengl_data_types.h" #include "taichi/backends/opengl/opengl_kernel_util.h" #include "taichi/ir/ir.h" @@ -31,7 +31,7 @@ namespace shaders { #define TI_INSIDE_OPENGL_CODEGEN #include "taichi/backends/opengl/shaders/atomics_macro_f32.glsl.h" -#include "taichi/backends/opengl/shaders/runtime.h" +#include "taichi/runtime/opengl/shaders/runtime.h" #include "taichi/backends/opengl/shaders/random.glsl.h" #include "taichi/backends/opengl/shaders/fast_pow.glsl.h" #include "taichi/backends/opengl/shaders/print.glsl.h" diff --git a/taichi/backends/opengl/codegen_opengl.h b/taichi/backends/opengl/codegen_opengl.h index a630f291b3959..8e4dba27f3977 100644 --- a/taichi/backends/opengl/codegen_opengl.h +++ b/taichi/backends/opengl/codegen_opengl.h @@ -3,7 +3,7 @@ #include "taichi/inc/constants.h" #include "taichi/lang_util.h" #include "taichi/backends/opengl/struct_opengl.h" -#include "taichi/backends/opengl/opengl_api.h" +#include "taichi/runtime/opengl/opengl_api.h" #include #include diff --git a/taichi/backends/opengl/opengl_device.cpp b/taichi/backends/opengl/opengl_device.cpp index 2eda864bab310..b399cbb12e9ab 100644 --- a/taichi/backends/opengl/opengl_device.cpp +++ b/taichi/backends/opengl/opengl_device.cpp @@ -1,5 +1,5 @@ #include "opengl_device.h" -#include "opengl_api.h" +#include "taichi/runtime/opengl/opengl_api.h" namespace taichi { namespace lang { diff --git a/taichi/backends/opengl/opengl_program.h b/taichi/backends/opengl/opengl_program.h index d6f8e9e120307..1d495f7654a3a 100644 --- a/taichi/backends/opengl/opengl_program.h +++ b/taichi/backends/opengl/opengl_program.h @@ -2,8 +2,8 @@ #include "taichi/backends/opengl/struct_opengl.h" -#include "taichi/backends/opengl/opengl_kernel_launcher.h" -#include "taichi/backends/opengl/opengl_api.h" +#include "taichi/runtime/opengl/opengl_kernel_launcher.h" +#include "taichi/runtime/opengl/opengl_api.h" #include "taichi/backends/opengl/codegen_opengl.h" #include "taichi/system/memory_pool.h" diff --git a/taichi/backends/opengl/shaders/indirect.glsl.h b/taichi/backends/opengl/shaders/indirect.glsl.h index 04b215a7ef50d..09170c998c5de 100644 --- a/taichi/backends/opengl/shaders/indirect.glsl.h +++ b/taichi/backends/opengl/shaders/indirect.glsl.h @@ -5,7 +5,7 @@ "#version 430 core\nprecision highp float;\n" #define TI_INSIDE_OPENGL_CODEGEN #define TI_OPENGL_NESTED_INCLUDE -#include "taichi/backends/opengl/shaders/runtime.h" +#include "taichi/runtime/opengl/shaders/runtime.h" #undef TI_OPENGL_NESTED_INCLUDE #undef TI_INSIDE_OPENGL_CODEGEN STR( diff --git a/taichi/backends/opengl/struct_opengl.h b/taichi/backends/opengl/struct_opengl.h index 475bf97d52270..2d9faad8a6d5d 100644 --- a/taichi/backends/opengl/struct_opengl.h +++ b/taichi/backends/opengl/struct_opengl.h @@ -1,7 +1,7 @@ // Codegen for the hierarchical data structure #pragma once -#include "taichi/backends/opengl/opengl_kernel_launcher.h" +#include "taichi/runtime/opengl/opengl_kernel_launcher.h" #include "taichi/backends/opengl/opengl_data_types.h" #include "taichi/ir/snode.h" diff --git a/taichi/program/extension.cpp b/taichi/program/extension.cpp index 0db7e436fca61..7d3c71b6a734b 100644 --- a/taichi/program/extension.cpp +++ b/taichi/program/extension.cpp @@ -1,5 +1,5 @@ #include "extension.h" -//#include "taichi/backends/opengl/opengl_api.h" +//#include "taichi/runtime/opengl/opengl_api.h" #include #include diff --git a/taichi/python/export_misc.cpp b/taichi/python/export_misc.cpp index a1abb389ab782..2ede85517e551 100644 --- a/taichi/python/export_misc.cpp +++ b/taichi/python/export_misc.cpp @@ -4,7 +4,7 @@ *******************************************************************************/ #include "taichi/backends/metal/api.h" -#include "taichi/backends/opengl/opengl_api.h" +#include "taichi/runtime/opengl/opengl_api.h" #include "taichi/runtime/vulkan/runtime.h" #include "taichi/backends/dx/dx_api.h" #include "taichi/common/core.h" diff --git a/taichi/runtime/opengl/CMakeLists.txt b/taichi/runtime/opengl/CMakeLists.txt new file mode 100644 index 0000000000000..5d4414d330b09 --- /dev/null +++ b/taichi/runtime/opengl/CMakeLists.txt @@ -0,0 +1,18 @@ +# ./taichi/runtime/opengl/CMakeLists.txt + +add_library(opengl_runtime) +target_sources(opengl_runtime + PRIVATE + opengl_api.cpp + ) +target_include_directories(opengl_runtime + PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/shaders + ${PROJECT_SOURCE_DIR}/external/SPIRV-Tools/include + ${PROJECT_SOURCE_DIR}/external/eigen + ) +target_include_directories(opengl_runtime + PRIVATE + external/glad/include + ) diff --git a/taichi/backends/opengl/opengl_api.cpp b/taichi/runtime/opengl/opengl_api.cpp similarity index 99% rename from taichi/backends/opengl/opengl_api.cpp rename to taichi/runtime/opengl/opengl_api.cpp index 9e870814e75f0..cbb05d0340b56 100644 --- a/taichi/backends/opengl/opengl_api.cpp +++ b/taichi/runtime/opengl/opengl_api.cpp @@ -4,7 +4,7 @@ #include "taichi/backends/opengl/opengl_kernel_util.h" #include "taichi/backends/opengl/opengl_utils.h" -#include "taichi/backends/opengl/shaders/runtime.h" +#include "taichi/runtime/opengl/shaders/runtime.h" #include "taichi/ir/transforms.h" #include "taichi/program/kernel.h" #include "taichi/program/program.h" diff --git a/taichi/backends/opengl/opengl_api.h b/taichi/runtime/opengl/opengl_api.h similarity index 98% rename from taichi/backends/opengl/opengl_api.h rename to taichi/runtime/opengl/opengl_api.h index 6f4ee6e27a8f5..7fb5fe203e1be 100644 --- a/taichi/backends/opengl/opengl_api.h +++ b/taichi/runtime/opengl/opengl_api.h @@ -5,7 +5,7 @@ #include #include "taichi/backends/device.h" -#include "taichi/backends/opengl/opengl_kernel_launcher.h" +#include "taichi/runtime/opengl/opengl_kernel_launcher.h" #include "taichi/backends/opengl/opengl_kernel_util.h" #include "taichi/common/core.h" #include "taichi/ir/offloaded_task_type.h" diff --git a/taichi/backends/opengl/opengl_kernel_launcher.h b/taichi/runtime/opengl/opengl_kernel_launcher.h similarity index 100% rename from taichi/backends/opengl/opengl_kernel_launcher.h rename to taichi/runtime/opengl/opengl_kernel_launcher.h diff --git a/taichi/backends/opengl/shaders/runtime.h b/taichi/runtime/opengl/shaders/runtime.h similarity index 100% rename from taichi/backends/opengl/shaders/runtime.h rename to taichi/runtime/opengl/shaders/runtime.h From 5e175b8a23cc6c827844384199bab904d23c0341 Mon Sep 17 00:00:00 2001 From: Bo Qiao Date: Fri, 29 Apr 2022 11:42:15 +0800 Subject: [PATCH 11/16] Remove some warnings --- taichi/backends/metal/aot_module_loader_impl.cpp | 2 +- taichi/codegen/spirv/spirv_ir_builder.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/taichi/backends/metal/aot_module_loader_impl.cpp b/taichi/backends/metal/aot_module_loader_impl.cpp index f0002a008992c..9d834f1134a27 100644 --- a/taichi/backends/metal/aot_module_loader_impl.cpp +++ b/taichi/backends/metal/aot_module_loader_impl.cpp @@ -15,7 +15,7 @@ class FieldImpl : public aot::Field { } private: - KernelManager *const runtime_; + //KernelManager *const runtime_; CompiledFieldData field_; }; diff --git a/taichi/codegen/spirv/spirv_ir_builder.cpp b/taichi/codegen/spirv/spirv_ir_builder.cpp index b5e58359d915d..e34951cf3af6f 100644 --- a/taichi/codegen/spirv/spirv_ir_builder.cpp +++ b/taichi/codegen/spirv/spirv_ir_builder.cpp @@ -1206,7 +1206,7 @@ void IRBuilder::init_random_function(Value global_tmp_) { store_var(rand_z_, _521288629u); store_var(rand_w_, _88675123u); - enum spv::Op add_op = spv::OpIAdd; + //enum spv::Op add_op = spv::OpIAdd; bool use_atomic_increment = false; // use atomic increment for DX API to avoid error X3694 From c7bb17a360e5baf76508a5b55c70c433b47992e3 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 29 Apr 2022 03:47:36 +0000 Subject: [PATCH 12/16] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- taichi/backends/metal/aot_module_loader_impl.cpp | 2 +- taichi/codegen/spirv/spirv_ir_builder.cpp | 2 +- taichi/runtime/opengl/CMakeLists.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/taichi/backends/metal/aot_module_loader_impl.cpp b/taichi/backends/metal/aot_module_loader_impl.cpp index 9d834f1134a27..47bd87671c41f 100644 --- a/taichi/backends/metal/aot_module_loader_impl.cpp +++ b/taichi/backends/metal/aot_module_loader_impl.cpp @@ -15,7 +15,7 @@ class FieldImpl : public aot::Field { } private: - //KernelManager *const runtime_; + // KernelManager *const runtime_; CompiledFieldData field_; }; diff --git a/taichi/codegen/spirv/spirv_ir_builder.cpp b/taichi/codegen/spirv/spirv_ir_builder.cpp index e34951cf3af6f..f3386e98b0891 100644 --- a/taichi/codegen/spirv/spirv_ir_builder.cpp +++ b/taichi/codegen/spirv/spirv_ir_builder.cpp @@ -1206,7 +1206,7 @@ void IRBuilder::init_random_function(Value global_tmp_) { store_var(rand_z_, _521288629u); store_var(rand_w_, _88675123u); - //enum spv::Op add_op = spv::OpIAdd; + // enum spv::Op add_op = spv::OpIAdd; bool use_atomic_increment = false; // use atomic increment for DX API to avoid error X3694 diff --git a/taichi/runtime/opengl/CMakeLists.txt b/taichi/runtime/opengl/CMakeLists.txt index 5d4414d330b09..ad3f817f6521d 100644 --- a/taichi/runtime/opengl/CMakeLists.txt +++ b/taichi/runtime/opengl/CMakeLists.txt @@ -12,7 +12,7 @@ target_include_directories(opengl_runtime ${PROJECT_SOURCE_DIR}/external/SPIRV-Tools/include ${PROJECT_SOURCE_DIR}/external/eigen ) -target_include_directories(opengl_runtime +target_include_directories(opengl_runtime PRIVATE external/glad/include ) From bf3f2f17e37c1d3831af2510b315c43bd3ebd32b Mon Sep 17 00:00:00 2001 From: Bo Qiao Date: Fri, 29 Apr 2022 11:52:42 +0800 Subject: [PATCH 13/16] Minor --- taichi/backends/metal/aot_module_loader_impl.cpp | 2 +- taichi/runtime/opengl/CMakeLists.txt | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/taichi/backends/metal/aot_module_loader_impl.cpp b/taichi/backends/metal/aot_module_loader_impl.cpp index 9d834f1134a27..f0002a008992c 100644 --- a/taichi/backends/metal/aot_module_loader_impl.cpp +++ b/taichi/backends/metal/aot_module_loader_impl.cpp @@ -15,7 +15,7 @@ class FieldImpl : public aot::Field { } private: - //KernelManager *const runtime_; + KernelManager *const runtime_; CompiledFieldData field_; }; diff --git a/taichi/runtime/opengl/CMakeLists.txt b/taichi/runtime/opengl/CMakeLists.txt index 5d4414d330b09..d8ca67daf7d2c 100644 --- a/taichi/runtime/opengl/CMakeLists.txt +++ b/taichi/runtime/opengl/CMakeLists.txt @@ -10,9 +10,6 @@ target_include_directories(opengl_runtime ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/shaders ${PROJECT_SOURCE_DIR}/external/SPIRV-Tools/include + ${PROJECT_SOURCE_DIR}/external/glad/include ${PROJECT_SOURCE_DIR}/external/eigen ) -target_include_directories(opengl_runtime - PRIVATE - external/glad/include - ) From 2f444fdf00a0652f1f42b84030934cd55e216525 Mon Sep 17 00:00:00 2001 From: Bo Qiao Date: Fri, 29 Apr 2022 14:03:53 +0800 Subject: [PATCH 14/16] Add glfw include --- taichi/runtime/opengl/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/taichi/runtime/opengl/CMakeLists.txt b/taichi/runtime/opengl/CMakeLists.txt index d8ca67daf7d2c..e736722bade47 100644 --- a/taichi/runtime/opengl/CMakeLists.txt +++ b/taichi/runtime/opengl/CMakeLists.txt @@ -12,4 +12,5 @@ target_include_directories(opengl_runtime ${PROJECT_SOURCE_DIR}/external/SPIRV-Tools/include ${PROJECT_SOURCE_DIR}/external/glad/include ${PROJECT_SOURCE_DIR}/external/eigen + ${PROJECT_SOURCE_DIR}/external/glfw/include ) From 65558469c891a5bbcf894d23311a9be47f31cdc1 Mon Sep 17 00:00:00 2001 From: Bo Qiao Date: Fri, 29 Apr 2022 14:23:33 +0800 Subject: [PATCH 15/16] Add link to taichi core --- cmake/TaichiCore.cmake | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cmake/TaichiCore.cmake b/cmake/TaichiCore.cmake index 4455c60e43ac1..3096832be40c7 100644 --- a/cmake/TaichiCore.cmake +++ b/cmake/TaichiCore.cmake @@ -353,7 +353,9 @@ if (TI_WITH_OPENGL) add_subdirectory(external/SPIRV-Cross) target_include_directories(${CORE_LIBRARY_NAME} PRIVATE external/SPIRV-Cross) target_link_libraries(${CORE_LIBRARY_NAME} PRIVATE spirv-cross-glsl spirv-cross-core) + add_subdirectory(taichi/runtime/opengl) + target_link_libraries(${CORE_LIBRARY_NAME} PRIVATE opengl_runtime) endif() if (TI_WITH_DX11) From 7eaf118411b7645939d2dc517ba2f527d13f14ab Mon Sep 17 00:00:00 2001 From: yekuang Date: Fri, 29 Apr 2022 18:12:14 +0800 Subject: [PATCH 16/16] Update taichi/program/extension.cpp --- taichi/program/extension.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/taichi/program/extension.cpp b/taichi/program/extension.cpp index 7d3c71b6a734b..cff4620c5e913 100644 --- a/taichi/program/extension.cpp +++ b/taichi/program/extension.cpp @@ -1,5 +1,4 @@ #include "extension.h" -//#include "taichi/runtime/opengl/opengl_api.h" #include #include