aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/mesa
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/mesa')
-rw-r--r--vcpkg/ports/mesa/portfile.cmake144
-rw-r--r--vcpkg/ports/mesa/vcpkg.json92
2 files changed, 236 insertions, 0 deletions
diff --git a/vcpkg/ports/mesa/portfile.cmake b/vcpkg/ports/mesa/portfile.cmake
new file mode 100644
index 0000000..b0916dd
--- /dev/null
+++ b/vcpkg/ports/mesa/portfile.cmake
@@ -0,0 +1,144 @@
+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(CMAKE_HOST_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")
diff --git a/vcpkg/ports/mesa/vcpkg.json b/vcpkg/ports/mesa/vcpkg.json
new file mode 100644
index 0000000..9e3177a
--- /dev/null
+++ b/vcpkg/ports/mesa/vcpkg.json
@@ -0,0 +1,92 @@
+{
+ "name": "mesa",
+ "version": "24.0.7",
+ "port-version": 3,
+ "description": "Mesa - The 3D Graphics Library",
+ "homepage": "https://www.mesa3d.org/",
+ "license": "MIT AND BSL-1.0 AND SGI-B-2.0",
+ "supports": "!(windows & arm) & !staticcrt & !uwp",
+ "dependencies": [
+ {
+ "name": "vcpkg-get-python-packages",
+ "host": true
+ },
+ {
+ "name": "vcpkg-tool-meson",
+ "host": true
+ },
+ "zlib",
+ "zstd"
+ ],
+ "default-features": [
+ "gles1",
+ "gles2",
+ {
+ "name": "llvm",
+ "platform": "x64"
+ }
+ ],
+ "features": {
+ "egl": {
+ "description": "Build support for EGL platform",
+ "dependencies": [
+ "egl-registry"
+ ]
+ },
+ "gles1": {
+ "description": "Build support for OpenGL ES 1.x",
+ "dependencies": [
+ "opengl"
+ ]
+ },
+ "gles2": {
+ "description": "Build support for OpenGL ES 2.x and 3.x",
+ "dependencies": [
+ "opengl"
+ ]
+ },
+ "llvm": {
+ "description": "Build with llvmpipe",
+ "dependencies": [
+ {
+ "name": "llvm",
+ "default-features": false,
+ "features": [
+ "enable-rtti",
+ "libclc"
+ ]
+ },
+ {
+ "name": "llvm",
+ "default-features": false,
+ "features": [
+ "target-arm"
+ ],
+ "platform": "arm32"
+ },
+ {
+ "name": "llvm",
+ "default-features": false,
+ "features": [
+ "target-aarch64"
+ ],
+ "platform": "arm64"
+ },
+ {
+ "name": "llvm",
+ "default-features": false,
+ "features": [
+ "target-x86"
+ ],
+ "platform": "x64 | x86"
+ }
+ ]
+ },
+ "offscreen": {
+ "description": "Build with support for offscreen rendering (OSMesa)",
+ "dependencies": [
+ "opengl"
+ ]
+ }
+ }
+}