fix fat & normal build errors on arm

This commit is contained in:
Konstantinos Margaritis 2023-10-07 06:17:18 +08:00
parent 55cae8c807
commit 7a2ccd7773
2 changed files with 61 additions and 44 deletions

View File

@ -137,6 +137,16 @@ if (BUILD_AVX512VBMI)
set(BUILD_AVX512 ON) set(BUILD_AVX512 ON)
endif () 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? # TODO: per platform config files?
# remove CMake's idea of optimisation # remove CMake's idea of optimisation
@ -636,7 +646,7 @@ set (hs_exec_common_SRCS
${hs_exec_common_SRCS} ${hs_exec_common_SRCS}
src/util/arch/x86/cpuid_flags.c 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 set (hs_exec_common_SRCS
${hs_exec_common_SRCS} ${hs_exec_common_SRCS}
src/util/arch/arm/cpuid_flags.c src/util/arch/arm/cpuid_flags.c
@ -801,11 +811,10 @@ set (hs_exec_SRCS
endif () endif ()
endif() endif()
if (FAT_RUNTIME OR (NOT FAT_RUNTIME AND NOT BUILD_SVE2)) set (hs_exec_neon_SRCS
set (hs_exec_SRCS src/nfa/vermicelli_simd.cpp)
${hs_exec_SRCS} set (hs_exec_sve_SRCS
src/nfa/vermicelli_simd.cpp) src/nfa/vermicelli_simd.cpp)
endif()
set (hs_exec_avx2_SRCS set (hs_exec_avx2_SRCS
src/fdr/teddy_avx2.c src/fdr/teddy_avx2.c
@ -1264,6 +1273,10 @@ if (NOT FAT_RUNTIME)
set(hs_exec_SRCS ${hs_exec_SRCS} ${hs_exec_avx2_SRCS}) set(hs_exec_SRCS ${hs_exec_SRCS} ${hs_exec_avx2_SRCS})
endif() endif()
if (NOT BUILD_SVE2)
set(hs_exec_SRCS ${hs_exec_SRCS} ${hs_exec_neon_SRCS})
endif()
if (BUILD_STATIC_LIBS) if (BUILD_STATIC_LIBS)
add_library(hs_exec OBJECT ${hs_exec_SRCS}) add_library(hs_exec OBJECT ${hs_exec_SRCS})
@ -1416,29 +1429,31 @@ else ()
if (ARCH_AARCH64) if (ARCH_AARCH64)
set(BUILD_WRAPPER "${PROJECT_SOURCE_DIR}/cmake/build_wrapper.sh") set(BUILD_WRAPPER "${PROJECT_SOURCE_DIR}/cmake/build_wrapper.sh")
if (BUILD_STATIC_LIBS) 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>) list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_neon>)
set_target_properties(hs_exec_neon PROPERTIES set_target_properties(hs_exec_neon PROPERTIES
COMPILE_FLAGS "-march=armv8-a" COMPILE_FLAGS "-march=armv8-a"
RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} neon ${CMAKE_MODULE_PATH}/keep.syms.in" RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} neon ${CMAKE_MODULE_PATH}/keep.syms.in"
) )
if (BUILD_SVE) set (BUILD_SVE ON)
add_library(hs_exec_sve OBJECT ${hs_exec_SRCS} ${hs_exec_sve_SRCS}) add_library(hs_exec_sve OBJECT ${hs_exec_SRCS} ${hs_exec_sve_SRCS})
list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_sve>) list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_sve>)
set_target_properties(hs_exec_sve PROPERTIES set_target_properties(hs_exec_sve PROPERTIES
COMPILE_FLAGS "-march=armv8-a+sve" COMPILE_FLAGS "-march=armv8-a+sve -DHAVE_SVE"
RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} sve ${CMAKE_MODULE_PATH}/keep.syms.in" RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} sve ${CMAKE_MODULE_PATH}/keep.syms.in"
) )
endif (BUILD_SVE) set (BUILD_SVE2 ON)
if (BUILD_SVE2) set (BUILD_SVE2_BITPERM ON)
add_library(hs_exec_sve2 OBJECT ${hs_exec_SRCS} ${hs_exec_sve2_SRCS}) add_library(hs_exec_sve2 OBJECT ${hs_exec_SRCS} ${hs_exec_sve2_SRCS})
list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_sve2>) list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_sve2>)
set_target_properties(hs_exec_sve2 PROPERTIES set_target_properties(hs_exec_sve2 PROPERTIES
COMPILE_FLAGS "-march=armv8-a+sve2" 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" RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} sve2 ${CMAKE_MODULE_PATH}/keep.syms.in"
) )
endif (BUILD_SVE2)
add_library(hs_exec_common OBJECT add_library(hs_exec_common OBJECT
${hs_exec_common_SRCS} ${hs_exec_common_SRCS}
@ -1462,10 +1477,13 @@ else ()
endif (BUILD_STATIC_LIBS) endif (BUILD_STATIC_LIBS)
if (BUILD_STATIC_AND_SHARED OR BUILD_SHARED_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 # build shared libs
add_library(hs_compile_shared OBJECT ${hs_compile_SRCS}) add_library(hs_compile_shared OBJECT ${hs_compile_SRCS})
set_target_properties(hs_compile_shared PROPERTIES POSITION_INDEPENDENT_CODE TRUE) 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>) list(APPEND RUNTIME_SHLIBS $<TARGET_OBJECTS:hs_exec_shared_neon>)
set_target_properties(hs_exec_shared_neon PROPERTIES set_target_properties(hs_exec_shared_neon PROPERTIES
COMPILE_FLAGS "-march=armv8-a" COMPILE_FLAGS "-march=armv8-a"
@ -1473,24 +1491,23 @@ else ()
RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} neon ${CMAKE_MODULE_PATH}/keep.syms.in" RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} neon ${CMAKE_MODULE_PATH}/keep.syms.in"
) )
if (BUILD_SVE) set (BUILD_SVE ON)
add_library(hs_exec_shared_sve OBJECT ${hs_exec_SRCS} ${hs_exec_sve_SRCS}) add_library(hs_exec_shared_sve OBJECT ${hs_exec_SRCS} ${hs_exec_sve_SRCS})
list(APPEND RUNTIME_SHLIBS $<TARGET_OBJECTS:hs_exec_shared_sve>) list(APPEND RUNTIME_SHLIBS $<TARGET_OBJECTS:hs_exec_shared_sve>)
set_target_properties(hs_exec_shared_sve PROPERTIES set_target_properties(hs_exec_shared_sve PROPERTIES
COMPILE_FLAGS "-march=armv8-a+sve" COMPILE_FLAGS "-march=armv8-a+sve -DHAVE_SVE"
POSITION_INDEPENDENT_CODE TRUE POSITION_INDEPENDENT_CODE TRUE
RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} sve ${CMAKE_MODULE_PATH}/keep.syms.in" RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} sve ${CMAKE_MODULE_PATH}/keep.syms.in"
) )
endif (BUILD_SVE) set (BUILD_SVE2 ON)
if (BUILD_SVE2) set (BUILD_SVE2_BITPERM ON)
add_library(hs_exec_shared_sve2 OBJECT ${hs_exec_SRCS} ${hs_exec_sve2_SRCS}) add_library(hs_exec_shared_sve2 OBJECT ${hs_exec_SRCS} ${hs_exec_sve2_SRCS})
list(APPEND RUNTIME_SHLIBS $<TARGET_OBJECTS:hs_exec_shared_sve2>) list(APPEND RUNTIME_SHLIBS $<TARGET_OBJECTS:hs_exec_shared_sve2>)
set_target_properties(hs_exec_shared_sve2 PROPERTIES set_target_properties(hs_exec_shared_sve2 PROPERTIES
COMPILE_FLAGS "-march=armv8-a+sve2" COMPILE_FLAGS "-march=armv8-a+sve+sve2+sve2-bitperm -DHAVE_SVE -DHAVE_SVE2"
POSITION_INDEPENDENT_CODE TRUE POSITION_INDEPENDENT_CODE TRUE
RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} sve2 ${CMAKE_MODULE_PATH}/keep.syms.in" RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} sve2 ${CMAKE_MODULE_PATH}/keep.syms.in"
) )
endif (BUILD_SVE2)
add_library(hs_exec_common_shared OBJECT add_library(hs_exec_common_shared OBJECT
${hs_exec_common_SRCS} ${hs_exec_common_SRCS}
src/dispatcher.c src/dispatcher.c

View File

@ -35,7 +35,7 @@ if (ARCH_AARCH64)
svuint8_t a = svbext(svdup_u8(1), svdup_u8(2)); svuint8_t a = svbext(svdup_u8(1), svdup_u8(2));
(void)a; (void)a;
}" HAVE_SVE2_BITPERM) }" HAVE_SVE2_BITPERM)
if (HAVE_SVE2_BITPERM) if (HAVE_SVE2_BITPERM AND NOT FAT_RUNTIME)
add_definitions(-DHAVE_SVE2_BITPERM) add_definitions(-DHAVE_SVE2_BITPERM)
endif () endif ()
endif() endif()
@ -47,7 +47,7 @@ if (ARCH_AARCH64)
(void)a; (void)a;
}" HAVE_SVE2) }" HAVE_SVE2)
endif() endif()
if (HAVE_SVE2 OR HAVE_SVE2_BITPERM) if ((HAVE_SVE2 OR HAVE_SVE2_BITPERM) AND NOT FAT_RUNTIME)
add_definitions(-DHAVE_SVE2) add_definitions(-DHAVE_SVE2)
endif () endif ()
if (BUILD_SVE) if (BUILD_SVE)
@ -58,7 +58,7 @@ if (ARCH_AARCH64)
(void)a; (void)a;
}" HAVE_SVE) }" HAVE_SVE)
endif () 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) add_definitions(-DHAVE_SVE)
endif () endif ()
set(CMAKE_C_FLAGS "${PREV_FLAGS}") set(CMAKE_C_FLAGS "${PREV_FLAGS}")