# jerasure plugin
-include_directories(gf-complete/include)
-include_directories(jerasure/include)
-
-set(jerasure_srcs
+set(jerasure_obj_srcs
jerasure/src/cauchy.c
jerasure/src/galois.c
jerasure/src/jerasure.c
gf-complete/src/gf_w4.c
gf-complete/src/gf_rand.c
gf-complete/src/gf_w8.c
+ )
+add_library(jerasure_objs OBJECT ${jerasure_obj_srcs})
+
+add_library(ec_jerasure_objs OBJECT
ErasureCodePluginJerasure.cc
ErasureCodeJerasure.cc
- $<TARGET_OBJECTS:erasure_code_objs>
-)
+ )
-add_library(ec_jerasure_generic SHARED ${jerasure_srcs})
+add_library(ec_jerasure_generic SHARED
+ $<TARGET_OBJECTS:ec_jerasure_objs>
+ $<TARGET_OBJECTS:jerasure_objs>
+ $<TARGET_OBJECTS:erasure_code_objs>
+ )
add_dependencies(ec_jerasure_generic ${CMAKE_SOURCE_DIR}/src/ceph_ver.h)
target_link_libraries(ec_jerasure_generic ${EXTRALIBS})
set_target_properties(ec_jerasure_generic PROPERTIES VERSION 2.0.0 SOVERSION 2)
install(TARGETS ec_jerasure_generic DESTINATION lib/erasure-code)
-set(jerasure_neon_srcs
- ${jerasure_srcs}
- erasure-code/jerasure/gf-complete/src/neon/gf_w4_neon.c
- erasure-code/jerasure/gf-complete/src/neon/gf_w8_neon.c
- erasure-code/jerasure/gf-complete/src/neon/gf_w16_neon.c
- erasure-code/jerasure/gf-complete/src/neon/gf_w32_neon.c
- erasure-code/jerasure/gf-complete/src/neon/gf_w64_neon.c)
-
-
+# ec_jerasure_neon
#TODO:build libec_jerasure_neon library on an ARM machine
if(ARM_NEON OR ARM_NEON2)
+ set(neon_objs_srcs
+ gf-complete/src/neon/gf_w4_neon.c
+ gf-complete/src/neon/gf_w8_neon.c
+ gf-complete/src/neon/gf_w16_neon.c
+ gf-complete/src/neon/gf_w32_neon.c
+ gf-complete/src/neon/gf_w64_neon.c)
+ add_library(neon_objs OBJECT ${neon_objs_srcs})
+
+ set(jerasure_neon_srcs
+ $<TARGET_OBJECTS:ec_jerasure_objs>
+ $<TARGET_OBJECTS:jerasure_objs>
+ $<TARGET_OBJECTS:neon_objs>
+ )
add_library(ec_jerasure_neon SHARED ${jerasure_neon_srcs})
add_dependencies(ec_jerasure_neon ${CMAKE_SOURCE_DIR}/src/ceph_ver.h)
target_link_libraries(ec_jerasure_neon crush pthread ${EXTRALIBS})
# ec_jerasure_sse3
if(INTEL_SSE)
- add_library(ec_jerasure_sse3 SHARED ${jerasure_srcs})
+ add_library(ec_jerasure_sse3 SHARED
+ $<TARGET_OBJECTS:jerasure_objs>
+ $<TARGET_OBJECTS:ec_jerasure_objs>)
add_dependencies(ec_jerasure_sse3 ${CMAKE_SOURCE_DIR}/src/ceph_ver.h)
target_link_libraries(ec_jerasure_sse3 ${EXTRALIBS})
set_target_properties(ec_jerasure_sse3 PROPERTIES VERSION 2.0.0 SOVERSION 2
# ec_jerasure_sse4
if(INTEL_SSE4_1)
- add_library(ec_jerasure_sse4 SHARED ${jerasure_srcs})
+ add_library(ec_jerasure_sse4 SHARED
+ $<TARGET_OBJECTS:jerasure_objs>
+ $<TARGET_OBJECTS:ec_jerasure_objs>)
add_dependencies(ec_jerasure_sse4 ${CMAKE_SOURCE_DIR}/src/ceph_ver.h)
target_link_libraries(ec_jerasure_sse4 ${EXTRALIBS})
set_target_properties(ec_jerasure_sse4 PROPERTIES VERSION 2.0.0 SOVERSION 2
#shec plugin
-set(shec_srcs
+include_directories(.)
+
+set(shec_objs_srcs
${CMAKE_SOURCE_DIR}/src/erasure-code/ErasureCode.cc
ErasureCodePluginShec.cc
ErasureCodeShec.cc
ErasureCodeShecTableCache.cc
determinant.c
- ${CMAKE_SOURCE_DIR}/src/erasure-code/jerasure/jerasure/src/cauchy.c
- ${CMAKE_SOURCE_DIR}/src/erasure-code/jerasure/jerasure/src/galois.c
- ${CMAKE_SOURCE_DIR}/src/erasure-code/jerasure/jerasure/src/jerasure.c
- ${CMAKE_SOURCE_DIR}/src/erasure-code/jerasure/jerasure/src/liberation.c
- ${CMAKE_SOURCE_DIR}/src/erasure-code/jerasure/jerasure/src/reed_sol.c
- ${CMAKE_SOURCE_DIR}/src/erasure-code/jerasure/gf-complete/src/gf_wgen.c
- ${CMAKE_SOURCE_DIR}/src/erasure-code/jerasure/gf-complete/src/gf_method.c
- ${CMAKE_SOURCE_DIR}/src/erasure-code/jerasure/gf-complete/src/gf_w16.c
- ${CMAKE_SOURCE_DIR}/src/erasure-code/jerasure/gf-complete/src/gf.c
- ${CMAKE_SOURCE_DIR}/src/erasure-code/jerasure/gf-complete/src/gf_w32.c
- ${CMAKE_SOURCE_DIR}/src/erasure-code/jerasure/gf-complete/src/gf_w64.c
- ${CMAKE_SOURCE_DIR}/src/erasure-code/jerasure/gf-complete/src/gf_w128.c
- ${CMAKE_SOURCE_DIR}/src/erasure-code/jerasure/gf-complete/src/gf_general.c
- ${CMAKE_SOURCE_DIR}/src/erasure-code/jerasure/gf-complete/src/gf_w4.c
- ${CMAKE_SOURCE_DIR}/src/erasure-code/jerasure/gf-complete/src/gf_rand.c
- ${CMAKE_SOURCE_DIR}/src/erasure-code/jerasure/gf-complete/src/gf_w8.c)
+ )
+
+add_library(shec_objs OBJECT ${shec_objs_srcs})
-include_directories(${CMAKE_SOURCE_DIR}/src/erasure-code/jerasure/jerasure/include)
-include_directories(${CMAKE_SOURCE_DIR}/src/erasure-code/jerasure/gf-complete/include)
-include_directories(${CMAKE_SOURCE_DIR}/src/erasure-code/jerasure)
-include_directories(${CMAKE_SOURCE_DIR}/src/erasure-code/shec)
-add_library(ec_shec_generic SHARED ${shec_srcs})
+add_library(ec_shec_generic SHARED
+ $<TARGET_OBJECTS:jerasure_objs>
+ $<TARGET_OBJECTS:shec_objs>)
target_link_libraries(ec_shec_generic crush pthread)
add_dependencies(ec_shec_generic ${CMAKE_SOURCE_DIR}/src/ceph_ver.h)
set_target_properties(ec_shec_generic PROPERTIES VERSION 1.0.0 SOVERSION 1)
install(TARGETS ec_shec_generic DESTINATION lib/erasure-code)
-# ec_shec_sse3
-set(shec_neon_srcs
- ${shec_srcs}
- erasure-code/jerasure/gf-complete/src/neon/gf_w4_neon.c
- erasure-code/jerasure/gf-complete/src/neon/gf_w8_neon.c
- erasure-code/jerasure/gf-complete/src/neon/gf_w16_neon.c
- erasure-code/jerasure/gf-complete/src/neon/gf_w32_neon.c
- erasure-code/jerasure/gf-complete/src/neon/gf_w64_neon.c)
-
+# ec_shec_neon
#TODO:build libec_shec_neon library on an ARM machine
if(ARM_NEON OR ARM_NEON2)
+ set(shec_neon_srcs
+ $<TARGET_OBJECTS:shec_objs>
+ $<TARGET_OBJECTS:jerasure_objs>
+ $<TARGET_OBJECTS:neon_objs>
+ )
add_library(ec_shec_neon SHARED ${shec_neon_srcs})
add_dependencies(ec_shec_neon ${CMAKE_SOURCE_DIR}/src/ceph_ver.h)
target_link_libraries(ec_shec_neon ${EXTRALIBS})
# ec_shec_sse3
if(INTEL_SSE)
- add_library(ec_shec_sse3 SHARED ${shec_srcs})
+ add_library(ec_shec_sse3 SHARED
+ $<TARGET_OBJECTS:jerasure_objs>
+ $<TARGET_OBJECTS:shec_objs>)
add_dependencies(ec_shec_sse3 ${CMAKE_SOURCE_DIR}/src/ceph_ver.h)
target_link_libraries(ec_shec_sse3 ${EXTRALIBS})
set_target_properties(ec_shec_sse3 PROPERTIES VERSION 2.0.0 SOVERSION 2
# ec_shec_sse4
if(INTEL_SSE4_1)
- add_library(ec_shec_sse4 SHARED ${shec_srcs})
+ add_library(ec_shec_sse4 SHARED
+ $<TARGET_OBJECTS:jerasure_objs>
+ $<TARGET_OBJECTS:shec_objs>)
add_dependencies(ec_shec_sse4 ${CMAKE_SOURCE_DIR}/src/ceph_ver.h)
target_link_libraries(ec_shec_sse4 ${EXTRALIBS})
set_target_properties(ec_shec_sse4 PROPERTIES VERSION 2.0.0 SOVERSION 2