|
| 1 | +# |
| 2 | +# Copyright (C) 2022 Intel Corporation |
| 3 | +# |
| 4 | +# SPDX-License-Identifier: MIT |
| 5 | +# |
| 6 | + |
| 7 | +cmake_minimum_required(VERSION 3.8.0 FATAL_ERROR) |
| 8 | +project(ComputeBenchmarks) |
| 9 | +include(CMakeOptions.cmake) |
| 10 | +set(PREDEFINED_TARGETS_FOLDER "CustomTargets") |
| 11 | +set_property(GLOBAL PROPERTY USE_FOLDERS ON) |
| 12 | +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") |
| 13 | + |
| 14 | + |
| 15 | + |
| 16 | +# Enable MT Compilation in VisualStudio |
| 17 | +if (MSVC) |
| 18 | + add_compile_options($<$<CXX_COMPILER_ID:MSVC>:/MP>) |
| 19 | + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /DELAYLOAD:OpenCL.dll") |
| 20 | + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /DELAYLOAD:ze_loader.dll") |
| 21 | + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /ignore:4199") |
| 22 | +endif() |
| 23 | + |
| 24 | +# Load dependencies |
| 25 | +if(NOT EXISTS third_party/googletest/CMakeLists.txt) |
| 26 | + execute_process(COMMAND git submodule update --init --recursive |
| 27 | + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) |
| 28 | +endif() |
| 29 | + |
| 30 | +# Produce version string |
| 31 | +string(TIMESTAMP versionDate "%Y%m%d") |
| 32 | +execute_process (COMMAND git log -1 --format=%h |
| 33 | + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} |
| 34 | + OUTPUT_VARIABLE versionCommit |
| 35 | + OUTPUT_STRIP_TRAILING_WHITESPACE |
| 36 | +) |
| 37 | +set(BENCHMARK_VERSION "${versionDate}_${VERSION_INDEX}_${versionCommit}") |
| 38 | + |
| 39 | +# Publish build additional handling |
| 40 | +if(BUILD_FOR_PUBLISHING) |
| 41 | + # Only publish release builds |
| 42 | + message(STATUS "Overriding build type to Release") |
| 43 | + set(CMAKE_CONFIGURATION_TYPES Release) |
| 44 | + set(CMAKE_BUILD_TYPE Release) |
| 45 | + |
| 46 | + file(WRITE ${OUTPUT_DIR}/version.txt ${BENCHMARK_VERSION}) |
| 47 | + message(STATUS "Version ${BENCHMARK_VERSION} written to version.txt") |
| 48 | +endif() |
| 49 | + |
| 50 | +# ccache |
| 51 | +option(CCACHE_ALLOWED "allow use of ccache" TRUE) |
| 52 | +find_program(CCACHE_EXE_FOUND ccache) |
| 53 | +if(CCACHE_EXE_FOUND AND CCACHE_ALLOWED) |
| 54 | + message(STATUS "Found ccache: ${CCACHE_EXE_FOUND}") |
| 55 | + set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache) |
| 56 | + set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache) |
| 57 | +endif() |
| 58 | + |
| 59 | +# Gtest |
| 60 | +set(gtest_force_shared_crt OFF CACHE BOOL "") |
| 61 | +set(BUILD_GMOCK OFF CACHE BOOL "") |
| 62 | +set(BUILD_SHARED_LIBS OFF CACHE BOOL "") |
| 63 | +add_subdirectory(third_party/googletest) |
| 64 | +if (MSVC) |
| 65 | + set_target_properties(gtest_main PROPERTIES FOLDER framework) |
| 66 | + set_target_properties(gtest PROPERTIES |
| 67 | + FOLDER framework |
| 68 | + LIBRARY_OUTPUT_DIRECTORY "${OUTPUT_DIR}" |
| 69 | + RUNTIME_OUTPUT_DIRECTORY "${OUTPUT_DIR}" |
| 70 | + ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib" |
| 71 | + ) |
| 72 | +endif() |
| 73 | + |
| 74 | +# Benchmark |
| 75 | +if(MSVC) |
| 76 | + set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_DEBUG} /MT") |
| 77 | + set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_DEBUG} /MT") |
| 78 | + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT") |
| 79 | + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd") |
| 80 | +endif() |
| 81 | + |
| 82 | +# Compiler proxy for SYCL |
| 83 | +if(BUILD_SYCL) |
| 84 | + find_package(SYCL) |
| 85 | + if(SYCL_FOUND) |
| 86 | + string(REPLACE "<CMAKE_CXX_COMPILER>" "${SYCL_PROXY} <CMAKE_CXX_COMPILER>" CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE}") |
| 87 | + set(CMAKE_CXX_COMPILER_LAUNCHER "${SYCL_PROXY}") |
| 88 | + endif() |
| 89 | +endif() |
| 90 | + |
| 91 | +add_subdirectory(source) |
| 92 | +set_directory_properties(PROPERTIES VS_STARTUP_PROJECT ulls_benchmark_ocl) |
0 commit comments