Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:MaxxedSUSE:Compiler-Tools
DirectXShaderCompiler
DirectXShaderCompiler.spec
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File DirectXShaderCompiler.spec of Package DirectXShaderCompiler
# spec file for package DirectXShaderCompiler # # Copyright (c) 2022 Matteo De Carlo # Copyright (c) 2023 Sergey Kondakov <virtuousfox@gmail.com> # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. %define __builder ninja %global use_clang 1 %global use_lld 1 %ifarch x86_64 %define use_lto 1 %else %define use_lto 0 %endif %define so_ver 3_7 %define real_version 1.7.2308 Name: DirectXShaderCompiler Version: 1.7.2308+0~git20230814.69e54e2908 Release: 0 Summary: DirectX Shader Compiler License: Apache-2.0 WITH LLVM-exception OR NCSA Group: Development/Graphics URL: https://github.com/microsoft/DirectXShaderCompiler/ Source0: %{name}-%{version}.tar.xz BuildRoot: %{_tmppath}/%{name}-%{version}-build %if "%{__builder}" == "ninja" BuildRequires: ninja %endif %if 0%{?use_clang} BuildRequires: clang-devel #BuildRequires: npth-devel %if 0%{?use_lld} BuildRequires: lld %else BuildRequires: binutils-gold BuildRequires: llvm-gold %endif %else BuildRequires: binutils-gold BuildRequires: gcc-c++ %endif BuildRequires: cmake BuildRequires: llvm-devel BuildRequires: libxml2-devel BuildRequires: ocaml BuildRequires: git BuildRequires: xz Provides: directxshadercompiler = %{real_version} Provides: dxc = %{real_version} %description The DirectX Shader Compiler project includes a compiler and related tools used to compile High-Level Shader Language (HLSL) programs into DirectX Intermediate Language (DXIL) representation. Applications that make use of DirectX for graphics, games, and computation can use it to generate shader programs. %package devel Summary: DirectX Shader Compiler development files Group: Development/Graphics Requires: %{name} %description devel DirectX Shader Compiler development files %package libdxcompiler%{so_ver} Summary: DirectX Shader Compiler library Group: Development/Graphics Provides: libdxcompiler = %{version} Provides: dxc-libdxcompiler = %{real_version} %description libdxcompiler%{so_ver} DirectX Shader Compiler standalone dynamic library %package libdxcompiler-devel Summary: DirectX Shader Compiler library development files Group: Development/Graphics Requires: %{name}-libdxcompiler%{so_ver} Provides: dxc-libdxcompiler-devel = %{real_version} %description libdxcompiler-devel DirectX Shader Compiler standalone dynamic library %prep %setup -q # clean out hardcoding %if 0%{?use_clang} sed -i -e 's/ -fno-exceptions//g' -e 's/ -fno-rtti//g' -e '/add_compile_options(-fno-rtti)/d' \ external/SPIRV-Tools/CMakeLists.txt \ external/effcee/cmake/setup_build.cmake sed -i -e '/"-Werror",/d' -e '/"-fno-exceptions",/d' -e '/"-fno-rtti",/d' \ external/SPIRV-Tools/build_defs.bzl sed -i -e '/CmdArgs.push_back("-fno-exceptions");/d' -e '/CmdArgs.push_back("-fno-rtti");/d' -e '/CmdArgs.push_back("-fno-rtti-data");/d' \ tools/clang/lib/Driver/Tools.cpp sed -i -e '/list(APPEND LLVM_COMPILE_FLAGS "-fno-exceptions")/d' \ -e '/list(APPEND LLVM_COMPILE_FLAGS "-fno-rtti")/d' \ -e '/set(LLVM_REQUIRES_RTTI OFF)/d' \ cmake/modules/AddLLVM.cmake %endif sed -i -e '/add_flag_if_supported("-flto" SUPPORST_FLTO)/d' cmake/modules/HandleLLVMOptions.cmake %build # this macro needs 'BuildRequires: memory-constraints' #limit_build -m 3072 ulimit -Sn 4000 UCFLAGS="-fPIC -O3" %ifarch x86_64 export UCFLAGS="${UCFLAGS} -march=x86-64 -mtune=generic -mssse3 -msse4 -msse4.1 -msse4.2 -mavx -maes -mpclmul" %else %ifarch %ix86 export UCFLAGS="${UCFLAGS} -march=x86-64 -mtune=i586 -mssse3 -msse4 -msse4.1 -msse4.2 -mavx -maes -mpclmul" %endif %endif export ULDFLAGS="-fPIC -Wl,--gc-sections -Wl,-O1 -Wl,--icf=safe" %if 0%{?use_lld} export ULDFLAGS="${ULDFLAGS} -fuse-ld=lld" %ifarch %ix86 %arm export ULDFLAGS="${ULDFLAGS} -Wl,-z,notext" %endif export LD="lld" alias ld=ld.lld %else export ULDFLAGS="${ULDFLAGS} -fuse-ld=gold -Wl,--sort-common -Wl,-O1" export LD=ld.gold alias ld=gold %endif %if 0%{?use_clang} export CC=clang export CXX=clang++ #export CPP='clang -E' LD=ld.lld AR=llvm-ar AS=llvm-as NM=llvm-nm OBJCOPY=llvm-objcopy OBJDUMP=llvm-objdump RANLIB=llvm-ranlib export UCFLAGS="${UCFLAGS} -v -fbracket-depth=1024 -fconstexpr-depth=1024" %ifarch x86_64 #export UCFLAGS="${UCFLAGS} -fglobal-isel" %endif #export UCFLAGS="${UCFLAGS} -relocatable-pch -D_GNU_SOURCE -fexceptions" export UCXXFLAGS="${UCFLAGS} -fpermissive" export UCXXFLAGS="${UCFLAGS} -fcxx-exceptions" export HOST="$(${CC} -print-target-triple)" %if 0%{?use_lto} %if 0%{?use_lld} %global _lto_cflags -flto=thin %global _lto_ldlags -flto=thin -Wl,--plugin-opt=O3 %{?jobs:-Wl,--threads=%{jobs}} %else %global _lto_cflags -flto=thin %global _lto_ldlags -flto=thin %endif %else %global _lto_cflags %nil %global _lto_ldlags %nil %endif %else export CC=gcc export CXX=g++ export UCFLAGS="${UCFLAGS} -ftree-parallelize-loops=16 -ftree-vectorize -fvect-cost-model=cheap -fpredictive-commoning" export UCXXFLAGS="${UCFLAGS} -fpermissive" export HOST="%{_target_platform}" %if 0%{?use_lto} %global _lto_cflags -fuse-linker-plugin %_lto_cflags -ffat-lto-objects -flto-odr-type-merging %global _lto_ldlags -fuse-linker-plugin -flto=2 %else %global _lto_cflags %nil %global _lto_ldlags %nil %endif %endif export TARGET="${HOST}" export UCFLAGS="${UCFLAGS} %_lto_cflags" export UCXXFLAGS="${UCXXFLAGS} %_lto_cflags" export ULDFLAGS="${ULDFLAGS} %_lto_cflags %_lto_ldlags" # override OBS defaults ? export CFLAGS="${UCFLAGS}" export CXXFLAGS="${UCXXFLAGS}" export LDFLAGS="${ULDFLAGS}" # -DCMAKE_CXX_FLAGS='-Wno-error=restrict -Wno-error=stringop-overflow=' # -DLLVM_USE_INTEL_JITEVENTS=ON \ # -DLLVM_USE_OPROFILE=ON # -DCMAKE_BUILD_TYPE=MinSizeRel # -DHLSL_OPTIONAL_PROJS_IN_DEFAULT=ON \ # -DLLVM_OPTIMIZED_TABLEGEN=ON \ # -DLLVM_ENABLE_ASSERTIONS=ON \ # -DENABLE_EXCEPTIONS=ON \ # see https://github.com/microsoft/DirectXShaderCompiler/issues/4480 for ass-backwards workarounds from cmake/caches/PredefinedParams.cmake # LTO here makes AMDVLK screwy mkdir build cd build cmake .. \ -G Ninja \ -DCMAKE_BUILD_TYPE=Release \ %if 0%{?use_lto} -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON \ -DSUPPORST_FLTO=ON \ -DLLVM_ENABLE_LTO=ON \ %else -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=OFF \ -DSUPPORST_FLTO=OFF \ -DLLVM_ENABLE_LTO=OFF \ %endif %if 0%{?use_clang} -DCMAKE_C_COMPILER="${CC}" \ -DCMAKE_CXX_COMPILER="${CXX}" \ -DCMAKE_LINKER="${LD}" \ %endif -DCMAKE_C_FLAGS="${CFLAGS}" \ -DCMAKE_CXX_FLAGS="${CXXFLAGS}" \ -DCMAKE_EXE_LINKER_FLAGS="${LDFLAGS}" \ -DCMAKE_MODULE_LINKER_FLAGS="${LDFLAGS}" \ -DCMAKE_SHARED_LINKER_FLAGS="${LDFLAGS}" \ -DCMAKE_INSTALL_PREFIX="%{_prefix}" \ -DCMAKE_INSTALL_LIBEXEC="%{_libexecdir}" \ -DCMAKE_SKIP_RPATH=OFF \ -DCMAKE_INSTALL_RPATH="" \ -DCMAKE_BUILD_WITH_INSTALL_RPATH=OFF \ -DCMAKE_SKIP_INSTALL_RPATH=ON \ -DUSE_PCH=OFF -DENABLE_PCH=OFF \ -DENABLE_PRECOMPILED_HEADERS=OFF \ -DSKIP_PRECOMPILE_HEADERS=ON \ -DUSE_PRECOMPILED_HEADERS=OFF \ -C ../cmake/caches/PredefinedParams.cmake \ -DHLSL_OFFICIAL_BUILD=ON \ -DHLSL_OPTIONAL_PROJS_IN_DEFAULT=OFF \ -DHLSL_SUPPORT_QUERY_GIT_COMMIT_INFO=OFF \ -DLLVM_USE_FOLDERS=OFF \ -DLLVM_INSTALL_UTILS=OFF \ -DLLVM_INSTALL_TOOLCHAIN_ONLY=ON \ %if 0%{?use_clang} -DLLVM_OPTIMIZED_TABLEGEN=ON \ -DLLVM_ENABLE_ASSERTIONS=ON \ -DLLVM_ENABLE_EXCEPTIONS=ON \ -DENABLE_EXCEPTIONS=ON \ %endif -DBUILD_SHARED_LIBS=OFF \ -DBUILD_STATIC_LIBS=ON \ -DHLSL_INCLUDE_TESTS=ON \ -DSPIRV_BUILD_TESTS=OFF \ -DLLVM_USE_INTEL_JITEVENTS=ON %cmake_build %install %cmake_install mkdir -p %{buildroot}%{_includedir} || echo "whatever" if [ ! -d "%{buildroot}%{_includedir}/dxc" ]; then mv -v build/include/dxc %{buildroot}%{_includedir}/ fi mkdir -p %{buildroot}/%{_libdir} || echo "whatever" if [ ! -f "%{buildroot}/%{_libdir}/libdxcompiler.so" ]; then mv -v build/lib*/libdxc* %{buildroot}/%{_libdir}/ fi # fix correct lib folder %ifarch x86_64 if [ -d "%{buildroot}/%{_exec_prefix}/lib" ]; then mkdir -p %{buildroot}/%{_libdir} || echo "whatever" mv -v %{buildroot}/%{_exec_prefix}/lib/* %{buildroot}/%{_libdir}/ rmdir %{buildroot}/%{_exec_prefix}/lib || echo "whatever" fi %endif # Remove static libraries, don't think they are needed at all #rm %{buildroot}/%{_libdir}/*.a %files %doc README.md %license LICENSE.TXT %{_bindir}/dx* %files devel %{_includedir}/* %exclude %{_includedir}/dxc #{_includedir}/llvm* #{_datadir}/* #{_bindir}/llvm-* #{_bindir}/opt %{_libdir}/*.a %exclude %{_libdir}/libdxclib.a %files libdxcompiler%{so_ver} %{_libdir}/libdxcompiler.so* %files libdxcompiler-devel %{_includedir}/dxc #{_libdir}/libdxcompiler.so %{_libdir}/libdxclib.a %post libdxcompiler%{so_ver} -p /sbin/ldconfig %postun libdxcompiler%{so_ver} -p /sbin/ldconfig %changelog
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor