spirv-to-dxil-rs/spirv-to-dxil-sys/native/CMakeLists.txt
chyyran 3261a3c54f build: clone mesa directly from gitlab
If we don't do this, the crate is too big for crates.io.
2023-02-04 03:18:34 -05:00

61 lines
2.3 KiB
CMake

cmake_minimum_required(VERSION 3.8)
project(native-spirv-to-dxil)
include(ExternalProject)
# need python
find_package(Python COMPONENTS Interpreter REQUIRED)
if(DEFINED ENV{VIRTUAL_ENV} OR DEFINED ENV{CONDA_PREFIX})
set(_pip_args)
else()
set(_pip_args "--user")
endif()
find_program(PIP_EXE pip)
if(PIP_EXE STREQUAL "PIP_EXE-NOTFOUND")
message(FATAL_ERROR "pip required")
endif(PIP_EXE STREQUAL "PIP_EXE-NOTFOUND")
execute_process(COMMAND ${Python_EXECUTABLE} -m pip install mako)
string(TOLOWER ${CMAKE_BUILD_TYPE} MESON_BUILD_TYPE)
set(MESA_EXTRA_FLAGS
-Dbuildtype=${MESON_BUILD_TYPE}
# enable spirv-to-dxil (obviously)
-Dspirv-to-dxil=true
# force zink because we want libvulkan_util
-Dgallium-drivers=zink
# set min-windows-version to 7 to remove need to link against synchronization.lib (we don't need futexes for the compiler)
-Dmin-windows-version=7
# disable everything we don't need.
-Dvulkan-drivers=
-Dopengl=false
-Dglx=disabled
-Dmicrosoft-clc=disabled
-Dgallium-d3d12-video=disabled
-Dgbm=disabled
-Degl=disabled
-Dgles1=disabled
-Dgles2=disabled
-Dllvm=disabled
-Dshared-llvm=disabled
-Dplatforms=
-Dzlib=disabled
-Dshader-cache=disabled
)
ExternalProject_Add(mesa
GIT_REPOSITORY https://gitlab.freedesktop.org/mesa/mesa
GIT_TAG ${MESA_HASH}
GIT_SHALLOW true
GIT_PROGRESS true
GIT_CONFIG core.symlinks=false
PREFIX ${CMAKE_BINARY_DIR}/mesa
CONFIGURE_COMMAND cd ${CMAKE_BINARY_DIR}/mesa/src/mesa && meson setup ${CMAKE_BINARY_DIR}/mesa/src/mesa-build ${MESA_EXTRA_FLAGS}
BUILD_COMMAND cd ${CMAKE_BINARY_DIR}/mesa/src/mesa-build && ninja src/vulkan/util/libvulkan_util.a && ninja src/microsoft/spirv_to_dxil/libspirv_to_dxil.a
INSTALL_COMMAND cmake -DOUT_DIR=${CMAKE_BINARY_DIR}/mesa -DMESA_BUILD=${CMAKE_BINARY_DIR}/mesa/src/mesa-build -P ${CMAKE_CURRENT_LIST_DIR}/install_spirv_to_dxil.cmake
BUILD_BYPRODUCTS ${CMAKE_BINARY_DIR}/mesa/lib/spirv_to_dxil.lib ${CMAKE_BINARY_DIR}/mesa/lib/libspirv_to_dxil.a ${CMAKE_BINARY_DIR}/mesa/lib/vulkan_util.lib ${CMAKE_BINARY_DIR}/mesa/lib/libvulkan_util.a
)