aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuri Victorovich <yuri@FreeBSD.org>2022-08-19 19:39:56 +0000
committerYuri Victorovich <yuri@FreeBSD.org>2022-08-19 19:40:38 +0000
commitd5e52eb269e3059e37b328ea962be4c2200d1523 (patch)
tree0e72f508c3992a2eb6bec89210a74c1ca4250773
parentc20133ad230eb6de0d80f90d355170f1700af44e (diff)
downloadports-d5e52eb269e3059e37b328ea962be4c2200d1523.tar.gz
ports-d5e52eb269e3059e37b328ea962be4c2200d1523.zip
graphics/filament: New port: Real-time physically based rendering engine
-rw-r--r--graphics/Makefile1
-rw-r--r--graphics/filament/Makefile43
-rw-r--r--graphics/filament/distinfo3
-rw-r--r--graphics/filament/files/patch-CMakeLists.txt10
-rw-r--r--graphics/filament/files/patch-filament_backend_src_Platform.cpp29
-rw-r--r--graphics/filament/files/patch-libs_bluevk_include_vulkan_vk__platform.h11
-rw-r--r--graphics/filament/files/patch-libs_bluevk_src_BlueVKLinuxAndroid.cpp11
-rw-r--r--graphics/filament/files/patch-libs_utils_CMakeLists.txt15
-rw-r--r--graphics/filament/files/patch-third__party_libsdl2_include_SDL__config.h11
-rw-r--r--graphics/filament/pkg-descr4
-rw-r--r--graphics/filament/pkg-plist187
11 files changed, 325 insertions, 0 deletions
diff --git a/graphics/Makefile b/graphics/Makefile
index 08f7f486eaf1..124c439f1b09 100644
--- a/graphics/Makefile
+++ b/graphics/Makefile
@@ -187,6 +187,7 @@
SUBDIR += feh
SUBDIR += fig2sxd
SUBDIR += figurine
+ SUBDIR += filament
SUBDIR += filmulator
SUBDIR += flam3
SUBDIR += flasm
diff --git a/graphics/filament/Makefile b/graphics/filament/Makefile
new file mode 100644
index 000000000000..87534c01e5fa
--- /dev/null
+++ b/graphics/filament/Makefile
@@ -0,0 +1,43 @@
+PORTNAME= filament
+DISTVERSIONPREFIX= v
+DISTVERSION= 1.25.5
+CATEGORIES= graphics
+
+MAINTAINER= yuri@FreeBSD.org
+COMMENT= Real-time physically based rendering engine
+
+LICENSE= APACHE20
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+BUILD_DEPENDS= bash:shells/bash \
+ evdev-proto>0:devel/evdev-proto
+
+USES= cmake compiler:c++17-lang localbase:ldflags sdl xorg
+USE_SDL= sdl2
+USE_XORG= x11
+
+USE_GITHUB= yes
+GH_ACCOUNT= google
+
+#CMAKE_ON= BUILD_SHARED_LIBS # not yet supported, see https://github.com/google/filament/issues/1075
+CMAKE_OFF= USE_STATIC_LIBCXX FILAMENT_ENABLE_JAVA
+CMAKE_ARGS+= -DDIST_DIR="." # prevent subdirectory for libraries
+
+LDFLAGS+= -lexecinfo -lSDL2
+
+OPTIONS_DEFINE= SAMPLES
+OPTIONS_SUB= yes
+
+SAMPLES_DESC= Build samples
+SAMPLES_CMAKE_OFF= -DFILAMENT_SKIP_SAMPLES=ON
+
+post-patch:
+ @${REINPLACE_CMD} -e 's|"/proc/self/exe"|"/proc/curproc/file"|' ${WRKSRC}/libs/utils/src/linux/Path.cpp
+
+post-install:
+ # remove unnecessary files
+ @cd ${STAGEDIR}${PREFIX} && ${RM} -r README.md LICENSE docs
+ # remove conflicting file, see https://github.com/google/filament/issues/5957
+ @${RM} ${STAGEDIR}${PREFIX}/lib/libzstd.a
+
+.include <bsd.port.mk>
diff --git a/graphics/filament/distinfo b/graphics/filament/distinfo
new file mode 100644
index 000000000000..f6cdef4894d3
--- /dev/null
+++ b/graphics/filament/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1660834922
+SHA256 (google-filament-v1.25.5_GH0.tar.gz) = 4486b3f07f6cb9d1a6118e6bc8b926c7225dfcd8d741a5cc37e4de2c2034acc0
+SIZE (google-filament-v1.25.5_GH0.tar.gz) = 496371556
diff --git a/graphics/filament/files/patch-CMakeLists.txt b/graphics/filament/files/patch-CMakeLists.txt
new file mode 100644
index 000000000000..fac357ef46bd
--- /dev/null
+++ b/graphics/filament/files/patch-CMakeLists.txt
@@ -0,0 +1,10 @@
+--- CMakeLists.txt.orig 2022-08-18 20:34:20 UTC
++++ CMakeLists.txt
+@@ -99,6 +99,7 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
+ # ==================================================================================================
+ if (UNIX AND NOT APPLE AND NOT ANDROID AND NOT WEBGL)
+ set(LINUX TRUE)
++ message("setting LINUX=TRUE ... will treat the system as Linux-compatible")
+ endif()
+
+ if (LINUX)
diff --git a/graphics/filament/files/patch-filament_backend_src_Platform.cpp b/graphics/filament/files/patch-filament_backend_src_Platform.cpp
new file mode 100644
index 000000000000..b26e228a487f
--- /dev/null
+++ b/graphics/filament/files/patch-filament_backend_src_Platform.cpp
@@ -0,0 +1,29 @@
+--- filament/backend/src/Platform.cpp.orig 2022-08-16 18:01:04 UTC
++++ filament/backend/src/Platform.cpp
+@@ -41,7 +41,7 @@
+ #if defined(FILAMENT_DRIVER_SUPPORTS_VULKAN)
+ #include "vulkan/PlatformVkCocoa.h"
+ #endif
+-#elif defined(__linux__)
++#elif defined(__linux__) || defined(__FreeBSD__)
+ #if defined(FILAMENT_SUPPORTS_WAYLAND)
+ #if defined (FILAMENT_DRIVER_SUPPORTS_VULKAN)
+ #include "vulkan/PlatformVkLinuxWayland.h"
+@@ -125,7 +125,7 @@ DefaultPlatform* DefaultPlatform::create(Backend* back
+ return new PlatformVkAndroid();
+ #elif defined(IOS)
+ return new PlatformVkCocoaTouch();
+- #elif defined(__linux__)
++ #elif defined(__linux__) || defined(__FreeBSD__)
+ #if defined(FILAMENT_SUPPORTS_WAYLAND)
+ return new PlatformVkLinuxWayland();
+ #elif defined(FILAMENT_SUPPORTS_X11)
+@@ -159,7 +159,7 @@ DefaultPlatform* DefaultPlatform::create(Backend* back
+ return new PlatformCocoaTouchGL();
+ #elif defined(__APPLE__)
+ return new PlatformCocoaGL();
+- #elif defined(__linux__)
++ #elif defined(__linux__) || defined(__FreeBSD__)
+ #if defined(FILAMENT_SUPPORTS_X11)
+ return new PlatformGLX();
+ #elif defined(FILAMENT_SUPPORTS_EGL_ON_LINUX)
diff --git a/graphics/filament/files/patch-libs_bluevk_include_vulkan_vk__platform.h b/graphics/filament/files/patch-libs_bluevk_include_vulkan_vk__platform.h
new file mode 100644
index 000000000000..cd131eedc729
--- /dev/null
+++ b/graphics/filament/files/patch-libs_bluevk_include_vulkan_vk__platform.h
@@ -0,0 +1,11 @@
+--- libs/bluevk/include/vulkan/vk_platform.h.orig 2022-08-19 02:33:42 UTC
++++ libs/bluevk/include/vulkan/vk_platform.h
+@@ -25,7 +25,7 @@
+ #define VK_USE_PLATFORM_ANDROID_KHR 1
+ #elif defined(IOS)
+ #define VK_USE_PLATFORM_IOS_MVK 1
+-#elif defined(__linux__)
++#elif defined(__linux__) || defined(__FreeBSD__)
+ #if defined(FILAMENT_SUPPORTS_XCB)
+ #define VK_USE_PLATFORM_XCB_KHR 1
+ #endif
diff --git a/graphics/filament/files/patch-libs_bluevk_src_BlueVKLinuxAndroid.cpp b/graphics/filament/files/patch-libs_bluevk_src_BlueVKLinuxAndroid.cpp
new file mode 100644
index 000000000000..7a36d4b012a5
--- /dev/null
+++ b/graphics/filament/files/patch-libs_bluevk_src_BlueVKLinuxAndroid.cpp
@@ -0,0 +1,11 @@
+--- libs/bluevk/src/BlueVKLinuxAndroid.cpp.orig 2022-08-18 16:44:25 UTC
++++ libs/bluevk/src/BlueVKLinuxAndroid.cpp
+@@ -42,7 +42,7 @@ bool loadLibrary() {
+ path = FILAMENT_VKLIBRARY_PATH;
+ #elif defined(__ANDROID__)
+ path = "libvulkan.so";
+-#elif defined(__linux__)
++#elif defined(__linux__) || defined(__FreeBSD__)
+ path = "libvulkan.so.1";
+ #else
+ #error "This file should only be compiled for Android or Linux"
diff --git a/graphics/filament/files/patch-libs_utils_CMakeLists.txt b/graphics/filament/files/patch-libs_utils_CMakeLists.txt
new file mode 100644
index 000000000000..2deb894bd724
--- /dev/null
+++ b/graphics/filament/files/patch-libs_utils_CMakeLists.txt
@@ -0,0 +1,15 @@
+--- libs/utils/CMakeLists.txt.orig 2022-08-16 18:01:04 UTC
++++ libs/utils/CMakeLists.txt
+@@ -81,8 +81,10 @@ if (ANDROID)
+ list(APPEND SRCS src/android/ThermalManager.cpp)
+ endif()
+ if (LINUX OR ANDROID)
+- list(APPEND SRCS src/linux/Condition.cpp)
+- list(APPEND SRCS src/linux/Mutex.cpp)
++ if (NOT CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
++ list(APPEND SRCS src/linux/Condition.cpp)
++ list(APPEND SRCS src/linux/Mutex.cpp)
++ endif()
+ list(APPEND SRCS src/linux/Path.cpp)
+ endif()
+ if (APPLE)
diff --git a/graphics/filament/files/patch-third__party_libsdl2_include_SDL__config.h b/graphics/filament/files/patch-third__party_libsdl2_include_SDL__config.h
new file mode 100644
index 000000000000..3a196242c609
--- /dev/null
+++ b/graphics/filament/files/patch-third__party_libsdl2_include_SDL__config.h
@@ -0,0 +1,11 @@
+--- third_party/libsdl2/include/SDL_config.h.orig 2022-08-19 18:37:12 UTC
++++ third_party/libsdl2/include/SDL_config.h
+@@ -41,7 +41,7 @@
+ #include "SDL_config_android.h"
+ #elif defined(__PSP__)
+ #include "SDL_config_psp.h"
+-#elif defined(__LINUX__)
++#elif defined(__LINUX__) || defined(__FreeBSD__)
+ #if defined(FILAMENT_SUPPORTS_WAYLAND)
+ #include "SDL_config_linux_wayland.h"
+ #elif defined(FILAMENT_SUPPORTS_X11)
diff --git a/graphics/filament/pkg-descr b/graphics/filament/pkg-descr
new file mode 100644
index 000000000000..3fea3502fa0c
--- /dev/null
+++ b/graphics/filament/pkg-descr
@@ -0,0 +1,4 @@
+Filament is a real-time physically-based renderer written in C++.
+It is mobile-first, but also multi-platform.
+
+WWW: https://google.github.io/filament/
diff --git a/graphics/filament/pkg-plist b/graphics/filament/pkg-plist
new file mode 100644
index 000000000000..ee3832f40cda
--- /dev/null
+++ b/graphics/filament/pkg-plist
@@ -0,0 +1,187 @@
+%%SAMPLES%%bin/assets/fonts/Roboto-License.txt
+%%SAMPLES%%bin/assets/fonts/Roboto-Medium.ttf
+%%SAMPLES%%bin/assets/lightroom_14b/lightroom_14b_ibl.ktx
+%%SAMPLES%%bin/assets/lightroom_14b/lightroom_14b_skybox.ktx
+%%SAMPLES%%bin/assets/lightroom_14b/sh.txt
+bin/basisu
+bin/cmgen
+bin/filamesh
+bin/glslminifier
+%%SAMPLES%%bin/gltf_viewer
+bin/matc
+%%SAMPLES%%bin/material_sandbox
+bin/matinfo
+bin/mipgen
+bin/normal-blending
+bin/resgen
+bin/roughness-prefilter
+bin/specular-color
+bin/uberz
+include/backend/BufferDescriptor.h
+include/backend/CallbackHandler.h
+include/backend/DriverEnums.h
+include/backend/Handle.h
+include/backend/PipelineState.h
+include/backend/PixelBufferDescriptor.h
+include/backend/Platform.h
+include/backend/PresentCallable.h
+include/backend/SamplerDescriptor.h
+include/backend/TargetBufferInfo.h
+include/camutils/Bookmark.h
+include/camutils/Manipulator.h
+include/camutils/compiler.h
+include/filamat/Enums.h
+include/filamat/IncludeCallback.h
+include/filamat/MaterialBuilder.h
+include/filamat/Package.h
+include/filament-iblprefilter/IBLPrefilterContext.h
+include/filament/Box.h
+include/filament/BufferObject.h
+include/filament/Camera.h
+include/filament/Color.h
+include/filament/ColorGrading.h
+include/filament/DebugRegistry.h
+include/filament/Engine.h
+include/filament/Exposure.h
+include/filament/Fence.h
+include/filament/FilamentAPI.h
+include/filament/Frustum.h
+include/filament/IndexBuffer.h
+include/filament/IndirectLight.h
+include/filament/LightManager.h
+include/filament/Material.h
+include/filament/MaterialChunkType.h
+include/filament/MaterialEnums.h
+include/filament/MaterialInstance.h
+include/filament/MorphTargetBuffer.h
+include/filament/Options.h
+include/filament/RenderTarget.h
+include/filament/RenderableManager.h
+include/filament/Renderer.h
+include/filament/Scene.h
+include/filament/SkinningBuffer.h
+include/filament/Skybox.h
+include/filament/Stream.h
+include/filament/SwapChain.h
+include/filament/Texture.h
+include/filament/TextureSampler.h
+include/filament/ToneMapper.h
+include/filament/TransformManager.h
+include/filament/VertexBuffer.h
+include/filament/View.h
+include/filament/Viewport.h
+include/filameshio/MeshReader.h
+include/geometry/SurfaceOrientation.h
+include/geometry/Transcoder.h
+include/gltfio/Animator.h
+include/gltfio/AssetLoader.h
+include/gltfio/FilamentAsset.h
+include/gltfio/FilamentInstance.h
+include/gltfio/MaterialProvider.h
+include/gltfio/NodeManager.h
+include/gltfio/ResourceLoader.h
+include/gltfio/TextureProvider.h
+include/gltfio/materials/uberarchive.h
+include/gltfio/math.h
+include/ibl/Cubemap.h
+include/ibl/CubemapIBL.h
+include/ibl/CubemapSH.h
+include/ibl/CubemapUtils.h
+include/ibl/Image.h
+include/ibl/utilities.h
+include/image/ColorTransform.h
+include/image/ImageOps.h
+include/image/ImageSampler.h
+include/image/Ktx1Bundle.h
+include/image/LinearImage.h
+include/ktxreader/Ktx1Reader.h
+include/ktxreader/Ktx2Reader.h
+include/math/TMatHelpers.h
+include/math/TQuatHelpers.h
+include/math/TVecHelpers.h
+include/math/compiler.h
+include/math/fast.h
+include/math/half.h
+include/math/mat2.h
+include/math/mat3.h
+include/math/mat4.h
+include/math/mathfwd.h
+include/math/norm.h
+include/math/quat.h
+include/math/scalar.h
+include/math/vec2.h
+include/math/vec3.h
+include/math/vec4.h
+include/mathio/ostream.h
+include/tsl/robin_growth_policy.h
+include/tsl/robin_hash.h
+include/tsl/robin_map.h
+include/tsl/robin_set.h
+include/uberz/ArchiveEnums.h
+include/uberz/ReadableArchive.h
+include/uberz/WritableArchive.h
+include/utils/Allocator.h
+include/utils/BitmaskEnum.h
+include/utils/CString.h
+include/utils/CallStack.h
+include/utils/Entity.h
+include/utils/EntityInstance.h
+include/utils/EntityManager.h
+include/utils/FixedCapacityVector.h
+include/utils/Invocable.h
+include/utils/Log.h
+include/utils/Mutex.h
+include/utils/NameComponentManager.h
+include/utils/Panic.h
+include/utils/Path.h
+include/utils/PrivateImplementation-impl.h
+include/utils/PrivateImplementation.h
+include/utils/SingleInstanceComponentManager.h
+include/utils/Slice.h
+include/utils/SpinLock.h
+include/utils/StructureOfArrays.h
+include/utils/algorithm.h
+include/utils/bitset.h
+include/utils/compiler.h
+include/utils/compressed_pair.h
+include/utils/debug.h
+include/utils/linux/Mutex.h
+include/utils/memalign.h
+include/utils/ostream.h
+include/utils/unwindows.h
+include/viewer/AutomationEngine.h
+include/viewer/AutomationSpec.h
+include/viewer/RemoteServer.h
+include/viewer/Settings.h
+include/viewer/ViewerGui.h
+lib/libbackend.a
+lib/libbasis_transcoder.a
+lib/libbluegl.a
+lib/libbluevk.a
+lib/libcamutils.a
+lib/libcivetweb.a
+lib/libdracodec.a
+lib/libfilabridge.a
+lib/libfilaflat.a
+lib/libfilamat.a
+lib/libfilamat_lite.a
+lib/libfilament-iblprefilter.a
+lib/libfilament.a
+lib/libfilameshio.a
+lib/libgeometry.a
+lib/libgltfio.a
+lib/libgltfio_core.a
+lib/libibl-lite.a
+lib/libibl.a
+lib/libimage.a
+lib/libktxreader.a
+lib/libmatdbg.a
+lib/libmeshoptimizer.a
+lib/libshaders.a
+lib/libsmol-v.a
+lib/libstb.a
+lib/libuberarchive.a
+lib/libuberzlib.a
+lib/libutils.a
+lib/libviewer.a
+lib/libvkshaders.a