]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
[build][cmake] Fix cmake with custom assembler
authorNick Terrell <terrelln@fb.com>
Tue, 20 Dec 2022 02:54:22 +0000 (18:54 -0800)
committerNick Terrell <nickrterrell@gmail.com>
Tue, 20 Dec 2022 21:02:21 +0000 (13:02 -0800)
Tell CMake to explicitly compile our assembly as C code, because we
require it is compiled by a C compiler, and it is only enabled for
clang/gcc.

Fixes #3193.

build/cmake/CMakeLists.txt
build/cmake/lib/CMakeLists.txt

index c7453e8117a1a6656514bd7f434b0952cbb22782..0bffc87d933b9bb51c425b848d0bc1b0ef6bda0b 100644 (file)
@@ -8,18 +8,18 @@
 # ################################################################
 
 cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
-  
-# As of 2018-12-26 ZSTD has been validated to build with cmake version 3.13.2 new policies. 
-# Set and use the newest cmake policies that are validated to work 
-set(ZSTD_MAX_VALIDATED_CMAKE_MAJOR_VERSION "3") 
+
+# As of 2018-12-26 ZSTD has been validated to build with cmake version 3.13.2 new policies.
+# Set and use the newest cmake policies that are validated to work
+set(ZSTD_MAX_VALIDATED_CMAKE_MAJOR_VERSION "3")
 set(ZSTD_MAX_VALIDATED_CMAKE_MINOR_VERSION "13") #Policies never changed at PATCH level
 if("${CMAKE_MAJOR_VERSION}" LESS 3)
-  set(ZSTD_CMAKE_POLICY_VERSION "${CMAKE_VERSION}") 
-elseif( "${ZSTD_MAX_VALIDATED_CMAKE_MAJOR_VERSION}" EQUAL "${CMAKE_MAJOR_VERSION}" AND 
+  set(ZSTD_CMAKE_POLICY_VERSION "${CMAKE_VERSION}")
+elseif( "${ZSTD_MAX_VALIDATED_CMAKE_MAJOR_VERSION}" EQUAL "${CMAKE_MAJOR_VERSION}" AND
         "${ZSTD_MAX_VALIDATED_CMAKE_MINOR_VERSION}" GREATER "${CMAKE_MINOR_VERSION}")
-    set(ZSTD_CMAKE_POLICY_VERSION "${CMAKE_VERSION}") 
-else() 
-    set(ZSTD_CMAKE_POLICY_VERSION "${ZSTD_MAX_VALIDATED_CMAKE_MAJOR_VERSION}.${ZSTD_MAX_VALIDATED_CMAKE_MINOR_VERSION}.0") 
+    set(ZSTD_CMAKE_POLICY_VERSION "${CMAKE_VERSION}")
+else()
+    set(ZSTD_CMAKE_POLICY_VERSION "${ZSTD_MAX_VALIDATED_CMAKE_MAJOR_VERSION}.${ZSTD_MAX_VALIDATED_CMAKE_MINOR_VERSION}.0")
 endif()
 cmake_policy(VERSION ${ZSTD_CMAKE_POLICY_VERSION})
 
@@ -40,11 +40,13 @@ if( CMAKE_MAJOR_VERSION LESS 3 )
   set(PROJECT_VERSION_PATCH ${zstd_VERSION_PATCH})
   set(PROJECT_VERSION "${zstd_VERSION_MAJOR}.${zstd_VERSION_MINOR}.${zstd_VERSION_PATCH}")
   enable_language(C)   # Main library is in C
+  enable_language(ASM) # And ASM
   enable_language(CXX) # Testing contributed code also utilizes CXX
 else()
   project(zstd
     VERSION "${zstd_VERSION_MAJOR}.${zstd_VERSION_MINOR}.${zstd_VERSION_PATCH}"
     LANGUAGES C   # Main library is in C
+              ASM # And ASM
               CXX # Testing contributed code also utilizes CXX
     )
 endif()
index b804b20d2afaca3bdebf052bb6909c0f1364a74b..30349586ba9b3885080108c48196dd1c927e0f2b 100644 (file)
@@ -77,6 +77,12 @@ if (MSVC)
     set(PlatformDependResources ${MSVC_RESOURCE_DIR}/libzstd-dll.rc)
 endif ()
 
+# Explicitly set the language to C for all files, including ASM files.
+# Our assembly expects to be compiled by a C compiler, and is only enabled for
+# __GNUC__ compatible compilers. Otherwise all the ASM code is disabled by
+# macros.
+set_source_files_properties(${Sources} PROPERTIES LANGUAGE C)
+
 # Split project to static and shared libraries build
 set(library_targets)
 if (ZSTD_BUILD_SHARED)