Skip to content

Commit

Permalink
Replaced .gitmodules with fetch_content
Browse files Browse the repository at this point in the history
Signed-off-by: Fabian Sauter <[email protected]>
  • Loading branch information
COM8 committed Jul 27, 2022
1 parent 4869d94 commit 50ffbbc
Show file tree
Hide file tree
Showing 10 changed files with 83 additions and 107 deletions.
20 changes: 0 additions & 20 deletions .gitmodules

This file was deleted.

90 changes: 76 additions & 14 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_VERBOSE_MAKEFILE on)

# Enable or disable targets
option(KOMPUTE_OPT_BUILD_TESTS "Enable if you want to build tests" 0)
option(KOMPUTE_OPT_BUILD_TESTS "Enable if you want to build tests" 1)
option(KOMPUTE_OPT_CODE_COVERAGE "Enable if you want code coverage" 0)
option(KOMPUTE_OPT_BUILD_DOCS "Enable if you want to build documentation" 0)
option(KOMPUTE_OPT_BUILD_SHADERS "Enable if you want to re-build all shader files" 0)
Expand All @@ -18,30 +18,92 @@ option(KOMPUTE_OPT_INSTALL "Enable if you want to enable installation" 0)
# Build options
option(KOMPUTE_OPT_BUILD_PYTHON "Enable if you want to build python bindings" 0)
option(KOMPUTE_OPT_ENABLE_SPDLOG "Enable to compile with spdlog as the internal logging framework" 0)
option(KOMPUTE_OPT_REPO_SUBMODULE_BUILD "Use the submodule repos instead of external package manager" 0)

# option(KOMPUTE_OPT_REPO_SUBMODULE_BUILD "Use the submodule repos instead of external package manager" 0)
option(KOMPUTE_OPT_USE_BUILD_IN_SPDLOG "Use the build in version of Spdlog" 1)
option(KOMPUTE_OPT_USE_BUILD_IN_FMT "Use the build in version of fmt" 1)
option(KOMPUTE_OPT_USE_BUILD_IN_GOOGLE_TEST "Use the build in version of GoogleTest" 1)
option(KOMPUTE_OPT_USE_BUILD_IN_PYBIND11 "Use the build in version of pybind11" 1)


option(KOMPUTE_OPT_ANDROID_BUILD "Enable android compilation flags required" 0)
option(KOMPUTE_OPT_DISABLE_VK_DEBUG_LAYERS "Explicitly disable debug layers even on debug" 0)
option(KOMPUTE_OPT_DEPENDENCIES_SHARED_LIBS "Whether to use shared libraries for dependencies for install" 0)
option(KOMPUTE_OPT_BUILD_AS_SHARED_LIB "Whether to build kompute as shared library" 0)
# Build flags
set(KOMPUTE_EXTRA_CXX_FLAGS "" CACHE STRING "Extra compile flags for Kompute, see docs for full list")


###########################################################################################
# Dependencies
###########################################################################################
include(FetchContent)

# Vulkan
# We don't import Vulkan library if Android build as its build dynamically
# Otherwise it is expected that the Vulkan SDK and dependencies are installed
if(NOT KOMPUTE_OPT_ANDROID_BUILD)
find_package(Vulkan REQUIRED)
endif()

# Spdlog
if(KOMPUTE_OPT_ENABLE_SPDLOG)
set(KOMPUTE_EXTRA_CXX_FLAGS "${KOMPUTE_EXTRA_CXX_FLAGS} -DKOMPUTE_ENABLE_SPDLOG=1")
set(SPDLOG_FMT_EXTERNAL ON CACHE BOOL "Enables external fmt as its current dep" FORCE)
if(KOMPUTE_OPT_INSTALL)
# Enable install parameters for spdlog (overrides parameters passed)
set(SPDLOG_INSTALL ON CACHE BOOL "Enables install of spdlog" FORCE)

if(KOMPUTE_OPT_DEPENDENCIES_SHARED_LIBS)
set(SPDLOG_BUILD_SHARED ON CACHE BOOL "Enables build of shared libraries" FORCE)
endif()
if(KOMPUTE_OPT_USE_BUILD_IN_SPDLOG)
set(SPDLOG_INSTALL ${KOMPUTE_OPT_INSTALL})
set(SPDLOG_BUILD_SHARED ${KOMPUTE_OPT_DEPENDENCIES_SHARED_LIBS})

FetchContent_Declare(spdlog GIT_REPOSITORY https://github.com/gabime/spdlog.git
GIT_TAG v1.10.0) # Source: https://github.com/gabime/spdlog/releases
FetchContent_MakeAvailable(spdlog)
else()
find_package(spdlog REQUIRED)
endif()
endif()

if(KOMPUTE_OPT_INSTALL)
# Enable install parameters for fmt (overrides parameters passed)
set(FMT_INSTALL ON CACHE BOOL "Enables install of fmt" FORCE)
# fmt
if(KOMPUTE_OPT_USE_BUILD_IN_FMT)
set(FMT_INSTALL ${KOMPUTE_OPT_INSTALL})
set(BUILD_SHARED_LIBS_BKP ${KOMPUTE_OPT_DEPENDENCIES_SHARED_LIBS})
set(SPDLOG_BUILD_SHARED ${KOMPUTE_OPT_DEPENDENCIES_SHARED_LIBS})
FetchContent_Declare(fmt GIT_REPOSITORY https://github.com/fmtlib/fmt.git
GIT_TAG 8.1.1) # Source: https://github.com/fmtlib/fmt/releases
FetchContent_MakeAvailable(fmt)
set(BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS_BKP})
else()
find_package(fmt REQUIRED)
endif()

# GoogleTest
if(KOMPUTE_OPT_BUILD_TESTS)
if(KOMPUTE_OPT_USE_BUILD_IN_GOOGLE_TEST)
FetchContent_Declare(googletest GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG release-1.11.0) # Source: https://github.com/google/googletest/releases
FetchContent_MakeAvailable(googletest)

add_library(gtest_int INTERFACE)
target_link_libraries(gtest_int INTERFACE gtest)
target_include_directories(gtest_int INTERFACE ${googletest_SOURCE_DIR}/include)

add_library(GTest::GTest ALIAS gtest_int)

# Group under the "tests/gtest" project folder in IDEs such as Visual Studio.
set_property(TARGET gtest PROPERTY FOLDER "tests/gtest")
set_property(TARGET gtest_main PROPERTY FOLDER "tests/gtest")
else()
find_package(GTest CONFIG REQUIRED)
endif()
endif()

# pybind11
if(KOMPUTE_OPT_BUILD_PYTHON)
if(KOMPUTE_OPT_USE_BUILD_IN_PYBIND11)
FetchContent_Declare(pybind GIT_REPOSITORY https://github.com/pybind/pybind11.git
GIT_TAG v2.9.2) # Source: https://github.com/pybind/pybind11/releases
FetchContent_MakeAvailable(pybind)
else()
find_package(pybind11 REQUIRED)
endif()
find_package(PythonLibs REQUIRED)
endif()

if(KOMPUTE_OPT_ANDROID_BUILD)
Expand Down
1 change: 0 additions & 1 deletion external/Vulkan-Headers
Submodule Vulkan-Headers deleted from 320af0
1 change: 0 additions & 1 deletion external/fmt
Submodule fmt deleted from 7bdf06
1 change: 0 additions & 1 deletion external/googletest
Submodule googletest deleted from 703bd9
1 change: 0 additions & 1 deletion external/spdlog
Submodule spdlog deleted from 01b350
1 change: 0 additions & 1 deletion python/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@

add_subdirectory(pybind11)
pybind11_add_module(kp src/main.cpp)

include_directories(
Expand Down
1 change: 0 additions & 1 deletion python/pybind11
Submodule pybind11 deleted from 06a540
51 changes: 5 additions & 46 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,6 @@ if(KOMPUTE_OPT_ANDROID_BUILD)
find_library(android android)
endif()

# We don't import Vulkan library if Android build as its build dynamically
# Otherwise it is expected that the Vulkan SDK and dependencies are installed
if(NOT KOMPUTE_OPT_ANDROID_BUILD)
find_package(Vulkan REQUIRED)
endif()

if(KOMPUTE_OPT_BUILD_SHADERS)
# all shaders are compiled into cpp files
kompute_make(build_shaders
Expand Down Expand Up @@ -60,57 +54,28 @@ if(NOT KOMPUTE_OPT_ANDROID_BUILD)
target_link_libraries(
kompute
Vulkan::Vulkan
fmt::fmt
)
else()
target_link_libraries(
kompute
fmt::fmt
)
endif()

if(KOMPUTE_OPT_REPO_SUBMODULE_BUILD)
# Override the default Vulkan::Vulkan headers
# In this case we only use the build interface due to https://github.com/KhronosGroup/Vulkan-Headers/issues/157
add_subdirectory(${PROJECT_SOURCE_DIR}/external/Vulkan-Headers ${CMAKE_CURRENT_BINARY_DIR}/kompute_vulkan_headers)
get_target_property(VULKAN_HEADERS_INCLUDES Vulkan-Headers INTERFACE_INCLUDE_DIRECTORIES)
target_include_directories(
kompute PUBLIC
$<BUILD_INTERFACE:${VULKAN_HEADERS_INCLUDES}>)
endif()

#####################################################
#################### fmt #######################
#####################################################

if(KOMPUTE_OPT_REPO_SUBMODULE_BUILD)
add_subdirectory(${PROJECT_SOURCE_DIR}/external/fmt ${CMAKE_CURRENT_BINARY_DIR}/kompute_fmt)
else()
find_package(fmt REQUIRED)
endif()

target_link_libraries(
kompute
fmt::fmt
)

#####################################################
#################### SPDLOG #######################
#################### SPDLOG #########################
#####################################################

if(KOMPUTE_OPT_ENABLE_SPDLOG)
if(KOMPUTE_OPT_REPO_SUBMODULE_BUILD)
add_subdirectory(${PROJECT_SOURCE_DIR}/external/spdlog ${CMAKE_CURRENT_BINARY_DIR}/kompute_spdlog)
else()
find_package(spdlog REQUIRED)
endif()

target_link_libraries(
kompute
spdlog::spdlog
)
endif()

#####################################################
#################### Android #######################
#################### Android ########################
#####################################################

if(KOMPUTE_OPT_ANDROID_BUILD)
Expand All @@ -132,7 +97,7 @@ if(KOMPUTE_OPT_BUILD_SHADERS)
endif()

#####################################################
#################### Single Header #######################
#################### Single Header ##################
#####################################################

if(KOMPUTE_OPT_BUILD_SINGLE_HEADER)
Expand Down Expand Up @@ -161,9 +126,3 @@ if(KOMPUTE_OPT_INSTALL)
NAMESPACE kompute::
DESTINATION lib/cmake/kompute)
endif()

if(KOMPUTE_OPT_BUILD_PYTHON)
include_directories(${PROJECT_SOURCE_DIR}/python/pybind11/include)
find_package(PythonLibs REQUIRED)
include_directories(${PYTHON_INCLUDE_DIRS})
endif()
23 changes: 2 additions & 21 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,15 +1,9 @@
# SPDX-License-Identifier: Apache-2.0

#####################################################
#################### GETEST #######################
#################### GOOGLETEST #####################
#####################################################
enable_testing()
if(KOMPUTE_OPT_REPO_SUBMODULE_BUILD)
add_subdirectory(${PROJECT_SOURCE_DIR}/external/googletest EXCLUDE_FROM_ALL
${CMAKE_CURRENT_BINARY_DIR}/kompute_googletest)
else()
find_package(GTest CONFIG REQUIRED)
endif()

file(GLOB test_kompute_CPP
"${CMAKE_CURRENT_SOURCE_DIR}/*.cpp"
Expand All @@ -23,20 +17,7 @@ target_include_directories(
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/compiled_shaders_include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/utils>
)

if(KOMPUTE_OPT_REPO_SUBMODULE_BUILD)
target_include_directories(
test_kompute PRIVATE
${gtest_SOURCE_DIR}/include)

target_link_libraries(test_kompute
gtest_main)
else()
target_link_libraries(test_kompute
GTest::gtest)
endif()

target_link_libraries(test_kompute kompute)
target_link_libraries(test_kompute kompute GTest::GTest)

add_test(NAME test_kompute COMMAND test_kompute)

Expand Down

0 comments on commit 50ffbbc

Please sign in to comment.