mirror of
https://github.com/facebook/zstd.git
synced 2025-07-29 11:21:22 +03:00
[build][cmake] Fix cmake with custom assembler
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.
This commit is contained in:
committed by
Nick Terrell
parent
ea199876e2
commit
651a381060
@ -8,18 +8,18 @@
|
|||||||
# ################################################################
|
# ################################################################
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
|
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.
|
# 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 and use the newest cmake policies that are validated to work
|
||||||
set(ZSTD_MAX_VALIDATED_CMAKE_MAJOR_VERSION "3")
|
set(ZSTD_MAX_VALIDATED_CMAKE_MAJOR_VERSION "3")
|
||||||
set(ZSTD_MAX_VALIDATED_CMAKE_MINOR_VERSION "13") #Policies never changed at PATCH level
|
set(ZSTD_MAX_VALIDATED_CMAKE_MINOR_VERSION "13") #Policies never changed at PATCH level
|
||||||
if("${CMAKE_MAJOR_VERSION}" LESS 3)
|
if("${CMAKE_MAJOR_VERSION}" LESS 3)
|
||||||
set(ZSTD_CMAKE_POLICY_VERSION "${CMAKE_VERSION}")
|
set(ZSTD_CMAKE_POLICY_VERSION "${CMAKE_VERSION}")
|
||||||
elseif( "${ZSTD_MAX_VALIDATED_CMAKE_MAJOR_VERSION}" EQUAL "${CMAKE_MAJOR_VERSION}" AND
|
elseif( "${ZSTD_MAX_VALIDATED_CMAKE_MAJOR_VERSION}" EQUAL "${CMAKE_MAJOR_VERSION}" AND
|
||||||
"${ZSTD_MAX_VALIDATED_CMAKE_MINOR_VERSION}" GREATER "${CMAKE_MINOR_VERSION}")
|
"${ZSTD_MAX_VALIDATED_CMAKE_MINOR_VERSION}" GREATER "${CMAKE_MINOR_VERSION}")
|
||||||
set(ZSTD_CMAKE_POLICY_VERSION "${CMAKE_VERSION}")
|
set(ZSTD_CMAKE_POLICY_VERSION "${CMAKE_VERSION}")
|
||||||
else()
|
else()
|
||||||
set(ZSTD_CMAKE_POLICY_VERSION "${ZSTD_MAX_VALIDATED_CMAKE_MAJOR_VERSION}.${ZSTD_MAX_VALIDATED_CMAKE_MINOR_VERSION}.0")
|
set(ZSTD_CMAKE_POLICY_VERSION "${ZSTD_MAX_VALIDATED_CMAKE_MAJOR_VERSION}.${ZSTD_MAX_VALIDATED_CMAKE_MINOR_VERSION}.0")
|
||||||
endif()
|
endif()
|
||||||
cmake_policy(VERSION ${ZSTD_CMAKE_POLICY_VERSION})
|
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_PATCH ${zstd_VERSION_PATCH})
|
||||||
set(PROJECT_VERSION "${zstd_VERSION_MAJOR}.${zstd_VERSION_MINOR}.${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(C) # Main library is in C
|
||||||
|
enable_language(ASM) # And ASM
|
||||||
enable_language(CXX) # Testing contributed code also utilizes CXX
|
enable_language(CXX) # Testing contributed code also utilizes CXX
|
||||||
else()
|
else()
|
||||||
project(zstd
|
project(zstd
|
||||||
VERSION "${zstd_VERSION_MAJOR}.${zstd_VERSION_MINOR}.${zstd_VERSION_PATCH}"
|
VERSION "${zstd_VERSION_MAJOR}.${zstd_VERSION_MINOR}.${zstd_VERSION_PATCH}"
|
||||||
LANGUAGES C # Main library is in C
|
LANGUAGES C # Main library is in C
|
||||||
|
ASM # And ASM
|
||||||
CXX # Testing contributed code also utilizes CXX
|
CXX # Testing contributed code also utilizes CXX
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
@ -77,6 +77,12 @@ if (MSVC)
|
|||||||
set(PlatformDependResources ${MSVC_RESOURCE_DIR}/libzstd-dll.rc)
|
set(PlatformDependResources ${MSVC_RESOURCE_DIR}/libzstd-dll.rc)
|
||||||
endif ()
|
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
|
# Split project to static and shared libraries build
|
||||||
set(library_targets)
|
set(library_targets)
|
||||||
if (ZSTD_BUILD_SHARED)
|
if (ZSTD_BUILD_SHARED)
|
||||||
|
Reference in New Issue
Block a user