4 ErasureCodePluginJerasure.cc
5 ErasureCodeJerasure.cc)
7 add_library(jerasure_utils OBJECT ${jerasure_utils_src})
9 # Set the CFLAGS correctly for gf-complete based on SIMD compiler support
12 list(APPEND GF_COMPILE_FLAGS ARM_NEON ARCH_AARCH64)
15 list(APPEND GF_COMPILE_FLAGS ARM_NEON)
18 list(APPEND GF_COMPILE_FLAGS INTEL_SSE)
21 list(APPEND GF_COMPILE_FLAGS INTEL_SSE2)
24 list(APPEND GF_COMPILE_FLAGS INTEL_SSE3)
27 list(APPEND GF_COMPILE_FLAGS INTEL_SSSE3)
30 list(APPEND GF_COMPILE_FLAGS INTEL_SSE4_PCLMUL)
33 list(APPEND GF_COMPILE_FLAGS INTEL_SSE4)
36 list(APPEND GF_COMPILE_FLAGS INTEL_SSE4)
39 # set this to TRUE to enable debugging of SIMD detection
40 # inside gf-complete. gf-complete will printf the SIMD
41 # instructions detected to stdout.
43 list(APPEND GF_COMPILE_FLAGS DEBUG_CPU_DETECTION)
47 gf-complete/src/gf_cpu.c
48 gf-complete/src/gf_wgen.c
49 gf-complete/src/gf_w16.c
51 gf-complete/src/gf_w32.c
52 gf-complete/src/gf_w64.c
53 gf-complete/src/gf_w128.c
54 gf-complete/src/gf_general.c
55 gf-complete/src/gf_w4.c
56 gf-complete/src/gf_rand.c
57 gf-complete/src/gf_w8.c)
59 if(HAVE_ARM_NEON OR HAVE_ARMV8_SIMD)
60 list(APPEND gf-complete_srcs
61 gf-complete/src/neon/gf_w4_neon.c
62 gf-complete/src/neon/gf_w8_neon.c
63 gf-complete/src/neon/gf_w16_neon.c
64 gf-complete/src/neon/gf_w32_neon.c
65 gf-complete/src/neon/gf_w64_neon.c)
68 add_library(gf-complete_objs OBJECT ${gf-complete_srcs})
69 set_target_properties(gf-complete_objs PROPERTIES
70 COMPILE_FLAGS "${SIMD_COMPILE_FLAGS}")
71 set_target_properties(gf-complete_objs PROPERTIES
72 COMPILE_DEFINITIONS "${GF_COMPILE_FLAGS}")
77 jerasure/src/jerasure.c
78 jerasure/src/liberation.c
79 jerasure/src/reed_sol.c
81 add_library(jerasure_objs OBJECT ${jerasure_srcs})
84 $<TARGET_OBJECTS:gf-complete_objs>
85 $<TARGET_OBJECTS:jerasure_objs>
86 $<TARGET_OBJECTS:jerasure_utils>
87 $<TARGET_OBJECTS:erasure_code_objs>)
89 add_library(ec_jerasure SHARED ${ec_jerasure_objs})
90 set_target_properties(ec_jerasure PROPERTIES
92 target_link_libraries(ec_jerasure ${EXTRALIBS})
93 install(TARGETS ec_jerasure DESTINATION ${erasure_plugin_dir})
96 foreach(flavor ${jerasure_legacy_flavors})
97 set(plugin_name "ec_jerasure_${flavor}")
98 add_library(${plugin_name} SHARED ${ec_jerasure_objs})
99 set_target_properties(${plugin_name} PROPERTIES
101 install(TARGETS ${plugin_name} DESTINATION ${erasure_plugin_dir})
102 add_dependencies(ec_jerasure ${plugin_name})