Skip to content

Commit 16faf81

Browse files
authored
Merge pull request #1909 from veg/develop
v2.5.82
2 parents a3fcbdd + 7ff1434 commit 16faf81

File tree

20 files changed

+42089
-41957
lines changed

20 files changed

+42089
-41957
lines changed
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
name: Build and Test
2+
3+
on:
4+
push:
5+
branches: [ master ]
6+
7+
jobs:
8+
build:
9+
name: ${{ matrix.name }}
10+
runs-on: ${{ matrix.os }}
11+
strategy:
12+
matrix:
13+
include:
14+
- name: "x86-64 AVX2"
15+
os: ubuntu-latest
16+
cmake_flags: ""
17+
- name: "x86-64 no-AVX2"
18+
os: ubuntu-latest
19+
cmake_flags: "-DNOAVX=ON"
20+
- name: "x86-64 no-SSE-AVX"
21+
os: ubuntu-latest
22+
cmake_flags: "-DNOAVX=ON -DNOSSE4=ON"
23+
- name: "ARM64"
24+
os: macos-latest-xlarge
25+
cmake_flags: ""
26+
arch: "aarch64"
27+
- name: "ARM64 no-NEON"
28+
os: macos-latest-xlarge
29+
cmake_flags: "-DNONEON=ON"
30+
arch: "aarch64"
31+
32+
steps:
33+
- uses: actions/checkout@v3
34+
35+
- name: Install GCC 13
36+
if: matrix.arch != 'aarch64'
37+
run: |
38+
sudo apt-get update
39+
sudo apt-get install -y software-properties-common
40+
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
41+
sudo apt-get update
42+
sudo apt-get install -y gcc-13 g++-13
43+
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 100
44+
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-13 100
45+
46+
- name: Set up QEMU
47+
if: matrix.arch == 'aarch64'
48+
uses: docker/setup-qemu-action@v3
49+
50+
- name: Build and test
51+
run: |
52+
if [ "${{ matrix.arch }}" == "aarch64" ]; then
53+
docker run --rm --platform linux/arm64 -v ${{ github.workspace }}:/ws:rw --workdir=/ws arm64v8/ubuntu:20.04 bash -c "apt-get update && apt-get install -y software-properties-common && add-apt-repository -y ppa:ubuntu-toolchain-r/test && apt-get update && apt-get install -y cmake make gcc-13 g++-13 && cmake -DCMAKE_C_COMPILER=gcc-13 -DCMAKE_CXX_COMPILER=g++-13 . ${{ matrix.cmake_flags }} && make -j$(nproc) && ctest --stop-on-failure --output-on-failure"
54+
else
55+
cmake . ${{ matrix.cmake_flags }}
56+
make -j$(nproc)
57+
ctest --stop-on-failure --output-on-failure
58+
fi

CMakeLists.txt

Lines changed: 17 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ if(USE_GCC_ANALYZER)
8484
endif()
8585

8686
if(TARGET_NATIVE)
87-
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
87+
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
8888
check_cxx_compiler_flag("-march=native" COMPILER_SUPPORTS_MARCH_NATIVE)
8989
if(COMPILER_SUPPORTS_MARCH_NATIVE)
9090
list(APPEND COMMON_COMPILE_FLAGS "-march=native")
@@ -93,55 +93,41 @@ if(TARGET_NATIVE)
9393
if(COMPILER_SUPPORTS_MTUNE_NATIVE)
9494
list(APPEND COMMON_COMPILE_FLAGS "-mtune=native")
9595
endif()
96+
elseif(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
97+
check_cxx_compiler_flag("-mtune=native" COMPILER_SUPPORTS_MTUNE_NATIVE)
98+
if(COMPILER_SUPPORTS_MTUNE_NATIVE)
99+
list(APPEND COMMON_COMPILE_FLAGS "-mtune=native")
100+
endif()
96101
endif()
97102
endif()
98103

99104
if(NOT NONEON)
100105
set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
101106
set(CMAKE_REQUIRED_FLAGS "")
102-
check_cxx_source_compiles("
103-
#include <arm_neon.h>
104-
int main() {
105-
float32x4_t vec = vdupq_n_f32(0.0f);
106-
(void)vec;
107-
return 0;
108-
}
109-
" HYPHY_HAVE_NEON)
107+
check_cxx_source_compiles("#include <arm_neon.h>\nint main() {\n float32x4_t vec = vdupq_n_f32(0.0f);\n (void)vec;\n return 0;\n}\n" HYPHY_HAVE_NEON)
110108
if(HYPHY_HAVE_NEON)
111109
add_compile_definitions(_SLKP_USE_ARM_NEON)
112110
endif()
113111
set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS})
114112
endif()
115113

114+
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
115+
list(APPEND COMMON_COMPILE_FLAGS "-Wno-overloaded-virtual")
116+
list(APPEND COMMON_COMPILE_FLAGS "-Wno-maybe-uninitialized")
117+
endif()
118+
116119
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
117120
if(NOT HYPHY_HAVE_NEON AND NOT CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
118-
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
119-
list(APPEND COMMON_COMPILE_FLAGS "-Wno-overloaded-virtual")
120-
endif()
121121
endif()
122122
if(NOT NOAVX)
123123
set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
124124
set(CMAKE_REQUIRED_FLAGS "-mavx2")
125-
check_cxx_source_compiles("
126-
#include <immintrin.h>
127-
int main() {
128-
__m256d vec = _mm256_setzero_pd();
129-
(void)vec;
130-
return 0;
131-
}
132-
" HYPHY_HAVE_AVX2)
125+
check_cxx_source_compiles("#include <immintrin.h>\nint main() {\n __m256d vec = _mm256_setzero_pd();\n (void)vec;\n return 0;\n}\n" HYPHY_HAVE_AVX2)
133126
if(HYPHY_HAVE_AVX2)
134127
list(APPEND HYPHY_SIMD_FLAGS "-mavx2")
135128
add_compile_definitions(_SLKP_USE_AVX_INTRINSICS)
136129
set(CMAKE_REQUIRED_FLAGS "-mfma")
137-
check_cxx_source_compiles("
138-
#include <immintrin.h>
139-
int main() {
140-
__m256d vec = _mm256_setzero_pd();
141-
(void)vec;
142-
return 0;
143-
}
144-
" HYPHY_HAVE_FMA)
130+
check_cxx_source_compiles("#include <immintrin.h>\nint main() {\n __m256d vec = _mm256_setzero_pd();\n (void)vec;\n return 0;\n}\n" HYPHY_HAVE_FMA)
145131
if(HYPHY_HAVE_FMA)
146132
list(APPEND HYPHY_SIMD_FLAGS "-mfma")
147133
add_compile_definitions(_SLKP_USE_FMA3_INTRINSICS)
@@ -151,14 +137,7 @@ int main() {
151137
elseif(NOT NOSSE4)
152138
set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
153139
set(CMAKE_REQUIRED_FLAGS "-msse4.1")
154-
check_cxx_source_compiles("
155-
#include <smmintrin.h>
156-
int main() {
157-
__m128i vec = _mm_setzero_si128();
158-
(void)vec;
159-
return 0;
160-
}
161-
" HYPHY_HAVE_SSE41)
140+
check_cxx_source_compiles("#include <smmintrin.h>\nint main() {\n __m128i vec = _mm_setzero_si128();\n (void)vec;\n return 0;\n}\n" HYPHY_HAVE_SSE41)
162141
if(HYPHY_HAVE_SSE41)
163142
list(APPEND HYPHY_SIMD_FLAGS "-msse4.1")
164143
add_compile_definitions(_SLKP_USE_SSE_INTRINSICS)
@@ -277,7 +256,7 @@ install(TARGETS hyphy RUNTIME DESTINATION bin)
277256
# Other Executables
278257
#------------------------------------------------------------------------------
279258
if(MPI_FOUND)
280-
add_executable(HYPHYMPI EXCLUDE_FROM_ALL ${SRC_COMMON} ${SRC_UNIXMAIN})
259+
add_executable(HYPHYMPI ${SRC_COMMON} ${SRC_UNIXMAIN})
281260
target_compile_options(HYPHYMPI PRIVATE ${COMMON_COMPILE_FLAGS} ${HYPHY_SIMD_FLAGS})
282261
target_compile_definitions(HYPHYMPI PRIVATE
283262
__AFYP_REWRITE_BGM__
@@ -307,7 +286,7 @@ if(MPI_FOUND)
307286
target_include_directories(HYPHYMPI PRIVATE ${ZLIB_INCLUDE_DIRS})
308287
target_compile_definitions(HYPHYMPI PRIVATE __ZLIB__)
309288
endif()
310-
install(TARGETS HYPHYMPI RUNTIME DESTINATION bin OPTIONAL)
289+
install(TARGETS HYPHYMPI RUNTIME DESTINATION bin)
311290
endif()
312291

313292
add_executable(HYPHYDEBUG EXCLUDE_FROM_ALL ${SRC_COMMON} ${SRC_UNIXMAIN})

0 commit comments

Comments
 (0)