@@ -33,6 +33,7 @@ option(WITH_FUZZ "build with fuzzing binaries" OFF)
3333option (WITH_MAN_OPTION "build with --man option" ON )
3434option (ENABLE_PERFMON "enable performance monitor in all tools" ON )
3535option (ENABLE_FLAC "build with FLAC support" ON )
36+ option (ENABLE_RICEPP "build with RICEPP compression support" ON )
3637if (WIN32 )
3738 set (PREFER_SYSTEM_LIBFMT ON )
3839 set (PREFER_SYSTEM_ZSTD ON )
@@ -218,6 +219,7 @@ else()
218219endif ()
219220
220221find_package (Boost 1.67 REQUIRED COMPONENTS chrono iostreams program_options)
222+ find_package (range-v3 CONFIG REQUIRED)
221223
222224if (STATIC_BUILD_DO_NOT_USE)
223225 set (CMAKE_FIND_LIBRARY_SUFFIXES .a)
@@ -397,6 +399,10 @@ if(DWARFS_OPTIMIZE)
397399 string (REPLACE "-O3" "-O${DWARFS_OPTIMIZE} " CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} " )
398400endif ()
399401
402+ if (ENABLE_RICEPP)
403+ add_subdirectory (ricepp)
404+ endif ()
405+
400406list (APPEND LIBDWARFS_SRC
401407 src/dwarfs/block_cache.cpp
402408 src/dwarfs/block_compressor.cpp
@@ -507,10 +513,15 @@ list(
507513 APPEND
508514 LIBDWARFS_CATEGORIZER_SRC
509515 # src/dwarfs/categorizer/binary_categorizer.cpp
516+ src/dwarfs/categorizer/fits_categorizer.cpp
510517 src/dwarfs/categorizer/incompressible_categorizer.cpp
511518 src/dwarfs/categorizer/pcmaudio_categorizer.cpp
512519)
513520
521+ if (ENABLE_RICEPP)
522+ list (APPEND LIBDWARFS_COMPRESSION_SRC src/dwarfs/compression/ricepp.cpp)
523+ endif ()
524+
514525# if(LIBMAGIC_FOUND)
515526# list(APPEND LIBDWARFS_CATEGORIZER_SRC src/dwarfs/categorizer/libmagic_categorizer.cpp)
516527# endif()
@@ -540,8 +551,11 @@ target_compile_definitions(
540551 PRJ_COMPILER_ID="${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION} "
541552)
542553
543- target_link_libraries (dwarfs_categorizer folly)
554+ target_link_libraries (dwarfs_categorizer folly range-v3::range-v3 )
544555target_link_libraries (dwarfs_compression folly compression_thrift)
556+ if (ENABLE_RICEPP)
557+ target_link_libraries (dwarfs_compression ricepp)
558+ endif ()
545559target_link_libraries (dwarfs_tool dwarfs)
546560
547561if (STATIC_BUILD_DO_NOT_USE)
@@ -660,6 +674,7 @@ if(WITH_TESTS)
660674 error_test
661675 file_access_test
662676 filesystem_test
677+ fits_categorizer_test
663678 fragment_category_test
664679 incompressible_categorizer_test
665680 integral_value_parser_test
@@ -683,6 +698,10 @@ if(WITH_TESTS)
683698 list (APPEND DWARFS_TESTS flac_compressor_test)
684699 endif ()
685700
701+ if (ENABLE_RICEPP)
702+ list (APPEND DWARFS_TESTS ricepp_compressor_test)
703+ endif ()
704+
686705 foreach (test ${DWARFS_TESTS} )
687706 add_executable (${test} test /${test} .cpp)
688707 target_link_libraries (
@@ -823,6 +842,7 @@ foreach(tgt dwarfs dwarfs_compression dwarfs_categorizer
823842 $<$<BOOL :${LIBLZMA_FOUND} >:DWARFS_HAVE_LIBLZMA>
824843 $<$<AND :$<BOOL :${LIBBROTLIDEC_FOUND} >,$<BOOL :${LIBBROTLIENC_FOUND} >>:DWARFS_HAVE_LIBBROTLI>
825844 $<$<BOOL :${FLAC_FOUND} >:DWARFS_HAVE_FLAC>
845+ $<$<BOOL :${ENABLE_RICEPP} >:DWARFS_HAVE_RICEPP>
826846 )
827847
828848 if (DWARFS_USE_EXCEPTION_TRACER)
@@ -1068,6 +1088,8 @@ add_custom_target(
10681088)
10691089
10701090file (GLOB_RECURSE ALL_SOURCES LIST_DIRECTORIES false
1091+ ${CMAKE_CURRENT_SOURCE_DIR} /ricepp/*.h
1092+ ${CMAKE_CURRENT_SOURCE_DIR} /ricepp/*.cpp
10711093 ${CMAKE_CURRENT_SOURCE_DIR} /include /*.h
10721094 ${CMAKE_CURRENT_SOURCE_DIR} /src/*.cpp
10731095 ${CMAKE_CURRENT_SOURCE_DIR} /test /*.h
0 commit comments