set(hs_exec_SRCS ${hs_exec_SRCS} ${hs_exec_common_SRCS})
- if (HAVE_AVX2)
+ if (BUILD_AVX2)
set(hs_exec_SRCS ${hs_exec_SRCS} ${hs_exec_avx2_SRCS})
endif()
COMPILE_FLAGS "-Wno-unused-parameter -Wno-unused-function ${DISPATCHER_DEFINE}")
if (BUILD_STATIC_LIBS)
- add_library(hs_exec_core2 OBJECT ${hs_exec_SRCS})
- list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_core2>)
- set_target_properties(hs_exec_core2 PROPERTIES
- COMPILE_FLAGS "-march=core2"
- RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} core2 ${CMAKE_MODULE_PATH}/keep.syms.in"
- )
-
- add_library(hs_exec_corei7 OBJECT ${hs_exec_SRCS})
- list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_corei7>)
- set_target_properties(hs_exec_corei7 PROPERTIES
- COMPILE_FLAGS "-march=corei7"
- RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} corei7 ${CMAKE_MODULE_PATH}/keep.syms.in"
- )
-
- add_library(hs_exec_avx2 OBJECT ${hs_exec_SRCS} ${hs_exec_avx2_SRCS})
- list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_avx2>)
- set_target_properties(hs_exec_avx2 PROPERTIES
- COMPILE_FLAGS "-march=core-avx2"
- RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} avx2 ${CMAKE_MODULE_PATH}/keep.syms.in"
- )
- if (BUILD_AVX512)
- add_library(hs_exec_avx512 OBJECT ${hs_exec_SRCS} ${hs_exec_avx2_SRCS})
- list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_avx512>)
- set_target_properties(hs_exec_avx512 PROPERTIES
- COMPILE_FLAGS "${SKYLAKE_FLAG}"
- RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} avx512 ${CMAKE_MODULE_PATH}/keep.syms.in"
- )
- endif (BUILD_AVX512)
- if (BUILD_AVX512VBMI)
- add_library(hs_exec_avx512vbmi OBJECT ${hs_exec_SRCS} ${hs_exec_avx2_SRCS})
- list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_avx512vbmi>)
- set_target_properties(hs_exec_avx512vbmi PROPERTIES
- COMPILE_FLAGS "${ICELAKE_FLAG}"
- RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} avx512vbmi ${CMAKE_MODULE_PATH}/keep.syms.in"
- )
- endif (BUILD_AVX512VBMI)
-
- add_library(hs_exec_common OBJECT
- ${hs_exec_common_SRCS}
- src/dispatcher.c
- )
-
- # hs_version.c is added explicitly to avoid some build systems that refuse to
- # create a lib without any src (I'm looking at you Xcode)
-
- add_library(hs_runtime STATIC src/hs_version.c
- $<TARGET_OBJECTS:hs_exec_common>
- ${RUNTIME_LIBS})
- set_target_properties(hs_runtime PROPERTIES LINKER_LANGUAGE C)
- add_library(hs_compile OBJECT ${hs_compile_SRCS})
- if (ARCH_IA32)
- set_target_properties(hs_exec_common PROPERTIES COMPILE_FLAGS "-mssse3")
- set_target_properties(hs_compile PROPERTIES COMPILE_FLAGS "-mssse3")
- endif (ARCH_IA32)
-
- # we want the static lib for testing
- add_library(hs STATIC src/hs_version.c src/hs_valid_platform.c
- $<TARGET_OBJECTS:hs_compile>
- $<TARGET_OBJECTS:hs_exec_common>
- ${RUNTIME_LIBS})
+ add_library(hs_exec_core2 OBJECT ${hs_exec_SRCS})
+ list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_core2>)
+ set_target_properties(hs_exec_core2 PROPERTIES
+ COMPILE_FLAGS "-march=core2"
+ RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} core2 ${CMAKE_MODULE_PATH}/keep.syms.in"
+ )
+
+ add_library(hs_exec_corei7 OBJECT ${hs_exec_SRCS})
+ list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_corei7>)
+ set_target_properties(hs_exec_corei7 PROPERTIES
+ COMPILE_FLAGS "-march=corei7"
+ RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} corei7 ${CMAKE_MODULE_PATH}/keep.syms.in"
+ )
+
+ if (BUILD_AVX2)
+ add_library(hs_exec_avx2 OBJECT ${hs_exec_SRCS} ${hs_exec_avx2_SRCS})
+ list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_avx2>)
+ set_target_properties(hs_exec_avx2 PROPERTIES
+ COMPILE_FLAGS "-march=core-avx2"
+ RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} avx2 ${CMAKE_MODULE_PATH}/keep.syms.in"
+ )
+ endif (BUILD_AVX2)
+ if (BUILD_AVX512)
+ add_library(hs_exec_avx512 OBJECT ${hs_exec_SRCS} ${hs_exec_avx2_SRCS})
+ list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_avx512>)
+ set_target_properties(hs_exec_avx512 PROPERTIES
+ COMPILE_FLAGS "${SKYLAKE_FLAG}"
+ RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} avx512 ${CMAKE_MODULE_PATH}/keep.syms.in"
+ )
+ endif (BUILD_AVX512)
+ if (BUILD_AVX512VBMI)
+ add_library(hs_exec_avx512vbmi OBJECT ${hs_exec_SRCS} ${hs_exec_avx2_SRCS})
+ list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_avx512vbmi>)
+ set_target_properties(hs_exec_avx512vbmi PROPERTIES
+ COMPILE_FLAGS "${ICELAKE_FLAG}"
+ RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} avx512vbmi ${CMAKE_MODULE_PATH}/keep.syms.in"
+ )
+ endif (BUILD_AVX512VBMI)
+
+ add_library(hs_exec_common OBJECT
+ ${hs_exec_common_SRCS}
+ src/dispatcher.c
+ )
+
+ # hs_version.c is added explicitly to avoid some build systems that refuse to
+ # create a lib without any src (I'm looking at you Xcode)
+
+ add_library(hs_runtime STATIC src/hs_version.c
+ $<TARGET_OBJECTS:hs_exec_common>
+ ${RUNTIME_LIBS})
+ set_target_properties(hs_runtime PROPERTIES LINKER_LANGUAGE C)
+ add_library(hs_compile OBJECT ${hs_compile_SRCS})
+ if (ARCH_IA32)
+ set_target_properties(hs_exec_common PROPERTIES COMPILE_FLAGS "-mssse3")
+ set_target_properties(hs_compile PROPERTIES COMPILE_FLAGS "-mssse3")
+ endif (ARCH_IA32)
+
+ # we want the static lib for testing
+ add_library(hs STATIC src/hs_version.c src/hs_valid_platform.c
+ $<TARGET_OBJECTS:hs_compile>
+ $<TARGET_OBJECTS:hs_exec_common>
+ ${RUNTIME_LIBS})
endif (BUILD_STATIC_LIBS)
POSITION_INDEPENDENT_CODE TRUE
RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} corei7 ${CMAKE_MODULE_PATH}/keep.syms.in"
)
- add_library(hs_exec_shared_avx2 OBJECT ${hs_exec_SRCS} ${hs_exec_avx2_SRCS})
- list(APPEND RUNTIME_SHLIBS $<TARGET_OBJECTS:hs_exec_shared_avx2>)
- set_target_properties(hs_exec_shared_avx2 PROPERTIES
- COMPILE_FLAGS "-march=core-avx2"
- POSITION_INDEPENDENT_CODE TRUE
- RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} avx2 ${CMAKE_MODULE_PATH}/keep.syms.in"
- )
+ if (BUILD_AVX2)
+ add_library(hs_exec_shared_avx2 OBJECT ${hs_exec_SRCS} ${hs_exec_avx2_SRCS})
+ list(APPEND RUNTIME_SHLIBS $<TARGET_OBJECTS:hs_exec_shared_avx2>)
+ set_target_properties(hs_exec_shared_avx2 PROPERTIES
+ COMPILE_FLAGS "-march=core-avx2"
+ POSITION_INDEPENDENT_CODE TRUE
+ RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} avx2 ${CMAKE_MODULE_PATH}/keep.syms.in"
+ )
+ endif (BUILD_AVX2)
if (BUILD_AVX512)
add_library(hs_exec_shared_avx512 OBJECT ${hs_exec_SRCS} ${hs_exec_avx2_SRCS})
list(APPEND RUNTIME_SHLIBS $<TARGET_OBJECTS:hs_exec_shared_avx512>)
endif ()
if (FAT_RUNTIME)
+ if (NOT DEFINED(BUILD_AVX2))
+ set(BUILD_AVX2 TRUE)
+ endif ()
# test the highest level microarch to make sure everything works
if (BUILD_AVX512)
if (BUILD_AVX512VBMI)
else ()
set (CMAKE_REQUIRED_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_C_FLAGS} ${SKYLAKE_FLAG}")
endif (BUILD_AVX512VBMI)
- else ()
+ elseif (BUILD_AVX2)
set (CMAKE_REQUIRED_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_C_FLAGS} -march=core-avx2")
+ elseif ()
+ set (CMAKE_REQUIRED_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_C_FLAGS} -march=core-i7")
endif ()
else (NOT FAT_RUNTIME)
# if not fat runtime, then test given cflags
if ((ARCH_IA32 OR ARCH_X86_64) AND NOT HAVE_SSSE3)
message(FATAL_ERROR "SSSE3 support required to build fat runtime")
endif ()
- if ((ARCH_IA32 OR ARCH_X86_64) AND NOT HAVE_AVX2)
+ if ((ARCH_IA32 OR ARCH_X86_64) AND BUILD_AVX2 AND NOT HAVE_AVX2)
message(FATAL_ERROR "AVX2 support required to build fat runtime")
endif ()
if ((ARCH_IA32 OR ARCH_X86_64) AND BUILD_AVX512 AND NOT HAVE_AVX512)
message(FATAL_ERROR "AVX512 support requested but not supported")
endif ()
- if (BUILD_AVX512VBMI AND NOT HAVE_AVX512VBMI)
+ if ((ARCH_IA32 OR ARCH_X86_64) AND BUILD_AVX512VBMI AND NOT HAVE_AVX512VBMI)
message(FATAL_ERROR "AVX512VBMI support requested but not supported")
endif ()
else (NOT FAT_RUNTIME)
- if ((ARCH_IA32 OR ARCH_X86_64) AND NOT HAVE_AVX2)
+ if ((ARCH_IA32 OR ARCH_X86_64) AND NOT BUILD_AVX2)
message(STATUS "Building without AVX2 support")
endif ()
if ((ARCH_IA32 OR ARCH_X86_64) AND NOT HAVE_AVX512)
message(STATUS "Building without AVX512 support")
endif ()
- if (ARCH_IA32 OR ARCH_X86_64 AND NOT HAVE_AVX512VBMI)
+ if ((ARCH_IA32 OR ARCH_X86_64) AND NOT HAVE_AVX512VBMI)
message(STATUS "Building without AVX512VBMI support")
endif ()
if ((ARCH_IA32 OR ARCH_X86_64) AND NOT HAVE_SSSE3)