mirror of
https://github.com/microsoft/vcpkg.git
synced 2024-12-01 15:31:47 +08:00
63d9dcdd7e
Fixes #37189 - [x] Changes comply with the [maintainer guide](https://github.com/microsoft/vcpkg-docs/blob/main/vcpkg/contributing/maintainer-guide.md). - [x] SHA512s are updated for each updated download. - [x] The "supports" clause reflects platforms that may be fixed by this new version. - [x] Any fixed [CI baseline](https://github.com/microsoft/vcpkg/blob/master/scripts/ci.baseline.txt) entries are removed from that file. - [x] Any patches that are no longer applied are deleted from the port's directory. - [x] The version database is fixed by rerunning `./vcpkg x-add-version --all` and committing the result. - [x] Only one version is added to each modified port's versions file.
145 lines
5.2 KiB
CMake
145 lines
5.2 KiB
CMake
vcpkg_check_linkage(ONLY_DYNAMIC_CRT)
|
|
if(VCPKG_TARGET_IS_WINDOWS)
|
|
set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled) # some parts of this port can only build as a shared library.
|
|
endif()
|
|
|
|
vcpkg_from_gitlab(
|
|
GITLAB_URL https://gitlab.freedesktop.org
|
|
OUT_SOURCE_PATH SOURCE_PATH
|
|
REPO mesa/mesa
|
|
REF mesa-${VERSION}
|
|
SHA512 202b2b20ffe7d357570a0d0bf0b53dc246b3e903738e8c8a000c5f61109ab5233d62de217444f49fd62927f8c418d929e5a2a5a800d1e39e334d50eb090e850c
|
|
FILE_DISAMBIGUATOR 1
|
|
HEAD_REF master
|
|
)
|
|
|
|
x_vcpkg_get_python_packages(PYTHON_VERSION "3" OUT_PYTHON_VAR "PYTHON3" PACKAGES setuptools mako)
|
|
get_filename_component(PYTHON3_DIR "${PYTHON3}" DIRECTORY)
|
|
vcpkg_add_to_path(PREPEND "${PYTHON3_DIR}")
|
|
|
|
vcpkg_find_acquire_program(FLEX)
|
|
get_filename_component(FLEX_DIR "${FLEX}" DIRECTORY)
|
|
vcpkg_add_to_path(PREPEND "${FLEX_DIR}")
|
|
vcpkg_find_acquire_program(BISON)
|
|
get_filename_component(BISON_DIR "${BISON}" DIRECTORY)
|
|
vcpkg_add_to_path(PREPEND "${BISON_DIR}")
|
|
|
|
if(WIN32) # WIN32 HOST probably has win_flex and win_bison!
|
|
if(NOT EXISTS "${FLEX_DIR}/flex${VCPKG_HOST_EXECUTABLE_SUFFIX}")
|
|
if(FLEX_DIR MATCHES "${DOWNLOADS}")
|
|
file(CREATE_LINK "${FLEX}" "${FLEX_DIR}/flex${VCPKG_HOST_EXECUTABLE_SUFFIX}")
|
|
else()
|
|
message(FATAL_ERROR "${PORT} requires flex being named flex on windows and not win_flex!\n(Can be solved by creating a simple link from win_flex to flex)")
|
|
endif()
|
|
endif()
|
|
if(NOT EXISTS "${BISON_DIR}/BISON${VCPKG_HOST_EXECUTABLE_SUFFIX}")
|
|
if(BISON_DIR MATCHES "${DOWNLOADS}")
|
|
file(CREATE_LINK "${BISON}" "${BISON_DIR}/bison${VCPKG_HOST_EXECUTABLE_SUFFIX}")
|
|
else()
|
|
message(FATAL_ERROR "${PORT} requires bison being named bison on windows and not win_bison!\n(Can be solved by creating a simple link from win_bison to bison)")
|
|
endif()
|
|
endif()
|
|
endif()
|
|
|
|
# For features https://github.com/pal1000/mesa-dist-win should be probably studied a bit more.
|
|
list(APPEND MESA_OPTIONS -Dzstd=enabled)
|
|
list(APPEND MESA_OPTIONS -Dvalgrind=disabled)
|
|
list(APPEND MESA_OPTIONS -Dshared-llvm=disabled)
|
|
list(APPEND MESA_OPTIONS -Dcpp_rtti=true)
|
|
|
|
if("offscreen" IN_LIST FEATURES)
|
|
list(APPEND MESA_OPTIONS -Dosmesa=true)
|
|
else()
|
|
list(APPEND MESA_OPTIONS -Dosmesa=false)
|
|
endif()
|
|
|
|
if("llvm" IN_LIST FEATURES)
|
|
list(APPEND MESA_OPTIONS -Dllvm=enabled)
|
|
else()
|
|
list(APPEND MESA_OPTIONS -Dllvm=disabled)
|
|
endif()
|
|
|
|
set(use_gles OFF)
|
|
if("gles1" IN_LIST FEATURES)
|
|
list(APPEND MESA_OPTIONS -Dgles1=enabled)
|
|
set(use_gles ON)
|
|
else()
|
|
list(APPEND MESA_OPTIONS -Dgles1=disabled)
|
|
endif()
|
|
if("gles2" IN_LIST FEATURES)
|
|
list(APPEND MESA_OPTIONS -Dgles2=enabled)
|
|
set(use_gles ON)
|
|
else()
|
|
list(APPEND MESA_OPTIONS -Dgles2=disabled)
|
|
endif()
|
|
|
|
if(use_gles)
|
|
list(APPEND MESA_OPTIONS -Dshared-glapi=enabled) # shared GLAPI required when building two or more of the following APIs - gles1 gles2
|
|
else()
|
|
list(APPEND MESA_OPTIONS -Dshared-glapi=auto)
|
|
endif()
|
|
|
|
if("egl" IN_LIST FEATURES)
|
|
list(APPEND MESA_OPTIONS -Degl=enabled)
|
|
else()
|
|
list(APPEND MESA_OPTIONS -Degl=disabled)
|
|
endif()
|
|
|
|
if(VCPKG_TARGET_IS_WINDOWS)
|
|
list(APPEND MESA_OPTIONS -Dplatforms=['windows'])
|
|
list(APPEND MESA_OPTIONS -Dmicrosoft-clc=disabled)
|
|
if(NOT VCPKG_TARGET_IS_MINGW)
|
|
set(VCPKG_CXX_FLAGS "/D_CRT_DECLARE_NONSTDC_NAMES ${VCPKG_CXX_FLAGS}")
|
|
set(VCPKG_C_FLAGS "/D_CRT_DECLARE_NONSTDC_NAMES ${VCPKG_C_FLAGS}")
|
|
endif()
|
|
endif()
|
|
|
|
vcpkg_configure_meson(
|
|
SOURCE_PATH "${SOURCE_PATH}"
|
|
OPTIONS
|
|
-Dgles-lib-suffix=_mesa
|
|
-Dbuild-tests=false
|
|
${MESA_OPTIONS}
|
|
ADDITIONAL_BINARIES
|
|
python=['${PYTHON3}','-I']
|
|
python3=['${PYTHON3}','-I']
|
|
)
|
|
vcpkg_install_meson()
|
|
vcpkg_fixup_pkgconfig()
|
|
|
|
file(REMOVE_RECURSE
|
|
"${CURRENT_PACKAGES_DIR}/debug/include"
|
|
"${CURRENT_PACKAGES_DIR}/debug/share"
|
|
# installed by egl-registry
|
|
"${CURRENT_PACKAGES_DIR}/include/KHR"
|
|
"${CURRENT_PACKAGES_DIR}/include/EGL"
|
|
# installed by opengl-registry
|
|
"${CURRENT_PACKAGES_DIR}/include/GL"
|
|
"${CURRENT_PACKAGES_DIR}/include/GLES"
|
|
"${CURRENT_PACKAGES_DIR}/include/GLES2"
|
|
"${CURRENT_PACKAGES_DIR}/include/GLES3"
|
|
)
|
|
file(GLOB remaining "${CURRENT_PACKAGES_DIR}/include/*")
|
|
if(NOT remaining)
|
|
# All headers to be provided by egl-registry and/or opengl-registry
|
|
set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled)
|
|
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/include")
|
|
endif()
|
|
|
|
if(VCPKG_TARGET_IS_WINDOWS)
|
|
# opengl32.lib is already installed by port opengl.
|
|
# Mesa claims to provide a drop-in replacement of opengl32.dll.
|
|
file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/lib/manual-link")
|
|
file(RENAME "${CURRENT_PACKAGES_DIR}/lib/opengl32.lib" "${CURRENT_PACKAGES_DIR}/lib/manual-link/opengl32.lib")
|
|
if(NOT VCPKG_BUILD_TYPE)
|
|
file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/debug/lib/manual-link")
|
|
file(RENAME "${CURRENT_PACKAGES_DIR}/debug/lib/opengl32.lib" "${CURRENT_PACKAGES_DIR}/debug/lib/manual-link/opengl32.lib")
|
|
endif()
|
|
endif()
|
|
|
|
if(FEATURES STREQUAL "core")
|
|
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug")
|
|
endif()
|
|
|
|
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/docs/license.rst")
|