mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-10 14:08:04 +00:00
CMakeLists: Generate Dawn headers separately from libdawn
libdawn will be one of the libraries produced but other libraries like libdawn_native don't need to link against it. However they do need the Dawn headers so we generate them separately. This also makes all internal targets depend on the header generation and have the include directories necessary for those headers. Also has a small fix for setting compile flags only for C++ files.
This commit is contained in:
committed by
Corentin Wallez
parent
deb5d33643
commit
6c27fd9c94
@@ -34,5 +34,4 @@ list(APPEND COMMON_SOURCES
|
||||
)
|
||||
|
||||
add_library(dawn_common STATIC ${COMMON_SOURCES})
|
||||
target_include_directories(dawn_common PUBLIC ${SRC_DIR})
|
||||
DawnInternalTarget("" dawn_common)
|
||||
|
||||
@@ -28,9 +28,7 @@ Generate(
|
||||
${GENERATOR_COMMON_ARGS}
|
||||
-T dawn_native_utils
|
||||
)
|
||||
target_link_libraries(dawn_native_utils_autogen dawncpp)
|
||||
target_include_directories(dawn_native_utils_autogen PUBLIC ${GENERATED_DIR})
|
||||
target_include_directories(dawn_native_utils_autogen PRIVATE ${SRC_DIR})
|
||||
target_link_libraries(dawn_native_utils_autogen)
|
||||
|
||||
function(GenerateProcTable backend)
|
||||
Generate(
|
||||
@@ -42,9 +40,7 @@ function(GenerateProcTable backend)
|
||||
${GENERATOR_COMMON_ARGS}
|
||||
-T ${backend}
|
||||
)
|
||||
target_link_libraries(${backend}_autogen dawncpp dawn_native_utils_autogen)
|
||||
target_include_directories(${backend}_autogen PRIVATE ${SRC_DIR})
|
||||
target_include_directories(${backend}_autogen PUBLIC ${GENERATED_DIR})
|
||||
target_link_libraries(${backend}_autogen dawn_native_utils_autogen)
|
||||
endfunction()
|
||||
|
||||
################################################################################
|
||||
@@ -388,22 +384,22 @@ list(APPEND DAWN_NATIVE_SOURCES
|
||||
${DAWN_NATIVE_DIR}/ToBackend.h
|
||||
)
|
||||
|
||||
add_library(lib_dawn_native STATIC ${DAWN_NATIVE_SOURCES})
|
||||
DawnInternalTarget("dawn_native" lib_dawn_native)
|
||||
target_link_libraries(lib_dawn_native dawn_common glfw glad spirv_cross)
|
||||
add_library(libdawn_native STATIC ${DAWN_NATIVE_SOURCES})
|
||||
DawnInternalTarget("dawn_native" libdawn_native)
|
||||
target_link_libraries(libdawn_native dawn_common glfw glad spirv_cross)
|
||||
|
||||
if (DAWN_ENABLE_D3D12)
|
||||
target_link_libraries(lib_dawn_native d3d12_autogen)
|
||||
target_link_libraries(libdawn_native d3d12_autogen)
|
||||
endif()
|
||||
if (DAWN_ENABLE_METAL)
|
||||
target_link_libraries(lib_dawn_native metal_autogen)
|
||||
target_link_libraries(libdawn_native metal_autogen)
|
||||
endif()
|
||||
if (DAWN_ENABLE_NULL)
|
||||
target_link_libraries(lib_dawn_native null_autogen)
|
||||
target_link_libraries(libdawn_native null_autogen)
|
||||
endif()
|
||||
if (DAWN_ENABLE_OPENGL)
|
||||
target_link_libraries(lib_dawn_native opengl_autogen)
|
||||
target_link_libraries(libdawn_native opengl_autogen)
|
||||
endif()
|
||||
if (DAWN_ENABLE_VULKAN)
|
||||
target_link_libraries(lib_dawn_native vulkan_autogen)
|
||||
target_link_libraries(libdawn_native vulkan_autogen)
|
||||
endif()
|
||||
|
||||
@@ -21,8 +21,7 @@ Generate(
|
||||
${GENERATOR_COMMON_ARGS}
|
||||
-T mock_dawn
|
||||
)
|
||||
target_include_directories(mock_dawn PUBLIC ${GENERATED_DIR})
|
||||
target_link_libraries(mock_dawn dawn gtest)
|
||||
target_link_libraries(mock_dawn gtest)
|
||||
|
||||
set(TESTS_DIR ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
set(UNITTESTS_DIR ${TESTS_DIR}/unittests)
|
||||
@@ -67,7 +66,7 @@ if (DAWN_ENABLE_D3D12)
|
||||
endif()
|
||||
|
||||
add_executable(dawn_unittests ${UNITTEST_SOURCES})
|
||||
target_link_libraries(dawn_unittests dawn_common gtest lib_dawn_native mock_dawn dawn_wire utils)
|
||||
target_link_libraries(dawn_unittests dawn_common gtest libdawn_native mock_dawn dawn_wire utils)
|
||||
DawnInternalTarget("tests" dawn_unittests)
|
||||
|
||||
add_executable(dawn_end2end_tests
|
||||
|
||||
@@ -54,7 +54,7 @@ if (DAWN_ENABLE_VULKAN)
|
||||
endif()
|
||||
|
||||
add_library(utils STATIC ${UTILS_SOURCES})
|
||||
target_link_libraries(utils lib_dawn_native shaderc_shared dawncpp dawn)
|
||||
target_link_libraries(utils libdawn_native shaderc_shared libdawn)
|
||||
target_include_directories(utils PUBLIC ${SRC_DIR})
|
||||
DawnInternalTarget("" utils)
|
||||
if(NOT MSVC)
|
||||
|
||||
@@ -13,28 +13,23 @@
|
||||
# limitations under the License.
|
||||
|
||||
set(WIRE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
set(TESTS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/tests)
|
||||
|
||||
Generate(
|
||||
LIB_NAME wire_autogen
|
||||
LIB_NAME dawn_wire_autogen
|
||||
LIB_TYPE STATIC
|
||||
FOLDER "wire"
|
||||
PRINT_NAME "Wire serialization/deserialization autogenerated files"
|
||||
EXTRA_DEPS dawn
|
||||
COMMAND_LINE_ARGS
|
||||
${GENERATOR_COMMON_ARGS}
|
||||
-T wire
|
||||
EXTRA_SOURCES
|
||||
${WIRE_DIR}/WireCmd.h
|
||||
)
|
||||
target_include_directories(wire_autogen PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
target_include_directories(wire_autogen PUBLIC ${GENERATED_DIR})
|
||||
target_link_libraries(wire_autogen dawn dawn_common)
|
||||
|
||||
add_library(dawn_wire STATIC
|
||||
${WIRE_DIR}/TerribleCommandBuffer.cpp
|
||||
${WIRE_DIR}/TerribleCommandBuffer.h
|
||||
${WIRE_DIR}/Wire.h
|
||||
)
|
||||
target_link_libraries(dawn_wire wire_autogen)
|
||||
target_link_libraries(dawn_wire dawn_wire_autogen dawn_common)
|
||||
DawnInternalTarget("wire" dawn_wire)
|
||||
|
||||
Reference in New Issue
Block a user