Merge pull request #330252 from ExpidusOS/fix/pkgsllvm/x265

x265: fix compiling with clang
This commit is contained in:
Atemu 2024-07-30 10:12:06 +02:00 committed by GitHub
commit c7d206938a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 43 additions and 2 deletions

View File

@ -1,4 +1,5 @@
{ lib
, gccStdenv
, stdenv
, fetchurl
, fetchpatch
@ -66,7 +67,11 @@ stdenv.mkDerivation rec {
})
# Fix detection of NEON (and armv6 build) :
./fix-neon-detection.patch
];
]
# CMake files require a bit of patching to support CMAKE_ASM_COMPILER.
# Made by @RossComputerGuy for x265 v3.5.
# https://mailman.videolan.org/pipermail/x265-devel/2024-July/013734.html
++ lib.optional (stdenv.cc.isClang && !stdenv.targetPlatform.isDarwin) ./fix-clang-asm.patch;
postPatch = ''
substituteInPlace cmake/Version.cmake \
@ -89,7 +94,9 @@ stdenv.mkDerivation rec {
(mkFlag ppaSupport "ENABLE_PPA")
(mkFlag vtuneSupport "ENABLE_VTUNE")
(mkFlag werrorSupport "WARNINGS_AS_ERRORS")
];
]
# Clang does not support the endfunc directive so use GCC.
++ lib.optional (stdenv.cc.isClang && !stdenv.targetPlatform.isDarwin) "-DCMAKE_ASM_COMPILER=${gccStdenv.cc}/bin/${gccStdenv.cc.targetPrefix}gcc";
cmakeStaticLibFlags = [
"-DHIGH_BIT_DEPTH=ON"

View File

@ -0,0 +1,34 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a407271b4..593628e0f 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -310,7 +310,7 @@ if(GCC)
endif()
check_cxx_compiler_flag(-mstackrealign CC_HAS_STACK_REALIGN)
if (CC_HAS_STACK_REALIGN)
- add_definitions(-mstackrealign)
+ add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-mstackrealign>)
endif()
# Disable exceptions. Reduce executable size, increase compability.
check_cxx_compiler_flag(-fno-exceptions CC_HAS_FNO_EXCEPTIONS_FLAG)
@@ -545,7 +545,7 @@ if((MSVC_IDE OR XCODE OR GCC) AND ENABLE_ASSEMBLY)
list(APPEND ASM_OBJS ${ASM}.${SUFFIX})
add_custom_command(
OUTPUT ${ASM}.${SUFFIX}
- COMMAND ${CMAKE_CXX_COMPILER}
+ COMMAND ${CMAKE_ASM_COMPILER}
ARGS ${ARM_ARGS} -c ${ASM_SRC} -o ${ASM}.${SUFFIX}
DEPENDS ${ASM_SRC})
endforeach()
diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt
index 12b643ad5..876f3543d 100644
--- a/common/CMakeLists.txt
+++ b/common/CMakeLists.txt
@@ -16,6 +16,7 @@ endif(EXTRA_LIB)
if(ENABLE_ASSEMBLY)
set_source_files_properties(threading.cpp primitives.cpp pixel.cpp PROPERTIES COMPILE_FLAGS -DENABLE_ASSEMBLY=1)
list(APPEND VFLAGS "-DENABLE_ASSEMBLY=1")
+ enable_language(ASM)
endif(ENABLE_ASSEMBLY)
if(ENABLE_ASSEMBLY AND X86)