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)
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

View 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}")