| # SPDX-License-Identifier: Apache-2.0 |
| # ---------------------------------------------------------------------------- |
| # Copyright 2020-2022 Arm Limited |
| # |
| # Licensed 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: |
| # |
| # http://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. |
| # ---------------------------------------------------------------------------- |
| |
| if(${UNIVERSAL_BUILD}) |
| set(ASTC_TEST test-unit) |
| else() |
| set(ASTC_TEST test-unit-${ISA_SIMD}) |
| endif() |
| |
| add_executable(${ASTC_TEST}) |
| |
| target_sources(${ASTC_TEST} |
| PRIVATE |
| test_simd.cpp |
| test_softfloat.cpp |
| ../astcenc_mathlib_softfloat.cpp) |
| |
| target_include_directories(${ASTC_TEST} |
| PRIVATE |
| ${gtest_SOURCE_DIR}/include) |
| |
| target_compile_options(${ASTC_TEST} |
| PRIVATE |
| # Use pthreads on Linux/macOS |
| $<$<PLATFORM_ID:Linux,Darwin>:-pthread> |
| |
| # MSVC compiler defines |
| $<$<CXX_COMPILER_ID:MSVC>:/EHsc> |
| |
| # G++ and Clang++ compiler defines |
| $<$<NOT:$<CXX_COMPILER_ID:MSVC>>:-Wall> |
| $<$<NOT:$<CXX_COMPILER_ID:MSVC>>:-Wextra> |
| $<$<NOT:$<CXX_COMPILER_ID:MSVC>>:-Wpedantic> |
| $<$<NOT:$<CXX_COMPILER_ID:MSVC>>:-Werror> |
| $<$<NOT:$<CXX_COMPILER_ID:MSVC>>:-Wshadow> |
| $<$<NOT:$<CXX_COMPILER_ID:MSVC>>:-Wno-c++98-compat-pedantic> |
| $<$<NOT:$<CXX_COMPILER_ID:MSVC>>:-Wno-c++98-c++11-compat-pedantic> |
| $<$<NOT:$<CXX_COMPILER_ID:MSVC>>:-Wno-float-equal> |
| |
| # Ignore things that the googletest build triggers |
| $<$<NOT:$<CXX_COMPILER_ID:MSVC>>:-Wno-unknown-warning-option> |
| $<$<NOT:$<CXX_COMPILER_ID:MSVC>>:-Wno-double-promotion> |
| $<$<NOT:$<CXX_COMPILER_ID:MSVC>>:-Wno-undef> |
| $<$<NOT:$<CXX_COMPILER_ID:MSVC>>:-Wno-reserved-identifier> |
| $<$<NOT:$<CXX_COMPILER_ID:MSVC>>:-Wno-global-constructors>) |
| |
| # Set up configuration for SIMD ISA builds |
| if(${ISA_SIMD} MATCHES "none") |
| if(NOT ${UNIVERSAL_BUILD}) |
| target_compile_definitions(${ASTC_TEST} |
| PRIVATE |
| ASTCENC_NEON=0 |
| ASTCENC_SSE=0 |
| ASTCENC_AVX=0 |
| ASTCENC_POPCNT=0 |
| ASTCENC_F16C=0) |
| endif() |
| |
| elseif(${ISA_SIMD} MATCHES "neon") |
| if(NOT ${UNIVERSAL_BUILD}) |
| target_compile_definitions(${ASTC_TEST} |
| PRIVATE |
| ASTCENC_NEON=1 |
| ASTCENC_SSE=0 |
| ASTCENC_AVX=0 |
| ASTCENC_POPCNT=0 |
| ASTCENC_F16C=0) |
| endif() |
| |
| elseif(${ISA_SIMD} MATCHES "sse2") |
| if(NOT ${UNIVERSAL_BUILD}) |
| target_compile_definitions(${ASTC_TEST} |
| PRIVATE |
| ASTCENC_NEON=0 |
| ASTCENC_SSE=20 |
| ASTCENC_AVX=0 |
| ASTCENC_POPCNT=0 |
| ASTCENC_F16C=0) |
| endif() |
| |
| target_compile_options(${ASTC_TEST} |
| PRIVATE |
| $<$<CXX_COMPILER_ID:${GNU_LIKE}>:-msse2>) |
| |
| elseif(${ISA_SIMD} MATCHES "sse4.1") |
| if(NOT ${UNIVERSAL_BUILD}) |
| target_compile_definitions(${ASTC_TEST} |
| PRIVATE |
| ASTCENC_NEON=0 |
| ASTCENC_SSE=41 |
| ASTCENC_AVX=0 |
| ASTCENC_POPCNT=1 |
| ASTCENC_F16C=0) |
| endif() |
| |
| target_compile_options(${ASTC_TEST} |
| PRIVATE |
| $<$<NOT:$<CXX_COMPILER_ID:MSVC>>:-msse4.1 -mpopcnt>) |
| |
| elseif(${ISA_SIMD} MATCHES "avx2") |
| if(NOT ${UNIVERSAL_BUILD}) |
| target_compile_definitions(${ASTC_TEST} |
| PRIVATE |
| ASTCENC_NEON=0 |
| ASTCENC_SSE=41 |
| ASTCENC_AVX=2 |
| ASTCENC_POPCNT=1 |
| ASTCENC_F16C=1) |
| endif() |
| |
| target_compile_options(${ASTC_TEST} |
| PRIVATE |
| $<$<NOT:$<CXX_COMPILER_ID:MSVC>>:-mavx2 -mpopcnt -mf16c> |
| $<$<CXX_COMPILER_ID:MSVC>:/arch:AVX2>) |
| |
| endif() |
| |
| target_link_libraries(${ASTC_TEST} |
| PRIVATE |
| gtest_main) |
| |
| add_test(NAME ${ASTC_TEST} |
| COMMAND ${ASTC_TEST}) |
| |
| install(TARGETS ${ASTC_TEST} DESTINATION ${PACKAGE_ROOT}) |