Mercurial > vec
comparison CMakeLists.txt @ 31:bf6ad516f1e6
Backed out changeset c6c99ab1088a
| author | Paper <paper@tflc.us> |
|---|---|
| date | Fri, 25 Apr 2025 17:40:33 -0400 |
| parents | 641d8c79b1da |
| children | 0de48dc864ea |
comparison
equal
deleted
inserted
replaced
| 30:641d8c79b1da | 31:bf6ad516f1e6 |
|---|---|
| 1 cmake_minimum_required(VERSION 3.23) | 1 cmake_minimum_required(VERSION 3.23) |
| 2 | 2 |
| 3 project(vec VERSION 3.0.0 DESCRIPTION "a tiny C99 SIMD vector library" LANGUAGES C) | 3 project(vec VERSION 3.0.0 DESCRIPTION "a tiny C99 SIMD vector library" LANGUAGES C) |
| 4 | 4 |
| 5 add_library(vec "src/vec.c") | 5 add_library(vec SHARED "src/vec.c;src/cpu.c;src/impl/generic.c;src/impl/fallback.c") |
| 6 | |
| 7 target_sources(vec PRIVATE | |
| 8 "src/cpu.c" | |
| 9 "src/impl/generic.c" | |
| 10 # "src/impl/fallback.c" -- deadcode | |
| 11 ) | |
| 12 | 6 |
| 13 include(CheckCCompilerFlag) | 7 include(CheckCCompilerFlag) |
| 14 | 8 |
| 15 if(MSVC) | 9 if(MSVC) |
| 16 # Untested! | 10 # Untested! |
| 53 endif() | 47 endif() |
| 54 check_c_compiler_flag("-msse2" COMPILER_HAS_SSE2) | 48 check_c_compiler_flag("-msse2" COMPILER_HAS_SSE2) |
| 55 if(COMPILER_HAS_SSE2) | 49 if(COMPILER_HAS_SSE2) |
| 56 set(COMPILER_SSE2_FLAGS "-msse2") | 50 set(COMPILER_SSE2_FLAGS "-msse2") |
| 57 endif() | 51 endif() |
| 58 check_c_compiler_flag("-msse3" COMPILER_HAS_SSE3) | |
| 59 if(COMPILER_HAS_SSE3) | |
| 60 set(COMPILER_SSE3_FLAGS "-msse3") | |
| 61 endif() | |
| 62 check_c_compiler_flag("-msse4.1" COMPILER_HAS_SSE41) | 52 check_c_compiler_flag("-msse4.1" COMPILER_HAS_SSE41) |
| 63 if(COMPILER_HAS_SSE41) | 53 if(COMPILER_HAS_SSE41) |
| 64 set(COMPILER_SSE41_FLAGS "-msse4.1") | 54 set(COMPILER_SSE41_FLAGS "-msse4.1") |
| 65 endif() | 55 endif() |
| 66 check_c_compiler_flag("-msse4.2" COMPILER_HAS_SSE42) | |
| 67 if(COMPILER_HAS_SSE42) | |
| 68 set(COMPILER_SSE42_FLAGS "-msse4.2") | |
| 69 endif() | |
| 70 check_c_compiler_flag("-mavx2" COMPILER_HAS_AVX2) | 56 check_c_compiler_flag("-mavx2" COMPILER_HAS_AVX2) |
| 71 if(COMPILER_HAS_AVX2) | 57 if(COMPILER_HAS_AVX2) |
| 72 set(COMPILER_AVX2_FLAGS "-mavx2") | 58 set(COMPILER_AVX2_FLAGS "-mavx2") |
| 73 endif() | 59 endif() |
| 74 check_c_compiler_flag("-mavx512f" COMPILER_HAS_AVX512F) | 60 check_c_compiler_flag("-mavx512f" COMPILER_HAS_AVX512F) |
| 75 if(COMPILER_HAS_AVX512F) | 61 if(COMPILER_HAS_AVX512F) |
| 76 set(COMPILER_AVX512F_FLAGS "-mavx512f") | 62 set(COMPILER_AVX512F_FLAGS "-mavx512f") |
| 77 endif() | |
| 78 check_c_compiler_flag("-mavx512bw" COMPILER_HAS_AVX512BW) | |
| 79 if(COMPILER_HAS_AVX512BW) | |
| 80 set(COMPILER_AVX512BW_FLAGS "-mavx512bw") | |
| 81 endif() | |
| 82 check_c_compiler_flag("-mavx512dq" COMPILER_HAS_AVX512DQ) | |
| 83 if(COMPILER_HAS_AVX512DQ) | |
| 84 set(COMPILER_AVX512DQ_FLAGS "-mavx512dq") | |
| 85 endif() | 63 endif() |
| 86 endif() | 64 endif() |
| 87 | 65 |
| 88 if(COMPILER_HAS_ALTIVEC) | 66 if(COMPILER_HAS_ALTIVEC) |
| 89 target_sources(vec PRIVATE "src/impl/ppc/altivec.c") | 67 target_sources(vec PRIVATE "src/impl/ppc/altivec.c") |
| 107 target_sources(vec PRIVATE "src/impl/x86/sse2.c") | 85 target_sources(vec PRIVATE "src/impl/x86/sse2.c") |
| 108 set_source_files_properties("src/impl/x86/sse2.c" PROPERTIES COMPILE_FLAGS "${COMPILER_SSE2_FLAGS}") | 86 set_source_files_properties("src/impl/x86/sse2.c" PROPERTIES COMPILE_FLAGS "${COMPILER_SSE2_FLAGS}") |
| 109 target_compile_definitions(vec PRIVATE "-DVEC_COMPILER_HAS_SSE2") | 87 target_compile_definitions(vec PRIVATE "-DVEC_COMPILER_HAS_SSE2") |
| 110 endif() | 88 endif() |
| 111 | 89 |
| 112 if(COMPILER_HAS_SSE3) | |
| 113 target_sources(vec PRIVATE "src/impl/x86/sse3.c") | |
| 114 set_source_files_properties("src/impl/x86/sse3.c" PROPERTIES COMPILE_FLAGS "${COMPILER_SSE3_FLAGS}") | |
| 115 target_compile_definitions(vec PRIVATE "-DVEC_COMPILER_HAS_SSE3") | |
| 116 endif() | |
| 117 | |
| 118 if(COMPILER_HAS_SSE41) | 90 if(COMPILER_HAS_SSE41) |
| 119 target_sources(vec PRIVATE "src/impl/x86/sse41.c") | 91 target_sources(vec PRIVATE "src/impl/x86/sse41.c") |
| 120 set_source_files_properties("src/impl/x86/sse41.c" PROPERTIES COMPILE_FLAGS "${COMPILER_SSE41_FLAGS}") | 92 set_source_files_properties("src/impl/x86/sse41.c" PROPERTIES COMPILE_FLAGS "${COMPILER_SSE41_FLAGS}") |
| 121 target_compile_definitions(vec PRIVATE "-DVEC_COMPILER_HAS_SSE41") | 93 target_compile_definitions(vec PRIVATE "-DVEC_COMPILER_HAS_SSE41") |
| 122 endif() | 94 endif() |
| 123 | 95 |
| 124 if(COMPILER_HAS_SSE42) | |
| 125 target_sources(vec PRIVATE "src/impl/x86/sse42.c") | |
| 126 set_source_files_properties("src/impl/x86/sse42.c" PROPERTIES COMPILE_FLAGS "${COMPILER_SSE42_FLAGS}") | |
| 127 target_compile_definitions(vec PRIVATE "-DVEC_COMPILER_HAS_SSE42") | |
| 128 endif() | |
| 129 | |
| 130 if(COMPILER_HAS_AVX2) | 96 if(COMPILER_HAS_AVX2) |
| 131 target_sources(vec PRIVATE "src/impl/x86/avx2.c") | 97 target_sources(vec PRIVATE "src/impl/x86/avx2.c") |
| 132 set_source_files_properties("src/impl/x86/avx2.c" PROPERTIES COMPILE_FLAGS "${COMPILER_AVX2_FLAGS}") | 98 set_source_files_properties("src/impl/x86/avx2.c" PROPERTIES COMPILE_FLAGS "${COMPILER_AVX2_FLAGS}") |
| 133 target_compile_definitions(vec PRIVATE "-DVEC_COMPILER_HAS_AVX2") | 99 target_compile_definitions(vec PRIVATE "-DVEC_COMPILER_HAS_AVX2") |
| 134 endif() | 100 endif() |
| 137 target_sources(vec PRIVATE "src/impl/x86/avx512f.c") | 103 target_sources(vec PRIVATE "src/impl/x86/avx512f.c") |
| 138 set_source_files_properties("src/impl/x86/avx512f.c" PROPERTIES COMPILE_FLAGS "${COMPILER_AVX512F_FLAGS}") | 104 set_source_files_properties("src/impl/x86/avx512f.c" PROPERTIES COMPILE_FLAGS "${COMPILER_AVX512F_FLAGS}") |
| 139 target_compile_definitions(vec PRIVATE "-DVEC_COMPILER_HAS_AVX512F") | 105 target_compile_definitions(vec PRIVATE "-DVEC_COMPILER_HAS_AVX512F") |
| 140 endif() | 106 endif() |
| 141 | 107 |
| 142 if(COMPILER_HAS_AVX512BW) | |
| 143 target_sources(vec PRIVATE "src/impl/x86/avx512bw.c") | |
| 144 set_source_files_properties("src/impl/x86/avx512bw.c" PROPERTIES COMPILE_FLAGS "${COMPILER_AVX512BW_FLAGS}") | |
| 145 target_compile_definitions(vec PRIVATE "-DVEC_COMPILER_HAS_AVX512BW") | |
| 146 endif() | |
| 147 | |
| 148 if(COMPILER_HAS_AVX512DQ) | |
| 149 target_sources(vec PRIVATE "src/impl/x86/avx512dq.c") | |
| 150 set_source_files_properties("src/impl/x86/avx512dq.c" PROPERTIES COMPILE_FLAGS "${COMPILER_AVX512DQ_FLAGS}") | |
| 151 target_compile_definitions(vec PRIVATE "-DVEC_COMPILER_HAS_AVX512DQ") | |
| 152 endif() | |
| 153 | 108 |
| 154 ######################################################################### | 109 ######################################################################### |
| 155 # integer types; it's nice to accommodate for older broken systems that | 110 # integer types; it's nice to accommodate for older broken systems that |
| 156 # may not have stdint.h. | 111 # may not have stdint.h. |
| 157 | 112 |
