From 8786afb34af3a35d9626b4e9da38af5d32e91899 Mon Sep 17 00:00:00 2001 From: Alexander Batashev Date: Wed, 2 Dec 2020 14:54:33 +0300 Subject: [PATCH 1/2] [XPTIFW] Enable in-tree builds --- buildbot/configure.py | 7 ++-- sycl/CMakeLists.txt | 2 ++ xptifw/CMakeLists.txt | 6 ++++ xptifw/unit_test/CMakeLists.txt | 57 +++++++++++++++++---------------- 4 files changed, 43 insertions(+), 29 deletions(-) diff --git a/buildbot/configure.py b/buildbot/configure.py index 1e7781c4c6df3..3684c668e64be 100644 --- a/buildbot/configure.py +++ b/buildbot/configure.py @@ -17,11 +17,12 @@ def do_configure(args): sycl_dir = os.path.join(abs_src_dir, "sycl") spirv_dir = os.path.join(abs_src_dir, "llvm-spirv") xpti_dir = os.path.join(abs_src_dir, "xpti") + xptifw_dir = os.path.join(abs_src_dir, "xptifw") libdevice_dir = os.path.join(abs_src_dir, "libdevice") ocl_header_dir = os.path.join(abs_obj_dir, "OpenCL-Headers") icd_loader_lib = os.path.join(abs_obj_dir, "OpenCL-ICD-Loader", "build") llvm_targets_to_build = 'X86' - llvm_enable_projects = 'clang;llvm-spirv;sycl;opencl-aot;xpti;libdevice' + llvm_enable_projects = 'clang;llvm-spirv;sycl;opencl-aot;xpti;xptifw;libdevice' libclc_targets_to_build = '' sycl_build_pi_cuda = 'OFF' sycl_werror = 'ON' @@ -63,10 +64,12 @@ def do_configure(args): "-DCMAKE_BUILD_TYPE={}".format(args.build_type), "-DLLVM_ENABLE_ASSERTIONS={}".format(llvm_enable_assertions), "-DLLVM_TARGETS_TO_BUILD={}".format(llvm_targets_to_build), - "-DLLVM_EXTERNAL_PROJECTS=sycl;llvm-spirv;opencl-aot;xpti;libdevice", + "-DLLVM_EXTERNAL_PROJECTS=sycl;llvm-spirv;opencl-aot;xpti;xptifw;libdevice", "-DLLVM_EXTERNAL_SYCL_SOURCE_DIR={}".format(sycl_dir), "-DLLVM_EXTERNAL_LLVM_SPIRV_SOURCE_DIR={}".format(spirv_dir), "-DLLVM_EXTERNAL_XPTI_SOURCE_DIR={}".format(xpti_dir), + "-DXPTI_SOURCE_DIR={}".format(xpti_dir), + "-DLLVM_EXTERNAL_XPTIFW_SOURCE_DIR={}".format(xptifw_dir), "-DLLVM_EXTERNAL_LIBDEVICE_SOURCE_DIR={}".format(libdevice_dir), "-DLLVM_ENABLE_PROJECTS={}".format(llvm_enable_projects), "-DLIBCLC_TARGETS_TO_BUILD={}".format(libclc_targets_to_build), diff --git a/sycl/CMakeLists.txt b/sycl/CMakeLists.txt index 950b717c0473e..e6fdc894c46dc 100644 --- a/sycl/CMakeLists.txt +++ b/sycl/CMakeLists.txt @@ -290,6 +290,7 @@ add_custom_target( sycl-toolchain llvm-objcopy sycl-post-link sycl-ls + xptifw COMMENT "Building SYCL compiler toolchain..." ) @@ -350,6 +351,7 @@ set( SYCL_TOOLCHAIN_DEPLOY_COMPONENTS pi_opencl pi_level_zero libsycldevice + xptifw ) if(OpenCL_INSTALL_KHRONOS_ICD_LOADER AND TARGET ocl-icd) list(APPEND SYCL_TOOLCHAIN_DEPLOY_COMPONENTS opencl-icd) diff --git a/xptifw/CMakeLists.txt b/xptifw/CMakeLists.txt index 0d846e591f141..44a6ada172c95 100644 --- a/xptifw/CMakeLists.txt +++ b/xptifw/CMakeLists.txt @@ -16,6 +16,12 @@ endif() project (xptifw) +foreach(flag_var + CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE + CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO) +string(REGEX REPLACE "/MT" "/MD" ${flag_var} "${${flag_var}}") +endforeach() + set(CMAKE_BINARY_DIR ${CMAKE_SOURCE_DIR}/lib/${CMAKE_BUILD_TYPE}) set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}) set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}) diff --git a/xptifw/unit_test/CMakeLists.txt b/xptifw/unit_test/CMakeLists.txt index aab3f0b247eff..7ce07ba4b2662 100644 --- a/xptifw/unit_test/CMakeLists.txt +++ b/xptifw/unit_test/CMakeLists.txt @@ -3,36 +3,39 @@ if (NOT EXISTS ${XPTI_SOURCE_DIR}) endif() include_directories(${XPTI_SOURCE_DIR}/include) -# Download and unpack googletest at configure time -configure_file(../CMakeLists.txt.in googletest-download/CMakeLists.txt) -execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . - RESULT_VARIABLE result - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download ) -if(result) - message(FATAL_ERROR "CMake step for googletest failed: ${result}") -endif() -execute_process(COMMAND ${CMAKE_COMMAND} --build . - RESULT_VARIABLE result - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download ) -if(result) - message(FATAL_ERROR "Build step for googletest failed: ${result}") -endif() +# Only download Google Test outside of LLVM tree. +if (NOT DEFINED LLVM_EXTERNAL_XPTIFW_SOURCE_DIR) + # Download and unpack googletest at configure time + configure_file(../CMakeLists.txt.in googletest-download/CMakeLists.txt) + execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . + RESULT_VARIABLE result + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download ) + if(result) + message(FATAL_ERROR "CMake step for googletest failed: ${result}") + endif() + execute_process(COMMAND ${CMAKE_COMMAND} --build . + RESULT_VARIABLE result + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download ) + if(result) + message(FATAL_ERROR "Build step for googletest failed: ${result}") + endif() -# Prevent overriding the parent project's compiler/linker -# settings on Windows -set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) + # Prevent overriding the parent project's compiler/linker + # settings on Windows + set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) -# Add googletest directly to our build. This defines -# the gtest and gtest_main targets. -add_subdirectory(${CMAKE_CURRENT_BINARY_DIR}/googletest-src - ${CMAKE_CURRENT_BINARY_DIR}/googletest-build - EXCLUDE_FROM_ALL) + # Add googletest directly to our build. This defines + # the gtest and gtest_main targets. + add_subdirectory(${CMAKE_CURRENT_BINARY_DIR}/googletest-src + ${CMAKE_CURRENT_BINARY_DIR}/googletest-build + EXCLUDE_FROM_ALL) -# The gtest/gtest_main targets carry header search path -# dependencies automatically when using CMake 2.8.11 or -# later. Otherwise we have to add them here ourselves. -if (CMAKE_VERSION VERSION_LESS 2.8.11) - include_directories("${gtest_SOURCE_DIR}/include") + # The gtest/gtest_main targets carry header search path + # dependencies automatically when using CMake 2.8.11 or + # later. Otherwise we have to add them here ourselves. + if (CMAKE_VERSION VERSION_LESS 2.8.11) + include_directories("${gtest_SOURCE_DIR}/include") + endif() endif() # Now simply link against gtest or gtest_main as needed. Eg From 115b7728cae5709f28701ec3b492c17779a0a3f6 Mon Sep 17 00:00:00 2001 From: Alexander Batashev Date: Wed, 2 Dec 2020 17:27:32 +0300 Subject: [PATCH 2/2] Wrap xpti with checks --- sycl/CMakeLists.txt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/sycl/CMakeLists.txt b/sycl/CMakeLists.txt index e6fdc894c46dc..c9655028485ad 100644 --- a/sycl/CMakeLists.txt +++ b/sycl/CMakeLists.txt @@ -274,6 +274,10 @@ if (NOT WIN32) COMPONENT sycl-headers-extras) endif() +if (SYCL_ENABLE_XPTI_TRACING) + set(XPTIFW_LIBS xptifw) +endif() + # SYCL toolchain builds all components: compiler, libraries, headers, etc. add_custom_target( sycl-toolchain DEPENDS ${SYCL_RT_LIBS} @@ -290,7 +294,7 @@ add_custom_target( sycl-toolchain llvm-objcopy sycl-post-link sycl-ls - xptifw + ${XPTIFW_LIBS} COMMENT "Building SYCL compiler toolchain..." ) @@ -351,7 +355,7 @@ set( SYCL_TOOLCHAIN_DEPLOY_COMPONENTS pi_opencl pi_level_zero libsycldevice - xptifw + ${XPTIFW_LIBS} ) if(OpenCL_INSTALL_KHRONOS_ICD_LOADER AND TARGET ocl-icd) list(APPEND SYCL_TOOLCHAIN_DEPLOY_COMPONENTS opencl-icd)