# Conditional build options (1=enabled by default) %bcond openimageio 1 # OIIO plugin support %bcond python 0 # Python bindings %bcond viewer 0 # Graphical viewer Name: materialx Version: 1.39.3 Release: %autorelease Summary: Vendor-neutral specification for 3D material interchange License: MIT AND Apache-2.0 AND BSD-3-Clause AND BSD-4-Clause AND BSL-1.0 AND CC0-1.0 URL: https://materialx.org/ Source0: https://github.com/AcademySoftwareFoundation/MaterialX/releases/download/v%{version}/MaterialX-%{version}.tar.gz # Add missing cstdint include for GCC 15 # https://github.com/AcademySoftwareFoundation/MaterialX/commit/93715fa44254fc0bf6aa491ba7a83afec490f661.patch Patch: 93715fa44254fc0bf6aa491ba7a83afec490f661.patch #======================================== # Build Requirements #======================================== # Core toolchain BuildRequires: gcc-c++ BuildRequires: cmake BuildRequires: pkgconfig # Graphics dependencies BuildRequires: pkgconfig(catch2) BuildRequires: pkgconfig(gl) BuildRequires: pkgconfig(glfw3) BuildRequires: pkgconfig(oslcomp) BuildRequires: pkgconfig(wayland-client) >= 0.2.7 BuildRequires: pkgconfig(wayland-protocols) >= 1.15 BuildRequires: pkgconfig(xkbcommon) BuildRequires: pkgconfig(xrandr) BuildRequires: pkgconfig(xcursor) BuildRequires: pkgconfig(xi) BuildRequires: pkgconfig(xt) # Optional components %if %{with openimageio} BuildRequires: pkgconfig(OpenImageIO) %endif %if %{with python} BuildRequires: python3-devel BuildRequires: pkgconfig(pybind11) %endif # Viewer needs access to upstrean git submodule %if %{with viewer} BuildRequires: desktop-file-utils # Bundled components documentation # nanogui is currently unavailable in Fedora repository Provides: bundled(nanogui) = 0.2.0^20221102gitf5020e2 %endif #======================================== # Package Definitions #======================================== %description Physically-based material interchange specification for 3D rendering workflows. %package data Summary: MaterialX standard libraries and resources License: Apache-2.0 BuildArch: noarch Requires: %{name}%{?_isa} = %{version}-%{release} %description data Standard libraries and resources for MaterialX. %package devel Summary: Development files for MaterialX %description devel Development files for building applications using MaterialX. %if %{with python} %package -n python3-%{name} Summary: Python 3 bindings for MaterialX Requires: %{name}%{?_isa} = %{version}-%{release} %description -n python3-%{name} Python bindings for MaterialX material standard. %endif %if %{with viewer} %package viewer Summary: MaterialX graphical viewer Requires: %{name}%{?_isa} = %{version}-%{release} %description viewer Interactive viewer for MaterialX materials. %endif #======================================== # Build Preparation #======================================== %prep %autosetup -p1 -n MaterialX-%{version} # Standardize installation paths find source -type f \( -name '*.cpp' -o -name '*.h' -o -name 'CMakeLists.txt' \) \ -exec sed -i \ -e 's|resources|%{_datadir}/%{name}/resources|g' \ -e 's|"libraries"|"%{_datadir}/%{name}"|g' {} + # Remove bundled assets find . -type f \( -name '*.tt[cf]' -o -name '*.ot[cf]' -o -name '*.woff*' \) -delete #======================================== # Build Configuration #======================================== %build %cmake \ -DCMAKE_INSTALL_PREFIX=%{_prefix} \ -DCMAKE_SKIP_INSTALL_RPATH=ON \ -DCMAKE_BUILD_TYPE=Release \ -DMATERIALX_BUILD_SHARED_LIBS=ON \ -DMATERIALX_BUILD_TESTS=OFF \ %if %{with viewer} -DMATERIALX_BUILD_VIEWER=ON \ -DMATERIALX_BUILD_GRAPH_EDITOR=ON \ %endif %if %{with python} -DMATERIALX_PYTHON_LIBRARY=%{python3_sitelib}/%{name} \ -DPYTHON_EXECUTABLE=%{__python3} \ %endif -DMATERIALX_INSTALL_LIB_PATH=%{_libdir} \ -DMATERIALX_INSTALL_STDLIB_PATH=%{_datadir}/%{name} %cmake_build #======================================== # Installation #======================================== %install %cmake_install # Fedora filesystem layout install -d %{buildroot}%{_datadir}/%{name} mv %{buildroot}%{_prefix}/resources %{buildroot}%{_datadir}/%{name}/ # License documentation install -Dm644 LICENSE -t %{buildroot}%{_datadir}/licenses/%{name}/ %if %{with viewer} # Desktop integration install -Dm644 documents/Images/MaterialXLogo_200x155.png \ %{buildroot}%{_datadir}/icons/hicolor/256x256/apps/%{name}.png # Generate desktop files for app in viewer graph-editor; do desktop-file-install --dir=%{buildroot}%{_datadir}/applications \ --add-category Graphics \ --add-category 3DGraphics \ --set-key Name --set-value "MaterialX ${app%-*}" \ --set-key Exec --set-value "MaterialX${app//-}" \ --set-key Icon --set-value "%{name}" \ --set-key Comment --set-value "MaterialX ${app%-*}" \ %{name}-${app}.desktop done"A simple MaterialX Editor" \ %{name}-graph-editor.desktop %endif # Clean up incorrectly installed docs rm -f %{buildroot}%{_prefix}/{*.md,LICENSE} #======================================== # File Manifest #======================================== %files %license %{_datadir}/licenses/%{name}/LICENSE %doc README.md CHANGELOG.md THIRD-PARTY.md %dir %{_datadir}/%{name} %{_libdir}/libMaterialX*.so.{1,%{version}} %files data %{_datadir}/%{name}/ %files devel %{_includedir}/MaterialX* %{_libdir}/libMaterialX*.so %{_libdir}/cmake/MaterialX/ %if %{with python} %files -n python3-%{name} %{python3_sitelib}/%{name} %{_bindir}/*.py %endif %if %{with viewer} %files viewer %{_bindir}/MaterialX{View,GrapEditor} %{_datadir}/icons/hicolor/*/apps/%{name}.png %{_datadir}/applications/%{name}-{graph-editor,viewer}.desktop %endif %changelog %autochangelog