]> git.ipfire.org Git - thirdparty/vectorscan.git/commitdiff
fix fat & normal build errors on arm
authorKonstantinos Margaritis <konstantinos@vectorcamp.gr>
Fri, 6 Oct 2023 22:17:18 +0000 (06:17 +0800)
committerKonstantinos Margaritis <konstantinos@vectorcamp.gr>
Fri, 6 Oct 2023 22:17:18 +0000 (06:17 +0800)
CMakeLists.txt
cmake/arch.cmake

index 788551b34275b0824fec7cc0e6d4624535048e91..5ad8e6e937c55907e962a943486fc18ccb80042f 100644 (file)
@@ -137,6 +137,16 @@ if (BUILD_AVX512VBMI)
     set(BUILD_AVX512 ON)
 endif ()
 
+if (NOT FAT_RUNTIME)
+    if (BUILD_SVE2_BITPERM)
+        set(BUILD_SVE2 ON)
+    endif ()
+
+    if (BUILD_SVE2)
+        set(BUILD_SVE ON)
+    endif ()
+endif ()
+
 # TODO: per platform config files?
 
 # remove CMake's idea of optimisation
@@ -636,7 +646,7 @@ set (hs_exec_common_SRCS
     ${hs_exec_common_SRCS}
     src/util/arch/x86/cpuid_flags.c
     )
-elseif (ARCH_ARM32 OR ARCH_AARCH64 OR ARCH_PPC64EL)
+elseif (ARCH_ARM32 OR ARCH_AARCH64)
 set (hs_exec_common_SRCS
     ${hs_exec_common_SRCS}
     src/util/arch/arm/cpuid_flags.c
@@ -801,11 +811,10 @@ set (hs_exec_SRCS
 endif ()
 endif()
 
-if (FAT_RUNTIME OR (NOT FAT_RUNTIME AND NOT BUILD_SVE2))
-set (hs_exec_SRCS
-    ${hs_exec_SRCS}
+set (hs_exec_neon_SRCS
+    src/nfa/vermicelli_simd.cpp)
+set (hs_exec_sve_SRCS
     src/nfa/vermicelli_simd.cpp)
-endif()
 
 set (hs_exec_avx2_SRCS
     src/fdr/teddy_avx2.c
@@ -1264,6 +1273,10 @@ if (NOT FAT_RUNTIME)
         set(hs_exec_SRCS ${hs_exec_SRCS} ${hs_exec_avx2_SRCS})
     endif()
 
+    if (NOT BUILD_SVE2)
+        set(hs_exec_SRCS ${hs_exec_SRCS} ${hs_exec_neon_SRCS})
+    endif()
+
     if (BUILD_STATIC_LIBS)
         add_library(hs_exec OBJECT ${hs_exec_SRCS})
 
@@ -1416,29 +1429,31 @@ else ()
     if (ARCH_AARCH64)
         set(BUILD_WRAPPER "${PROJECT_SOURCE_DIR}/cmake/build_wrapper.sh")
         if (BUILD_STATIC_LIBS)
-            add_library(hs_exec_neon OBJECT ${hs_exec_SRCS})
+           set (BUILD_SVE OFF)
+           set (BUILD_SVE2 OFF)
+           set (BUILD_SVE2_BITPERM OFF)
+           add_library(hs_exec_neon OBJECT ${hs_exec_SRCS} ${hs_exec_neon_SRCS})
             list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_neon>)
             set_target_properties(hs_exec_neon PROPERTIES
                 COMPILE_FLAGS "-march=armv8-a"
                 RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} neon ${CMAKE_MODULE_PATH}/keep.syms.in"
                 )
 
-           if (BUILD_SVE)
-                add_library(hs_exec_sve OBJECT ${hs_exec_SRCS} ${hs_exec_sve_SRCS})
-                list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_sve>)
-                set_target_properties(hs_exec_sve PROPERTIES
-                    COMPILE_FLAGS "-march=armv8-a+sve"
-                    RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} sve ${CMAKE_MODULE_PATH}/keep.syms.in"
-                    )
-            endif (BUILD_SVE)
-            if (BUILD_SVE2)
-                add_library(hs_exec_sve2 OBJECT ${hs_exec_SRCS} ${hs_exec_sve2_SRCS})
-                list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_sve2>)
-                set_target_properties(hs_exec_sve2 PROPERTIES
-                    COMPILE_FLAGS "-march=armv8-a+sve2"
-                    RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} sve2 ${CMAKE_MODULE_PATH}/keep.syms.in"
-                    )
-            endif (BUILD_SVE2)
+            set (BUILD_SVE ON)
+            add_library(hs_exec_sve OBJECT ${hs_exec_SRCS} ${hs_exec_sve_SRCS})
+            list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_sve>)
+            set_target_properties(hs_exec_sve PROPERTIES
+                COMPILE_FLAGS "-march=armv8-a+sve -DHAVE_SVE"
+                RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} sve ${CMAKE_MODULE_PATH}/keep.syms.in"
+                )
+            set (BUILD_SVE2 ON)
+           set (BUILD_SVE2_BITPERM ON)
+            add_library(hs_exec_sve2 OBJECT ${hs_exec_SRCS} ${hs_exec_sve2_SRCS})
+            list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_sve2>)
+            set_target_properties(hs_exec_sve2 PROPERTIES
+                COMPILE_FLAGS "-march=armv8-a+sve+sve2+sve2-bitperm -DHAVE_SVE -DHAVE_SVE2"
+                RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} sve2 ${CMAKE_MODULE_PATH}/keep.syms.in"
+                )
 
             add_library(hs_exec_common OBJECT
                 ${hs_exec_common_SRCS}
@@ -1462,10 +1477,13 @@ else ()
         endif (BUILD_STATIC_LIBS)
 
         if (BUILD_STATIC_AND_SHARED OR BUILD_SHARED_LIBS)
+           set (BUILD_SVE OFF)
+           set (BUILD_SVE2 OFF)
+           set (BUILD_SVE2_BITPERM OFF)
             # build shared libs
             add_library(hs_compile_shared OBJECT ${hs_compile_SRCS})
             set_target_properties(hs_compile_shared PROPERTIES POSITION_INDEPENDENT_CODE TRUE)
-            add_library(hs_exec_shared_neon OBJECT ${hs_exec_SRCS})
+           add_library(hs_exec_shared_neon OBJECT ${hs_exec_SRCS} ${hs_exec_neon_SRCS})
             list(APPEND RUNTIME_SHLIBS $<TARGET_OBJECTS:hs_exec_shared_neon>)
             set_target_properties(hs_exec_shared_neon PROPERTIES
                 COMPILE_FLAGS "-march=armv8-a"
@@ -1473,24 +1491,23 @@ else ()
                 RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} neon ${CMAKE_MODULE_PATH}/keep.syms.in"
                 )
 
-            if (BUILD_SVE)
-                add_library(hs_exec_shared_sve OBJECT ${hs_exec_SRCS} ${hs_exec_sve_SRCS})
-                list(APPEND RUNTIME_SHLIBS $<TARGET_OBJECTS:hs_exec_shared_sve>)
-                set_target_properties(hs_exec_shared_sve PROPERTIES
-                    COMPILE_FLAGS "-march=armv8-a+sve"
-                    POSITION_INDEPENDENT_CODE TRUE
-                    RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} sve ${CMAKE_MODULE_PATH}/keep.syms.in"
-                    )
-            endif (BUILD_SVE)
-            if (BUILD_SVE2)
-                add_library(hs_exec_shared_sve2 OBJECT ${hs_exec_SRCS} ${hs_exec_sve2_SRCS})
-                list(APPEND RUNTIME_SHLIBS $<TARGET_OBJECTS:hs_exec_shared_sve2>)
-                set_target_properties(hs_exec_shared_sve2 PROPERTIES
-                    COMPILE_FLAGS "-march=armv8-a+sve2"
-                    POSITION_INDEPENDENT_CODE TRUE
-                    RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} sve2 ${CMAKE_MODULE_PATH}/keep.syms.in"
-                    )
-            endif (BUILD_SVE2)
+            set (BUILD_SVE ON)
+            add_library(hs_exec_shared_sve OBJECT ${hs_exec_SRCS} ${hs_exec_sve_SRCS})
+            list(APPEND RUNTIME_SHLIBS $<TARGET_OBJECTS:hs_exec_shared_sve>)
+            set_target_properties(hs_exec_shared_sve PROPERTIES
+                   COMPILE_FLAGS "-march=armv8-a+sve -DHAVE_SVE"
+                POSITION_INDEPENDENT_CODE TRUE
+                RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} sve ${CMAKE_MODULE_PATH}/keep.syms.in"
+                )
+            set (BUILD_SVE2 ON)
+            set (BUILD_SVE2_BITPERM ON)
+            add_library(hs_exec_shared_sve2 OBJECT ${hs_exec_SRCS} ${hs_exec_sve2_SRCS})
+            list(APPEND RUNTIME_SHLIBS $<TARGET_OBJECTS:hs_exec_shared_sve2>)
+            set_target_properties(hs_exec_shared_sve2 PROPERTIES
+                COMPILE_FLAGS "-march=armv8-a+sve+sve2+sve2-bitperm -DHAVE_SVE -DHAVE_SVE2"
+                POSITION_INDEPENDENT_CODE TRUE
+                RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} sve2 ${CMAKE_MODULE_PATH}/keep.syms.in"
+                )
             add_library(hs_exec_common_shared OBJECT
             ${hs_exec_common_SRCS}
             src/dispatcher.c
index 2a94e93f5729991d74188c9c34cb522bf30c802a..f2c060ea9e133a0412b9619d8e8362287dc1d25f 100644 (file)
@@ -35,7 +35,7 @@ if (ARCH_AARCH64)
             svuint8_t a = svbext(svdup_u8(1), svdup_u8(2));
             (void)a;
         }" HAVE_SVE2_BITPERM)
-        if (HAVE_SVE2_BITPERM)
+       if (HAVE_SVE2_BITPERM AND NOT FAT_RUNTIME)
             add_definitions(-DHAVE_SVE2_BITPERM)
         endif ()
     endif()
@@ -47,7 +47,7 @@ if (ARCH_AARCH64)
             (void)a;
         }" HAVE_SVE2)
     endif()
-    if (HAVE_SVE2 OR HAVE_SVE2_BITPERM)
+    if ((HAVE_SVE2 OR HAVE_SVE2_BITPERM) AND NOT FAT_RUNTIME)
         add_definitions(-DHAVE_SVE2)
     endif ()
     if (BUILD_SVE)
@@ -58,7 +58,7 @@ if (ARCH_AARCH64)
             (void)a;
         }" HAVE_SVE)
     endif ()
-    if (HAVE_SVE OR HAVE_SVE2 OR HAVE_SVE2_BITPERM)
+    if ((HAVE_SVE OR HAVE_SVE2 OR HAVE_SVE2_BITPERM) AND NOT FAT_RUNTIME)
         add_definitions(-DHAVE_SVE)
     endif ()
     set(CMAKE_C_FLAGS "${PREV_FLAGS}")