Skip to content

Commit

Permalink
Refactor compression functions (#36)
Browse files Browse the repository at this point in the history
  • Loading branch information
chpock authored Jun 21, 2024
1 parent d7a2e29 commit f748f41
Show file tree
Hide file tree
Showing 13 changed files with 940 additions and 740 deletions.
3 changes: 3 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
2024-06-21 Konstantin Kushnir <[email protected]>
* Refactor compression functions

2024-06-20 Konstantin Kushnir <[email protected]>
* Add support for Zstandard compression
* Use resonable default compression levels
Expand Down
107 changes: 106 additions & 1 deletion configure
Original file line number Diff line number Diff line change
Expand Up @@ -8731,7 +8731,7 @@ if test ${USECPAGES} = yes; then
COOKFS_PKGCONFIG_USECPAGES=1
COOKFS_PKGCONFIG_FEATURE_ASIDE=1

vars="pageObj.c pages.c pagesCompr.c pagesCmd.c"
vars="pageObj.c pages.c pagesCompr.c pagesComprZlib.c pagesCmd.c"
for i in $vars; do
case $i in
\$*)
Expand Down Expand Up @@ -8770,6 +8770,41 @@ if test ${USECPAGES} = yes; then
if test ${USEBZ2} = yes; then
BUILDCCODE=yes

vars="pagesComprBz2.c"
for i in $vars; do
case $i in
\$*)
# allow $-var names
PKG_SOURCES="$PKG_SOURCES $i"
PKG_OBJECTS="$PKG_OBJECTS $i"
;;
*)
# check for existence - allows for generic/win/unix VPATH
# To add more dirs here (like 'src'), you have to update VPATH
# in Makefile.in as well
if test ! -f "${srcdir}/$i" -a ! -f "${srcdir}/generic/$i" \
-a ! -f "${srcdir}/win/$i" -a ! -f "${srcdir}/unix/$i" \
-a ! -f "${srcdir}/macosx/$i" \
; then
as_fn_error $? "could not find source file '$i'" "$LINENO" 5
fi
PKG_SOURCES="$PKG_SOURCES $i"
# this assumes it is in a VPATH dir
i=`basename $i`
# handle user calling this before or after TEA_SETUP_COMPILER
if test x"${OBJEXT}" != x ; then
j="`echo $i | sed -e 's/\.[^.]*$//'`.${OBJEXT}"
else
j="`echo $i | sed -e 's/\.[^.]*$//'`.\${OBJEXT}"
fi
PKG_OBJECTS="$PKG_OBJECTS $j"
;;
esac
done




vars="bzip2/blocksort.c bzip2/huffman.c bzip2/crctable.c bzip2/randtable.c bzip2/compress.c bzip2/decompress.c bzip2/bzlib.c"
for i in $vars; do
case $i in
Expand Down Expand Up @@ -8876,6 +8911,41 @@ printf "%s\n" "no, adding -mavx -mavx2" >&6; };
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext

vars="pagesComprLzma.c"
for i in $vars; do
case $i in
\$*)
# allow $-var names
PKG_SOURCES="$PKG_SOURCES $i"
PKG_OBJECTS="$PKG_OBJECTS $i"
;;
*)
# check for existence - allows for generic/win/unix VPATH
# To add more dirs here (like 'src'), you have to update VPATH
# in Makefile.in as well
if test ! -f "${srcdir}/$i" -a ! -f "${srcdir}/generic/$i" \
-a ! -f "${srcdir}/win/$i" -a ! -f "${srcdir}/unix/$i" \
-a ! -f "${srcdir}/macosx/$i" \
; then
as_fn_error $? "could not find source file '$i'" "$LINENO" 5
fi
PKG_SOURCES="$PKG_SOURCES $i"
# this assumes it is in a VPATH dir
i=`basename $i`
# handle user calling this before or after TEA_SETUP_COMPILER
if test x"${OBJEXT}" != x ; then
j="`echo $i | sed -e 's/\.[^.]*$//'`.${OBJEXT}"
else
j="`echo $i | sed -e 's/\.[^.]*$//'`.\${OBJEXT}"
fi
PKG_OBJECTS="$PKG_OBJECTS $j"
;;
esac
done




vars="7zip/C/LzmaEnc.c 7zip/C/LzmaDec.c 7zip/C/LzFind.c 7zip/C/CpuArch.c"
for i in $vars; do
case $i in
Expand Down Expand Up @@ -8925,6 +8995,41 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext

if test ${USEZSTD} = yes; then

vars="pagesComprZstd.c"
for i in $vars; do
case $i in
\$*)
# allow $-var names
PKG_SOURCES="$PKG_SOURCES $i"
PKG_OBJECTS="$PKG_OBJECTS $i"
;;
*)
# check for existence - allows for generic/win/unix VPATH
# To add more dirs here (like 'src'), you have to update VPATH
# in Makefile.in as well
if test ! -f "${srcdir}/$i" -a ! -f "${srcdir}/generic/$i" \
-a ! -f "${srcdir}/win/$i" -a ! -f "${srcdir}/unix/$i" \
-a ! -f "${srcdir}/macosx/$i" \
; then
as_fn_error $? "could not find source file '$i'" "$LINENO" 5
fi
PKG_SOURCES="$PKG_SOURCES $i"
# this assumes it is in a VPATH dir
i=`basename $i`
# handle user calling this before or after TEA_SETUP_COMPILER
if test x"${OBJEXT}" != x ; then
j="`echo $i | sed -e 's/\.[^.]*$//'`.${OBJEXT}"
else
j="`echo $i | sed -e 's/\.[^.]*$//'`.\${OBJEXT}"
fi
PKG_OBJECTS="$PKG_OBJECTS $j"
;;
esac
done




vars="
zstd/lib/common/xxhash.c
zstd/lib/common/zstd_common.c
Expand Down
5 changes: 4 additions & 1 deletion configure.in
Original file line number Diff line number Diff line change
Expand Up @@ -141,11 +141,12 @@ if test ${USECPAGES} = yes; then
AC_DEFINE(COOKFS_USECPAGES)
COOKFS_PKGCONFIG_USECPAGES=1
COOKFS_PKGCONFIG_FEATURE_ASIDE=1
TEA_ADD_SOURCES([pageObj.c pages.c pagesCompr.c pagesCmd.c])
TEA_ADD_SOURCES([pageObj.c pages.c pagesCompr.c pagesComprZlib.c pagesCmd.c])

# enable bz2 files only if pages are handled using C
if test ${USEBZ2} = yes; then
BUILDCCODE=yes
TEA_ADD_SOURCES([pagesComprBz2.c])
TEA_ADD_SOURCES([bzip2/blocksort.c bzip2/huffman.c bzip2/crctable.c bzip2/randtable.c bzip2/compress.c bzip2/decompress.c bzip2/bzlib.c])
AC_DEFINE(COOKFS_USEBZ2)
COOKFS_PKGCONFIG_USEBZ2=1
Expand Down Expand Up @@ -175,6 +176,7 @@ if test ${USECPAGES} = yes; then
[AC_MSG_RESULT(yes)],
[AC_MSG_RESULT([no, adding -mavx -mavx2]); TEA_ADD_CFLAGS([-mavx -mavx2])]
)
TEA_ADD_SOURCES([pagesComprLzma.c])
TEA_ADD_SOURCES([7zip/C/LzmaEnc.c 7zip/C/LzmaDec.c 7zip/C/LzFind.c 7zip/C/CpuArch.c])
AC_DEFINE(COOKFS_USELZMA)
# Disable multi-thread
Expand All @@ -187,6 +189,7 @@ if test ${USECPAGES} = yes; then
fi

if test ${USEZSTD} = yes; then
TEA_ADD_SOURCES([pagesComprZstd.c])
TEA_ADD_SOURCES([
zstd/lib/common/xxhash.c
zstd/lib/common/zstd_common.c
Expand Down
Loading

0 comments on commit f748f41

Please sign in to comment.