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 |