blob: c264656812f70c72fec5cef6a041a1da2e7ce667 [file]
#[[
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
]]
set(TSFILE_SIMDE_MIN_VERSION "0.8.4")
set(TSFILE_SIMDE_BUNDLED_VERSION "0.8.4-rc3")
set(TSFILE_SIMDE_NEXT_INCOMPATIBLE_VERSION "1.0.0")
set(_TSFILE_SYSTEM_SIMDE_FOUND FALSE)
function(_tsfile_read_simde_version INCLUDE_DIR OUT_VERSION)
set(_TSFILE_SIMDE_VERSION_HEADER
"${INCLUDE_DIR}/simde/simde-common.h")
if (NOT EXISTS "${_TSFILE_SIMDE_VERSION_HEADER}")
set(${OUT_VERSION} "" PARENT_SCOPE)
return()
endif ()
file(STRINGS "${_TSFILE_SIMDE_VERSION_HEADER}"
_TSFILE_SIMDE_VERSION_LINES
REGEX "^#define SIMDE_VERSION_(MAJOR|MINOR|MICRO) [0-9]+$")
foreach (_TSFILE_SIMDE_COMPONENT MAJOR MINOR MICRO)
string(REGEX MATCH
"SIMDE_VERSION_${_TSFILE_SIMDE_COMPONENT} ([0-9]+)"
_TSFILE_SIMDE_MATCH "${_TSFILE_SIMDE_VERSION_LINES}")
set(_TSFILE_SIMDE_${_TSFILE_SIMDE_COMPONENT}
"${CMAKE_MATCH_1}")
endforeach ()
if (NOT "${_TSFILE_SIMDE_MAJOR}" STREQUAL "" AND
NOT "${_TSFILE_SIMDE_MINOR}" STREQUAL "" AND
NOT "${_TSFILE_SIMDE_MICRO}" STREQUAL "")
set(${OUT_VERSION}
"${_TSFILE_SIMDE_MAJOR}.${_TSFILE_SIMDE_MINOR}.${_TSFILE_SIMDE_MICRO}"
PARENT_SCOPE)
else ()
set(${OUT_VERSION} "" PARENT_SCOPE)
endif ()
endfunction()
if (NOT TSFILE_DEPENDENCY_SOURCE STREQUAL "BUNDLED")
cmake_policy(PUSH)
if (POLICY CMP0144)
cmake_policy(SET CMP0144 NEW)
endif ()
find_package(simde CONFIG QUIET)
cmake_policy(POP)
if (simde_FOUND AND TARGET simde::simde AND
NOT "${simde_VERSION}" STREQUAL "")
set(_TSFILE_SYSTEM_SIMDE_VERSION "${simde_VERSION}")
endif ()
if (NOT TARGET simde::simde)
find_path(TSFILE_SYSTEM_SIMDE_INCLUDE_DIR
NAMES simde/x86/ssse3.h
HINTS "${SIMDE_ROOT}" "$ENV{SIMDE_ROOT}"
PATH_SUFFIXES include)
if (TSFILE_SYSTEM_SIMDE_INCLUDE_DIR)
_tsfile_read_simde_version(
"${TSFILE_SYSTEM_SIMDE_INCLUDE_DIR}"
_TSFILE_SYSTEM_SIMDE_VERSION)
endif ()
elseif ("${_TSFILE_SYSTEM_SIMDE_VERSION}" STREQUAL "")
get_target_property(_TSFILE_SIMDE_INCLUDE_DIRS simde::simde
INTERFACE_INCLUDE_DIRECTORIES)
foreach (_TSFILE_SIMDE_INCLUDE_DIR ${_TSFILE_SIMDE_INCLUDE_DIRS})
if (NOT _TSFILE_SIMDE_INCLUDE_DIR MATCHES "^\\$<")
_tsfile_read_simde_version("${_TSFILE_SIMDE_INCLUDE_DIR}"
_TSFILE_SYSTEM_SIMDE_VERSION)
if (NOT "${_TSFILE_SYSTEM_SIMDE_VERSION}" STREQUAL "")
break()
endif ()
endif ()
endforeach ()
endif ()
if (NOT "${_TSFILE_SYSTEM_SIMDE_VERSION}" STREQUAL "" AND
NOT _TSFILE_SYSTEM_SIMDE_VERSION VERSION_LESS
TSFILE_SIMDE_MIN_VERSION AND
_TSFILE_SYSTEM_SIMDE_VERSION VERSION_LESS
TSFILE_SIMDE_NEXT_INCOMPATIBLE_VERSION)
if (NOT TARGET simde::simde)
add_library(tsfile_system_simde INTERFACE)
target_include_directories(tsfile_system_simde INTERFACE
"${TSFILE_SYSTEM_SIMDE_INCLUDE_DIR}")
add_library(simde::simde ALIAS tsfile_system_simde)
endif ()
set(_TSFILE_SYSTEM_SIMDE_FOUND TRUE)
message(STATUS
"Found compatible system SIMDe ${_TSFILE_SYSTEM_SIMDE_VERSION}")
elseif (TARGET simde::simde OR TSFILE_SYSTEM_SIMDE_INCLUDE_DIR)
message(STATUS
"Ignoring incompatible system SIMDe "
"${_TSFILE_SYSTEM_SIMDE_VERSION}; TsFile requires "
">=${TSFILE_SIMDE_MIN_VERSION} and "
"<${TSFILE_SIMDE_NEXT_INCOMPATIBLE_VERSION}")
endif ()
endif ()
tsfile_resolve_dependency_source(
"SIMDe" "${_TSFILE_SYSTEM_SIMDE_FOUND}" TSFILE_SIMDE_SOURCE)
unset(_TSFILE_SIMDE_INCLUDE_DIR)
unset(_TSFILE_SIMDE_INCLUDE_DIRS)
unset(_TSFILE_SYSTEM_SIMDE_FOUND)
unset(_TSFILE_SYSTEM_SIMDE_VERSION)