fix: README -> README.md
This commit is contained in:
parent
43e68af625
commit
99b0a6292c
756 changed files with 323753 additions and 71 deletions
10
ta6ob/lz4/contrib/debian/changelog
Normal file
10
ta6ob/lz4/contrib/debian/changelog
Normal file
|
@ -0,0 +1,10 @@
|
|||
liblz4 (1.7.2) unstable; urgency=low
|
||||
|
||||
* Changed : moved to versioning; package, cli and library have same version number
|
||||
* Improved: Small decompression speed boost (+4%)
|
||||
* Improved: Performance on ARMv6 and ARMv7
|
||||
* Added : Debianization, by Evgeniy Polyakov
|
||||
* Makefile: Generates object files (*.o) for faster (re)compilation on low power systems
|
||||
* Fix : cli : crash on some invalid inputs
|
||||
|
||||
-- Yann Collet <Cyan4973@github.com> Sun, 28 Jun 2015 01:00:00 +0000
|
1
ta6ob/lz4/contrib/debian/compat
Normal file
1
ta6ob/lz4/contrib/debian/compat
Normal file
|
@ -0,0 +1 @@
|
|||
7
|
23
ta6ob/lz4/contrib/debian/control
Normal file
23
ta6ob/lz4/contrib/debian/control
Normal file
|
@ -0,0 +1,23 @@
|
|||
Source: liblz4
|
||||
Section: devel
|
||||
Priority: optional
|
||||
Maintainer: Evgeniy Polyakov <zbr@ioremap.net>
|
||||
Build-Depends:
|
||||
cmake (>= 2.6),
|
||||
debhelper (>= 7.0.50~),
|
||||
cdbs
|
||||
Standards-Version: 3.8.0
|
||||
Homepage: http://www.lz4.org/
|
||||
Vcs-Git: git://github.com/lz4/lz4.git
|
||||
Vcs-Browser: https://github.com/lz4/lz4
|
||||
|
||||
Package: liblz4
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}
|
||||
Description: Extremely Fast Compression algorithm http://www.lz4.org
|
||||
|
||||
Package: liblz4-dev
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}
|
||||
Description: Extremely Fast Compression algorithm http://www.lz4.org
|
||||
Development files.
|
9
ta6ob/lz4/contrib/debian/copyright
Normal file
9
ta6ob/lz4/contrib/debian/copyright
Normal file
|
@ -0,0 +1,9 @@
|
|||
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||
Upstream-Name: liblz4
|
||||
Upstream-Contact: Yann Collet <Cyan4973@github.com>
|
||||
Source: https://github.com/lz4/lz4
|
||||
|
||||
Files: *
|
||||
Copyright: (C) 2011-2020 Yann Collet
|
||||
License: GPL-2+
|
||||
The full text of license: https://github.com/lz4/lz4/blob/dev/lib/LICENSE
|
1
ta6ob/lz4/contrib/debian/dirs
Normal file
1
ta6ob/lz4/contrib/debian/dirs
Normal file
|
@ -0,0 +1 @@
|
|||
usr/bin
|
0
ta6ob/lz4/contrib/debian/docs
Normal file
0
ta6ob/lz4/contrib/debian/docs
Normal file
2
ta6ob/lz4/contrib/debian/liblz4-dev.install
Normal file
2
ta6ob/lz4/contrib/debian/liblz4-dev.install
Normal file
|
@ -0,0 +1,2 @@
|
|||
usr/include/lz4*
|
||||
usr/lib/liblz4.so
|
2
ta6ob/lz4/contrib/debian/liblz4.install
Normal file
2
ta6ob/lz4/contrib/debian/liblz4.install
Normal file
|
@ -0,0 +1,2 @@
|
|||
usr/lib/liblz4.so.*
|
||||
usr/bin/*
|
7
ta6ob/lz4/contrib/debian/rules
Executable file
7
ta6ob/lz4/contrib/debian/rules
Executable file
|
@ -0,0 +1,7 @@
|
|||
#!/usr/bin/make -f
|
||||
|
||||
include /usr/share/cdbs/1/rules/debhelper.mk
|
||||
include /usr/share/cdbs/1/class/cmake.mk
|
||||
|
||||
|
||||
DEB_CMAKE_EXTRA_FLAGS := -DCMAKE_BUILD_TYPE=RelWithDebInfo ../../build/cmake
|
24
ta6ob/lz4/contrib/djgpp/LICENSE
Normal file
24
ta6ob/lz4/contrib/djgpp/LICENSE
Normal file
|
@ -0,0 +1,24 @@
|
|||
Copyright (c) 2014, lpsantil
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
130
ta6ob/lz4/contrib/djgpp/Makefile
Normal file
130
ta6ob/lz4/contrib/djgpp/Makefile
Normal file
|
@ -0,0 +1,130 @@
|
|||
# Copyright (c) 2015, Louis P. Santillan <lpsantil@gmail.com>
|
||||
# All rights reserved.
|
||||
# See LICENSE for licensing details.
|
||||
DESTDIR ?= /opt/local
|
||||
|
||||
# Pulled the code below from lib/Makefile. Might be nicer to derive this somehow without sed
|
||||
# Version numbers
|
||||
VERSION ?= 129
|
||||
RELEASE ?= r$(VERSION)
|
||||
LIBVER_MAJOR=$(shell sed -n '/define LZ4_VERSION_MAJOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < lib/lz4.h)
|
||||
LIBVER_MINOR=$(shell sed -n '/define LZ4_VERSION_MINOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < lib/lz4.h)
|
||||
LIBVER_PATCH=$(shell sed -n '/define LZ4_VERSION_RELEASE/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < lib/lz4.h)
|
||||
LIBVER=$(LIBVER_MAJOR).$(LIBVER_MINOR).$(LIBVER_PATCH)
|
||||
|
||||
######################################################################
|
||||
|
||||
CROSS ?= i586-pc-msdosdjgpp
|
||||
CC = $(CROSS)-gcc
|
||||
AR = $(CROSS)-ar
|
||||
LD = $(CROSS)-gcc
|
||||
|
||||
CFLAGS ?= -O3 -std=gnu99 -Wall -Wextra -Wundef -Wshadow -Wcast-qual -Wcast-align -Wstrict-prototypes -pedantic -DLZ4_VERSION=\"$(RELEASE)\"
|
||||
LDFLAGS ?= -s
|
||||
SRC = programs/bench.c programs/lz4io.c programs/lz4cli.c
|
||||
OBJ = $(SRC:.c=.o)
|
||||
SDEPS = $(SRC:.c=.d)
|
||||
IDIR = lib
|
||||
EDIR = .
|
||||
EXE = lz4.exe
|
||||
LNK = lz4
|
||||
LDIR = lib
|
||||
LSRC = lib/lz4.c lib/lz4hc.c lib/lz4frame.c lib/xxhash.c
|
||||
INC = $(LSRC:.c=.h)
|
||||
LOBJ = $(LSRC:.c=.o)
|
||||
LSDEPS = $(LSRC:.c=.d)
|
||||
LIB = $(LDIR)/lib$(LNK).a
|
||||
|
||||
# Since LDFLAGS defaults to "-s", probably better to override unless
|
||||
# you have a default you would like to maintain
|
||||
ifeq ($(WITH_DEBUG), 1)
|
||||
CFLAGS += -g
|
||||
LDFLAGS += -g
|
||||
endif
|
||||
|
||||
# Since LDFLAGS defaults to "-s", probably better to override unless
|
||||
# you have a default you would like to maintain
|
||||
ifeq ($(WITH_PROFILING), 1)
|
||||
CFLAGS += -pg
|
||||
LDFLAGS += -pg
|
||||
endif
|
||||
|
||||
%.o: %.c $(INC) Makefile
|
||||
$(CC) $(CFLAGS) -MMD -MP -I$(IDIR) -c $< -o $@
|
||||
|
||||
%.exe: %.o $(LIB) Makefile
|
||||
$(LD) $< -L$(LDIR) -l$(LNK) $(LDFLAGS) $(LIBDEP) -o $@
|
||||
|
||||
######################################################################
|
||||
######################## DO NOT MODIFY BELOW #########################
|
||||
######################################################################
|
||||
|
||||
.PHONY: all install uninstall showconfig gstat gpush
|
||||
|
||||
all: $(LIB) $(EXE)
|
||||
|
||||
$(LIB): $(LOBJ)
|
||||
$(AR) -rcs $@ $^
|
||||
|
||||
$(EXE): $(LOBJ) $(OBJ)
|
||||
$(LD) $(LDFLAGS) $(LOBJ) $(OBJ) -o $(EDIR)/$@
|
||||
|
||||
clean:
|
||||
rm -f $(OBJ) $(EXE) $(LOBJ) $(LIB) *.tmp $(SDEPS) $(LSDEPS) $(TSDEPS)
|
||||
|
||||
install: $(INC) $(LIB) $(EXE)
|
||||
mkdir -p $(DESTDIR)/bin $(DESTDIR)/include $(DESTDIR)/lib
|
||||
rm -f .footprint
|
||||
echo $(DESTDIR)/bin/$(EXE) >> .footprint
|
||||
cp -v $(EXE) $(DESTDIR)/bin/
|
||||
@for T in $(LIB); \
|
||||
do ( \
|
||||
echo $(DESTDIR)/$$T >> .footprint; \
|
||||
cp -v --parents $$T $(DESTDIR) \
|
||||
); done
|
||||
@for T in $(INC); \
|
||||
do ( \
|
||||
echo $(DESTDIR)/include/`basename -a $$T` >> .footprint; \
|
||||
cp -v $$T $(DESTDIR)/include/ \
|
||||
); done
|
||||
|
||||
uninstall: .footprint
|
||||
@for T in $(shell cat .footprint); do rm -v $$T; done
|
||||
|
||||
-include $(SDEPS) $(LSDEPS)
|
||||
|
||||
showconfig:
|
||||
@echo "PWD="$(PWD)
|
||||
@echo "VERSION="$(VERSION)
|
||||
@echo "RELEASE="$(RELEASE)
|
||||
@echo "LIBVER_MAJOR="$(LIBVER_MAJOR)
|
||||
@echo "LIBVER_MINOR="$(LIBVER_MINOR)
|
||||
@echo "LIBVER_PATCH="$(LIBVER_PATCH)
|
||||
@echo "LIBVER="$(LIBVER)
|
||||
@echo "CROSS="$(CROSS)
|
||||
@echo "CC="$(CC)
|
||||
@echo "AR="$(AR)
|
||||
@echo "LD="$(LD)
|
||||
@echo "DESTDIR="$(DESTDIR)
|
||||
@echo "CFLAGS="$(CFLAGS)
|
||||
@echo "LDFLAGS="$(LDFLAGS)
|
||||
@echo "SRC="$(SRC)
|
||||
@echo "OBJ="$(OBJ)
|
||||
@echo "IDIR="$(IDIR)
|
||||
@echo "INC="$(INC)
|
||||
@echo "EDIR="$(EDIR)
|
||||
@echo "EXE="$(EXE)
|
||||
@echo "LDIR="$(LDIR)
|
||||
@echo "LSRC="$(LSRC)
|
||||
@echo "LOBJ="$(LOBJ)
|
||||
@echo "LNK="$(LNK)
|
||||
@echo "LIB="$(LIB)
|
||||
@echo "SDEPS="$(SDEPS)
|
||||
@echo "LSDEPS="$(LSDEPS)
|
||||
|
||||
gstat:
|
||||
git status
|
||||
|
||||
gpush:
|
||||
git commit
|
||||
git push
|
21
ta6ob/lz4/contrib/djgpp/README.MD
Normal file
21
ta6ob/lz4/contrib/djgpp/README.MD
Normal file
|
@ -0,0 +1,21 @@
|
|||
# lz4 for DOS/djgpp
|
||||
This file details on how to compile lz4.exe, and liblz4.a for use on DOS/djgpp using
|
||||
Andrew Wu's build-djgpp cross compilers ([GH][0], [Binaries][1]) on OSX, Linux.
|
||||
|
||||
## Setup
|
||||
* Download a djgpp tarball [binaries][1] for your platform.
|
||||
* Extract and install it (`tar jxvf djgpp-linux64-gcc492.tar.bz2`). Note the path. We'll assume `/home/user/djgpp`.
|
||||
* Add the `bin` folder to your `PATH`. In bash, do `export PATH=/home/user/djgpp/bin:$PATH`.
|
||||
* The `Makefile` in `contrib/djgpp/` sets up `CC`, `AR`, `LD` for you. So, `CC=i586-pc-msdosdjgpp-gcc`, `AR=i586-pc-msdosdjgpp-ar`, `LD=i586-pc-msdosdjgpp-gcc`.
|
||||
|
||||
## Building LZ4 for DOS
|
||||
In the base dir of lz4 and with `contrib/djgpp/Makefile`, try:
|
||||
Try:
|
||||
* `make -f contrib/djgpp/Makefile`
|
||||
* `make -f contrib/djgpp/Makefile liblz4.a`
|
||||
* `make -f contrib/djgpp/Makefile lz4.exe`
|
||||
* `make -f contrib/djgpp/Makefile DESTDIR=/home/user/dos install`, however it doesn't make much sense on a \*nix.
|
||||
* You can also do `make -f contrib/djgpp/Makefile uninstall`
|
||||
|
||||
[0]: https://github.com/andrewwutw/build-djgpp
|
||||
[1]: https://github.com/andrewwutw/build-djgpp/releases
|
2
ta6ob/lz4/contrib/gen_manual/.gitignore
vendored
Normal file
2
ta6ob/lz4/contrib/gen_manual/.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
# build artefact
|
||||
gen_manual
|
76
ta6ob/lz4/contrib/gen_manual/Makefile
Normal file
76
ta6ob/lz4/contrib/gen_manual/Makefile
Normal file
|
@ -0,0 +1,76 @@
|
|||
# ################################################################
|
||||
# Copyright (C) Przemyslaw Skibinski 2016-present
|
||||
# All rights reserved.
|
||||
#
|
||||
# BSD license
|
||||
# Redistribution and use in source and binary forms, with or without modification,
|
||||
# are permitted provided that the following conditions are met:
|
||||
#
|
||||
# * Redistributions of source code must retain the above copyright notice, this
|
||||
# list of conditions and the following disclaimer.
|
||||
#
|
||||
# * Redistributions in binary form must reproduce the above copyright notice, this
|
||||
# list of conditions and the following disclaimer in the documentation and/or
|
||||
# other materials provided with the distribution.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
#
|
||||
# You can contact the author at :
|
||||
# - LZ4 source repository : https://github.com/Cyan4973/lz4
|
||||
# - LZ4 forum froup : https://groups.google.com/forum/#!forum/lz4c
|
||||
# ################################################################
|
||||
|
||||
|
||||
CXXFLAGS ?= -O3
|
||||
CXXFLAGS += -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow -Wstrict-aliasing=1 -Wswitch-enum -Wno-comment
|
||||
CXXFLAGS += $(MOREFLAGS)
|
||||
FLAGS = $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS)
|
||||
|
||||
LZ4API = ../../lib/lz4.h
|
||||
LZ4MANUAL = ../../doc/lz4_manual.html
|
||||
LZ4FAPI = ../../lib/lz4frame.h
|
||||
LZ4FMANUAL = ../../doc/lz4frame_manual.html
|
||||
LIBVER_MAJOR_SCRIPT:=`sed -n '/define LZ4_VERSION_MAJOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < $(LZ4API)`
|
||||
LIBVER_MINOR_SCRIPT:=`sed -n '/define LZ4_VERSION_MINOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < $(LZ4API)`
|
||||
LIBVER_PATCH_SCRIPT:=`sed -n '/define LZ4_VERSION_RELEASE/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < $(LZ4API)`
|
||||
LIBVER_SCRIPT:= $(LIBVER_MAJOR_SCRIPT).$(LIBVER_MINOR_SCRIPT).$(LIBVER_PATCH_SCRIPT)
|
||||
LZ4VER := $(shell echo $(LIBVER_SCRIPT))
|
||||
|
||||
# Define *.exe as extension for Windows systems
|
||||
ifneq (,$(filter Windows%,$(OS)))
|
||||
EXT =.exe
|
||||
else
|
||||
EXT =
|
||||
endif
|
||||
|
||||
|
||||
.PHONY: default
|
||||
default: gen_manual
|
||||
|
||||
gen_manual: gen_manual.cpp
|
||||
$(CXX) $(FLAGS) $^ -o $@$(EXT)
|
||||
|
||||
$(LZ4MANUAL) : gen_manual $(LZ4API)
|
||||
echo "Update lz4 manual in /doc"
|
||||
./gen_manual $(LZ4VER) $(LZ4API) $@
|
||||
|
||||
$(LZ4FMANUAL) : gen_manual $(LZ4FAPI)
|
||||
echo "Update lz4frame manual in /doc"
|
||||
./gen_manual $(LZ4VER) $(LZ4FAPI) $@
|
||||
|
||||
.PHONY: manuals
|
||||
manuals: gen_manual $(LZ4MANUAL) $(LZ4FMANUAL)
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
@$(RM) gen_manual$(EXT)
|
||||
@echo Cleaning completed
|
31
ta6ob/lz4/contrib/gen_manual/README.md
Normal file
31
ta6ob/lz4/contrib/gen_manual/README.md
Normal file
|
@ -0,0 +1,31 @@
|
|||
gen_manual - a program for automatic generation of manual from source code
|
||||
==========================================================================
|
||||
|
||||
#### Introduction
|
||||
|
||||
This simple C++ program generates a single-page HTML manual from `lz4.h`.
|
||||
|
||||
The format of recognized comment blocks is following:
|
||||
- comments of type `/*!` mean: this is a function declaration; switch comments with declarations
|
||||
- comments of type `/**` and `/*-` mean: this is a comment; use a `<H2>` header for the first line
|
||||
- comments of type `/*=` and `/**=` mean: use a `<H3>` header and show also all functions until first empty line
|
||||
- comments of type `/*X` where `X` is different from above-mentioned are ignored
|
||||
|
||||
Moreover:
|
||||
- `LZ4LIB_API` is removed to improve readability
|
||||
- `typedef` are detected and included even if uncommented
|
||||
- comments of type `/**<` and `/*!<` are detected and only function declaration is highlighted (bold)
|
||||
|
||||
|
||||
#### Usage
|
||||
|
||||
The program requires 3 parameters:
|
||||
```
|
||||
gen_manual [lz4_version] [input_file] [output_html]
|
||||
```
|
||||
|
||||
To compile program and generate lz4 manual we have used:
|
||||
```
|
||||
make
|
||||
./gen_manual.exe 1.7.3 ../../lib/lz4.h lz4_manual.html
|
||||
```
|
10
ta6ob/lz4/contrib/gen_manual/gen-lz4-manual.sh
Normal file
10
ta6ob/lz4/contrib/gen_manual/gen-lz4-manual.sh
Normal file
|
@ -0,0 +1,10 @@
|
|||
#!/bin/sh
|
||||
|
||||
LIBVER_MAJOR_SCRIPT=`sed -n '/define LZ4_VERSION_MAJOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < ../../lib/lz4.h`
|
||||
LIBVER_MINOR_SCRIPT=`sed -n '/define LZ4_VERSION_MINOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < ../../lib/lz4.h`
|
||||
LIBVER_PATCH_SCRIPT=`sed -n '/define LZ4_VERSION_RELEASE/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < ../../lib/lz4.h`
|
||||
LIBVER_SCRIPT=$LIBVER_MAJOR_SCRIPT.$LIBVER_MINOR_SCRIPT.$LIBVER_PATCH_SCRIPT
|
||||
|
||||
echo LZ4_VERSION=$LIBVER_SCRIPT
|
||||
./gen_manual "lz4 $LIBVER_SCRIPT" ../../lib/lz4.h ./lz4_manual.html
|
||||
./gen_manual "lz4frame $LIBVER_SCRIPT" ../../lib/lz4frame.h ./lz4frame_manual.html
|
248
ta6ob/lz4/contrib/gen_manual/gen_manual.cpp
Normal file
248
ta6ob/lz4/contrib/gen_manual/gen_manual.cpp
Normal file
|
@ -0,0 +1,248 @@
|
|||
/*
|
||||
Copyright (c) 2016-present, Przemyslaw Skibinski
|
||||
All rights reserved.
|
||||
|
||||
BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above
|
||||
copyright notice, this list of conditions and the following disclaimer
|
||||
in the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
You can contact the author at :
|
||||
- LZ4 homepage : http://www.lz4.org
|
||||
- LZ4 source repository : https://github.com/lz4/lz4
|
||||
*/
|
||||
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <sstream>
|
||||
#include <vector>
|
||||
using namespace std;
|
||||
|
||||
|
||||
/* trim string at the beginning and at the end */
|
||||
void trim(string& s, string characters)
|
||||
{
|
||||
size_t p = s.find_first_not_of(characters);
|
||||
s.erase(0, p);
|
||||
|
||||
p = s.find_last_not_of(characters);
|
||||
if (string::npos != p)
|
||||
s.erase(p+1);
|
||||
}
|
||||
|
||||
|
||||
/* trim C++ style comments */
|
||||
void trim_comments(string &s)
|
||||
{
|
||||
size_t spos, epos;
|
||||
|
||||
spos = s.find("/*");
|
||||
epos = s.find("*/");
|
||||
s = s.substr(spos+3, epos-(spos+3));
|
||||
}
|
||||
|
||||
|
||||
/* get lines until a given terminator */
|
||||
vector<string> get_lines(vector<string>& input, int& linenum, string terminator)
|
||||
{
|
||||
vector<string> out;
|
||||
string line;
|
||||
|
||||
while ((size_t)linenum < input.size()) {
|
||||
line = input[linenum];
|
||||
|
||||
if (terminator.empty() && line.empty()) { linenum--; break; }
|
||||
|
||||
size_t const epos = line.find(terminator);
|
||||
if (!terminator.empty() && epos!=string::npos) {
|
||||
out.push_back(line);
|
||||
break;
|
||||
}
|
||||
out.push_back(line);
|
||||
linenum++;
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
|
||||
/* print line with LZ4LIB_API removed and C++ comments not bold */
|
||||
void print_line(stringstream &sout, string line)
|
||||
{
|
||||
size_t spos, epos;
|
||||
|
||||
if (line.substr(0,11) == "LZ4LIB_API ") line = line.substr(11);
|
||||
if (line.substr(0,12) == "LZ4FLIB_API ") line = line.substr(12);
|
||||
spos = line.find("/*");
|
||||
epos = line.find("*/");
|
||||
if (spos!=string::npos && epos!=string::npos) {
|
||||
sout << line.substr(0, spos);
|
||||
sout << "</b>" << line.substr(spos) << "<b>" << '\n';
|
||||
} else {
|
||||
sout << line << '\n';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
char exclam;
|
||||
int linenum, chapter = 1;
|
||||
vector<string> input, lines, comments, chapters;
|
||||
string line, version;
|
||||
size_t spos, l;
|
||||
stringstream sout;
|
||||
ifstream istream;
|
||||
ofstream ostream;
|
||||
|
||||
if (argc < 4) {
|
||||
cout << "usage: " << argv[0] << " [lz4_version] [input_file] [output_html]" << endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
version = string(argv[1]) + " Manual";
|
||||
|
||||
istream.open(argv[2], ifstream::in);
|
||||
if (!istream.is_open()) {
|
||||
cout << "Error opening file " << argv[2] << endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
ostream.open(argv[3], ifstream::out);
|
||||
if (!ostream.is_open()) {
|
||||
cout << "Error opening file " << argv[3] << endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
while (getline(istream, line)) {
|
||||
input.push_back(line);
|
||||
}
|
||||
|
||||
for (linenum=0; (size_t)linenum < input.size(); linenum++) {
|
||||
line = input[linenum];
|
||||
|
||||
/* typedefs are detected and included even if uncommented */
|
||||
if (line.substr(0,7) == "typedef" && line.find("{")!=string::npos) {
|
||||
lines = get_lines(input, linenum, "}");
|
||||
sout << "<pre><b>";
|
||||
for (l=0; l<lines.size(); l++) {
|
||||
print_line(sout, lines[l]);
|
||||
}
|
||||
sout << "</b></pre><BR>" << endl;
|
||||
continue;
|
||||
}
|
||||
|
||||
/* comments of type / * * < and / * ! < are detected, and only function declaration is highlighted (bold) */
|
||||
if ((line.find("/**<")!=string::npos || line.find("/*!<")!=string::npos)
|
||||
&& line.find("*/")!=string::npos) {
|
||||
sout << "<pre><b>";
|
||||
print_line(sout, line);
|
||||
sout << "</b></pre><BR>" << endl;
|
||||
continue;
|
||||
}
|
||||
|
||||
spos = line.find("/**=");
|
||||
if (spos==string::npos) {
|
||||
spos = line.find("/*!");
|
||||
if (spos==string::npos)
|
||||
spos = line.find("/**");
|
||||
if (spos==string::npos)
|
||||
spos = line.find("/*-");
|
||||
if (spos==string::npos)
|
||||
spos = line.find("/*=");
|
||||
if (spos==string::npos)
|
||||
continue;
|
||||
exclam = line[spos+2];
|
||||
}
|
||||
else exclam = '=';
|
||||
|
||||
comments = get_lines(input, linenum, "*/");
|
||||
if (!comments.empty()) comments[0] = line.substr(spos+3);
|
||||
if (!comments.empty())
|
||||
comments[comments.size()-1] = comments[comments.size()-1].substr(0, comments[comments.size()-1].find("*/"));
|
||||
for (l=0; l<comments.size(); l++) {
|
||||
if (comments[l].compare(0, 2, " *") == 0)
|
||||
comments[l] = comments[l].substr(2);
|
||||
else if (comments[l].compare(0, 3, " *") == 0)
|
||||
comments[l] = comments[l].substr(3);
|
||||
trim(comments[l], "*-=");
|
||||
}
|
||||
while (!comments.empty() && comments[comments.size()-1].empty()) comments.pop_back(); // remove empty line at the end
|
||||
while (!comments.empty() && comments[0].empty()) comments.erase(comments.begin()); // remove empty line at the start
|
||||
|
||||
/* comments of type / * ! mean: this is a function declaration; switch comments with declarations */
|
||||
if (exclam == '!') {
|
||||
if (!comments.empty()) comments.erase(comments.begin()); /* remove first line like "LZ4_XXX() :" */
|
||||
linenum++;
|
||||
lines = get_lines(input, linenum, "");
|
||||
|
||||
sout << "<pre><b>";
|
||||
for (l=0; l<lines.size(); l++) {
|
||||
print_line(sout, lines[l]);
|
||||
}
|
||||
sout << "</b><p>";
|
||||
for (l=0; l<comments.size(); l++) {
|
||||
print_line(sout, comments[l]);
|
||||
}
|
||||
sout << "</p></pre><BR>" << endl << endl;
|
||||
} else if (exclam == '=') { /* comments of type / * = and / * * = mean: use a <H3> header and show also all functions until first empty line */
|
||||
trim(comments[0], " ");
|
||||
sout << "<h3>" << comments[0] << "</h3><pre>";
|
||||
for (l=1; l<comments.size(); l++) {
|
||||
print_line(sout, comments[l]);
|
||||
}
|
||||
sout << "</pre><b><pre>";
|
||||
lines = get_lines(input, ++linenum, "");
|
||||
for (l=0; l<lines.size(); l++) {
|
||||
print_line(sout, lines[l]);
|
||||
}
|
||||
sout << "</pre></b><BR>" << endl;
|
||||
} else { /* comments of type / * * and / * - mean: this is a comment; use a <H2> header for the first line */
|
||||
if (comments.empty()) continue;
|
||||
|
||||
trim(comments[0], " ");
|
||||
sout << "<a name=\"Chapter" << chapter << "\"></a><h2>" << comments[0] << "</h2><pre>";
|
||||
chapters.push_back(comments[0]);
|
||||
chapter++;
|
||||
|
||||
for (l=1; l<comments.size(); l++) {
|
||||
print_line(sout, comments[l]);
|
||||
}
|
||||
if (comments.size() > 1)
|
||||
sout << "<BR></pre>" << endl << endl;
|
||||
else
|
||||
sout << "</pre>" << endl << endl;
|
||||
}
|
||||
}
|
||||
|
||||
ostream << "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\">\n<title>" << version << "</title>\n</head>\n<body>" << endl;
|
||||
ostream << "<h1>" << version << "</h1>\n";
|
||||
|
||||
ostream << "<hr>\n<a name=\"Contents\"></a><h2>Contents</h2>\n<ol>\n";
|
||||
for (size_t i=0; i<chapters.size(); i++)
|
||||
ostream << "<li><a href=\"#Chapter" << i+1 << "\">" << chapters[i].c_str() << "</a></li>\n";
|
||||
ostream << "</ol>\n<hr>\n";
|
||||
|
||||
ostream << sout.str();
|
||||
ostream << "</html>" << endl << "</body>" << endl;
|
||||
|
||||
return 0;
|
||||
}
|
34
ta6ob/lz4/contrib/meson/README.md
Normal file
34
ta6ob/lz4/contrib/meson/README.md
Normal file
|
@ -0,0 +1,34 @@
|
|||
Meson build system for lz4
|
||||
==========================
|
||||
|
||||
Meson is a build system designed to optimize programmer productivity.
|
||||
It aims to do this by providing simple, out-of-the-box support for
|
||||
modern software development tools and practices, such as unit tests,
|
||||
coverage reports, Valgrind, CCache and the like.
|
||||
|
||||
This Meson build system is provided with no guarantee.
|
||||
|
||||
## How to build
|
||||
|
||||
`cd` to this meson directory (`contrib/meson`)
|
||||
|
||||
```sh
|
||||
meson setup --buildtype=release -Ddefault_library=shared -Dbin_programs=true builddir
|
||||
cd builddir
|
||||
ninja # to build
|
||||
ninja install # to install
|
||||
```
|
||||
|
||||
You might want to install it in staging directory:
|
||||
|
||||
```sh
|
||||
DESTDIR=./staging ninja install
|
||||
```
|
||||
|
||||
To configure build options, use:
|
||||
|
||||
```sh
|
||||
meson configure
|
||||
```
|
||||
|
||||
See [man meson(1)](https://manpages.debian.org/testing/meson/meson.1.en.html).
|
21
ta6ob/lz4/contrib/meson/meson.build
Normal file
21
ta6ob/lz4/contrib/meson/meson.build
Normal file
|
@ -0,0 +1,21 @@
|
|||
# #############################################################################
|
||||
# Copyright (c) 2018-present lzutao <taolzu(at)gmail.com>
|
||||
# All rights reserved.
|
||||
#
|
||||
# This source code is licensed under both the BSD-style license (found in the
|
||||
# LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
||||
# in the COPYING file in the root directory of this source tree).
|
||||
# #############################################################################
|
||||
|
||||
# This is a dummy meson file.
|
||||
# The intention is that it can be easily moved to the root of the project
|
||||
# (together with meson_options.txt) and packaged for wrapdb.
|
||||
|
||||
project('lz4', ['c'],
|
||||
license: ['BSD', 'GPLv2'],
|
||||
default_options : ['c_std=c99',
|
||||
'buildtype=release'],
|
||||
version: 'DUMMY',
|
||||
meson_version: '>=0.47.0')
|
||||
|
||||
subdir('meson')
|
39
ta6ob/lz4/contrib/meson/meson/GetLz4LibraryVersion.py
Normal file
39
ta6ob/lz4/contrib/meson/meson/GetLz4LibraryVersion.py
Normal file
|
@ -0,0 +1,39 @@
|
|||
#!/usr/bin/env python3
|
||||
# #############################################################################
|
||||
# Copyright (c) 2018-present lzutao <taolzu(at)gmail.com>
|
||||
# All rights reserved.
|
||||
#
|
||||
# This source code is licensed under both the BSD-style license (found in the
|
||||
# LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
||||
# in the COPYING file in the root directory of this source tree).
|
||||
# #############################################################################
|
||||
import re
|
||||
|
||||
|
||||
def find_version_tuple(filepath):
|
||||
version_file_data = None
|
||||
with open(filepath) as fd:
|
||||
version_file_data = fd.read()
|
||||
|
||||
patterns = r"""#\s*define\s+LZ4_VERSION_MAJOR\s+([0-9]+).*$
|
||||
#\s*define\s+LZ4_VERSION_MINOR\s+([0-9]+).*$
|
||||
#\s*define\s+LZ4_VERSION_RELEASE\s+([0-9]+).*$
|
||||
"""
|
||||
regex = re.compile(patterns, re.MULTILINE)
|
||||
version_match = regex.search(version_file_data)
|
||||
if version_match:
|
||||
return version_match.groups()
|
||||
raise Exception("Unable to find version string.")
|
||||
|
||||
|
||||
def main():
|
||||
import argparse
|
||||
parser = argparse.ArgumentParser(description='Print lz4 version from lib/lz4.h')
|
||||
parser.add_argument('file', help='path to lib/lz4.h')
|
||||
args = parser.parse_args()
|
||||
version_tuple = find_version_tuple(args.file)
|
||||
print('.'.join(version_tuple))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
55
ta6ob/lz4/contrib/meson/meson/InstallSymlink.py
Normal file
55
ta6ob/lz4/contrib/meson/meson/InstallSymlink.py
Normal file
|
@ -0,0 +1,55 @@
|
|||
#!/usr/bin/env python3
|
||||
# #############################################################################
|
||||
# Copyright (c) 2018-present lzutao <taolzu(at)gmail.com>
|
||||
# All rights reserved.
|
||||
#
|
||||
# This source code is licensed under both the BSD-style license (found in the
|
||||
# LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
||||
# in the COPYING file in the root directory of this source tree).
|
||||
# #############################################################################
|
||||
# This file should be synced with https://github.com/lzutao/meson-symlink
|
||||
|
||||
import os
|
||||
import pathlib # since Python 3.4
|
||||
|
||||
|
||||
def install_symlink(src, dst, install_dir, dst_is_dir=False, dir_mode=0o777):
|
||||
if not install_dir.exists():
|
||||
install_dir.mkdir(mode=dir_mode, parents=True, exist_ok=True)
|
||||
if not install_dir.is_dir():
|
||||
raise NotADirectoryError(install_dir)
|
||||
|
||||
new_dst = install_dir.joinpath(dst)
|
||||
if new_dst.is_symlink() and os.readlink(new_dst) == src:
|
||||
print('File exists: {!r} -> {!r}'.format(new_dst, src))
|
||||
return
|
||||
print('Installing symlink {!r} -> {!r}'.format(new_dst, src))
|
||||
new_dst.symlink_to(src, target_is_directory=dst_is_dir)
|
||||
|
||||
|
||||
def main():
|
||||
import argparse
|
||||
parser = argparse.ArgumentParser(description='Install a symlink',
|
||||
usage='{0} [-h] [-d] [-m MODE] source dest install_dir\n\n'
|
||||
'example:\n'
|
||||
' {0} dash sh /bin'.format(pathlib.Path(__file__).name))
|
||||
parser.add_argument('source', help='target to link')
|
||||
parser.add_argument('dest', help='link name')
|
||||
parser.add_argument('install_dir', help='installation directory')
|
||||
parser.add_argument('-d', '--isdir',
|
||||
action='store_true',
|
||||
help='dest is a directory')
|
||||
parser.add_argument('-m', '--mode',
|
||||
help='directory mode on creating if not exist',
|
||||
default='0o755')
|
||||
args = parser.parse_args()
|
||||
|
||||
dir_mode = int(args.mode, 8)
|
||||
|
||||
meson_destdir = os.environ.get('MESON_INSTALL_DESTDIR_PREFIX', default='')
|
||||
install_dir = pathlib.Path(meson_destdir, args.install_dir)
|
||||
install_symlink(args.source, args.dest, install_dir, args.isdir, dir_mode)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
43
ta6ob/lz4/contrib/meson/meson/contrib/gen_manual/meson.build
Normal file
43
ta6ob/lz4/contrib/meson/meson/contrib/gen_manual/meson.build
Normal file
|
@ -0,0 +1,43 @@
|
|||
# #############################################################################
|
||||
# Copyright (c) 2018-present lzutao <taolzu(at)gmail.com>
|
||||
# All rights reserved.
|
||||
#
|
||||
# This source code is licensed under both the BSD-style license (found in the
|
||||
# LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
||||
# in the COPYING file in the root directory of this source tree).
|
||||
# #############################################################################
|
||||
|
||||
lz4_root_dir = '../../../../..'
|
||||
|
||||
add_languages('cpp')
|
||||
cxx = meson.get_compiler('cpp')
|
||||
|
||||
gen_manual_includes = include_directories(join_paths(lz4_root_dir, 'contrib/gen_manual'))
|
||||
|
||||
gen_manual_cppflags = cxx.get_supported_arguments(['-Wextra', '-Wcast-qual',
|
||||
'-Wcast-align', '-Wshadow', '-Wstrict-aliasing=1', '-Wswitch-enum',
|
||||
'-Wno-comment'])
|
||||
|
||||
gen_manual = executable('gen_manual',
|
||||
join_paths(lz4_root_dir, 'contrib/gen_manual/gen_manual.cpp'),
|
||||
cpp_args: gen_manual_cppflags,
|
||||
include_directories: gen_manual_includes,
|
||||
native: true,
|
||||
install: false)
|
||||
|
||||
# Update lz4 manual
|
||||
lz4_manual_html = custom_target('lz4_manual.html',
|
||||
output : 'lz4_manual.html',
|
||||
command : [gen_manual,
|
||||
lz4_version,
|
||||
join_paths(meson.current_source_dir(), lz4_root_dir, 'lib/lz4.h'),
|
||||
'@OUTPUT@'],
|
||||
install : false)
|
||||
# Update lz4frame manual
|
||||
lz4_manual_html = custom_target('lz4frame_manual.html',
|
||||
output : 'lz4frame_manual.html',
|
||||
command : [gen_manual,
|
||||
lz4_version,
|
||||
join_paths(meson.current_source_dir(), lz4_root_dir, 'lib/lz4frame.h'),
|
||||
'@OUTPUT@'],
|
||||
install : false)
|
10
ta6ob/lz4/contrib/meson/meson/contrib/meson.build
Normal file
10
ta6ob/lz4/contrib/meson/meson/contrib/meson.build
Normal file
|
@ -0,0 +1,10 @@
|
|||
# #############################################################################
|
||||
# Copyright (c) 2018-present lzutao <taolzu(at)gmail.com>
|
||||
# All rights reserved.
|
||||
#
|
||||
# This source code is licensed under both the BSD-style license (found in the
|
||||
# LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
||||
# in the COPYING file in the root directory of this source tree).
|
||||
# #############################################################################
|
||||
|
||||
subdir('gen_manual')
|
49
ta6ob/lz4/contrib/meson/meson/examples/meson.build
Normal file
49
ta6ob/lz4/contrib/meson/meson/examples/meson.build
Normal file
|
@ -0,0 +1,49 @@
|
|||
# #############################################################################
|
||||
# Copyright (c) 2018-present lzutao <taolzu(at)gmail.com>
|
||||
# All rights reserved.
|
||||
#
|
||||
# This source code is licensed under both the BSD-style license (found in the
|
||||
# LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
||||
# in the COPYING file in the root directory of this source tree).
|
||||
# #############################################################################
|
||||
|
||||
lz4_root_dir = '../../../..'
|
||||
|
||||
#examples_c_args = ['-Wextra', '-Wundef', '-Wshadow', '-Wcast-align', '-Wstrict-prototypes']
|
||||
|
||||
printVersion = executable('printVersion',
|
||||
join_paths(lz4_root_dir, 'examples/printVersion.c'),
|
||||
dependencies: liblz4_dep,
|
||||
install: false)
|
||||
doubleBuffer = executable('doubleBuffer',
|
||||
join_paths(lz4_root_dir, 'examples/blockStreaming_doubleBuffer.c'),
|
||||
dependencies: liblz4_dep,
|
||||
install: false)
|
||||
dictionaryRandomAccess = executable('dictionaryRandomAccess',
|
||||
join_paths(lz4_root_dir, 'examples/dictionaryRandomAccess.c'),
|
||||
dependencies: liblz4_dep,
|
||||
install: false)
|
||||
ringBuffer = executable('ringBuffer',
|
||||
join_paths(lz4_root_dir, 'examples/blockStreaming_ringBuffer.c'),
|
||||
dependencies: liblz4_dep,
|
||||
install: false)
|
||||
ringBufferHC = executable('ringBufferHC',
|
||||
join_paths(lz4_root_dir, 'examples/HCStreaming_ringBuffer.c'),
|
||||
dependencies: liblz4_dep,
|
||||
install: false)
|
||||
lineCompress = executable('lineCompress',
|
||||
join_paths(lz4_root_dir, 'examples/blockStreaming_lineByLine.c'),
|
||||
dependencies: liblz4_dep,
|
||||
install: false)
|
||||
frameCompress = executable('frameCompress',
|
||||
join_paths(lz4_root_dir, 'examples/frameCompress.c'),
|
||||
dependencies: liblz4_dep,
|
||||
install: false)
|
||||
compressFunctions = executable('compressFunctions',
|
||||
join_paths(lz4_root_dir, 'examples/compress_functions.c'),
|
||||
dependencies: liblz4_dep,
|
||||
install: false)
|
||||
simpleBuffer = executable('simpleBuffer',
|
||||
join_paths(lz4_root_dir, 'examples/simple_buffer.c'),
|
||||
dependencies: liblz4_dep,
|
||||
install: false)
|
57
ta6ob/lz4/contrib/meson/meson/lib/meson.build
Normal file
57
ta6ob/lz4/contrib/meson/meson/lib/meson.build
Normal file
|
@ -0,0 +1,57 @@
|
|||
# #############################################################################
|
||||
# Copyright (c) 2018-present lzutao <taolzu(at)gmail.com>
|
||||
# All rights reserved.
|
||||
#
|
||||
# This source code is licensed under both the BSD-style license (found in the
|
||||
# LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
||||
# in the COPYING file in the root directory of this source tree).
|
||||
# #############################################################################
|
||||
|
||||
lz4_root_dir = '../../../..'
|
||||
|
||||
liblz4_includes = [include_directories(join_paths(lz4_root_dir, 'lib'))]
|
||||
liblz4_sources = [join_paths(lz4_root_dir, 'lib/lz4.c'),
|
||||
join_paths(lz4_root_dir, 'lib/lz4frame.c'),
|
||||
join_paths(lz4_root_dir, 'lib/lz4hc.c'),
|
||||
join_paths(lz4_root_dir, 'lib/xxhash.c')]
|
||||
liblz4_c_args = []
|
||||
|
||||
liblz4_debug_cflags = []
|
||||
if use_debug
|
||||
liblz4_c_args += '-DLZ4_DEBUG=@0@'.format(debug_level)
|
||||
if [compiler_gcc, compiler_clang].contains(cc_id)
|
||||
liblz4_debug_cflags = ['-Wextra', '-Wcast-qual', '-Wcast-align', '-Wshadow',
|
||||
'-Wswitch-enum', '-Wdeclaration-after-statement', '-Wstrict-prototypes',
|
||||
'-Wundef', '-Wpointer-arith', '-Wstrict-aliasing=1']
|
||||
endif
|
||||
endif
|
||||
liblz4_c_args += cc.get_supported_arguments(liblz4_debug_cflags)
|
||||
|
||||
if host_machine_os == os_windows and default_library != 'static'
|
||||
liblz4_c_args += '-DLZ4_DLL_EXPORT=1'
|
||||
endif
|
||||
|
||||
liblz4 = library('lz4',
|
||||
liblz4_sources,
|
||||
include_directories: liblz4_includes,
|
||||
c_args: liblz4_c_args,
|
||||
install: true,
|
||||
version: lz4_libversion)
|
||||
|
||||
liblz4_dep = declare_dependency(link_with: liblz4,
|
||||
include_directories: liblz4_includes)
|
||||
|
||||
pkgconfig.generate(liblz4,
|
||||
name: 'lz4',
|
||||
filebase: 'liblz4',
|
||||
description: 'extremely fast lossless compression algorithm library',
|
||||
version: lz4_libversion,
|
||||
url: 'http://www.lz4.org/')
|
||||
|
||||
install_headers(join_paths(lz4_root_dir, 'lib/lz4.h'),
|
||||
join_paths(lz4_root_dir, 'lib/lz4hc.h'),
|
||||
join_paths(lz4_root_dir, 'lib/lz4frame.h'))
|
||||
|
||||
if default_library != 'shared'
|
||||
install_headers(join_paths(lz4_root_dir, 'lib/lz4frame_static.h'))
|
||||
endif
|
117
ta6ob/lz4/contrib/meson/meson/meson.build
Normal file
117
ta6ob/lz4/contrib/meson/meson/meson.build
Normal file
|
@ -0,0 +1,117 @@
|
|||
# #############################################################################
|
||||
# Copyright (c) 2018-present lzutao <taolzu(at)gmail.com>
|
||||
# All rights reserved.
|
||||
#
|
||||
# This source code is licensed under both the BSD-style license (found in the
|
||||
# LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
||||
# in the COPYING file in the root directory of this source tree).
|
||||
# #############################################################################
|
||||
|
||||
cc = meson.get_compiler('c')
|
||||
pkgconfig = import('pkgconfig')
|
||||
c_std = get_option('c_std')
|
||||
default_library = get_option('default_library')
|
||||
|
||||
host_machine_os = host_machine.system()
|
||||
os_windows = 'windows'
|
||||
os_linux = 'linux'
|
||||
os_darwin = 'darwin'
|
||||
os_freebsd = 'freebsd'
|
||||
os_sun = 'sunos'
|
||||
|
||||
cc_id = cc.get_id()
|
||||
compiler_gcc = 'gcc'
|
||||
compiler_clang = 'clang'
|
||||
compiler_msvc = 'msvc'
|
||||
|
||||
lz4_version = meson.project_version()
|
||||
|
||||
lz4_h_file = join_paths(meson.current_source_dir(), '../../../lib/lz4.h')
|
||||
GetLz4LibraryVersion_py = find_program('GetLz4LibraryVersion.py', native : true)
|
||||
r = run_command(GetLz4LibraryVersion_py, lz4_h_file)
|
||||
if r.returncode() == 0
|
||||
lz4_version = r.stdout().strip()
|
||||
message('Project version is now: @0@'.format(lz4_version))
|
||||
else
|
||||
error('Cannot find project version in @0@'.format(lz4_h_file))
|
||||
endif
|
||||
|
||||
lz4_libversion = lz4_version
|
||||
|
||||
# =============================================================================
|
||||
# Installation directories
|
||||
# =============================================================================
|
||||
|
||||
lz4_prefix = get_option('prefix')
|
||||
lz4_bindir = get_option('bindir')
|
||||
lz4_datadir = get_option('datadir')
|
||||
lz4_mandir = get_option('mandir')
|
||||
lz4_docdir = join_paths(lz4_datadir, 'doc', meson.project_name())
|
||||
|
||||
# =============================================================================
|
||||
# Project options
|
||||
# =============================================================================
|
||||
|
||||
buildtype = get_option('buildtype')
|
||||
|
||||
# Built-in options
|
||||
use_debug = get_option('debug')
|
||||
|
||||
# Custom options
|
||||
debug_level = get_option('debug_level')
|
||||
use_backtrace = get_option('backtrace')
|
||||
|
||||
bin_programs = get_option('bin_programs')
|
||||
bin_contrib = get_option('bin_contrib')
|
||||
bin_tests = get_option('bin_tests')
|
||||
bin_examples = get_option('bin_examples')
|
||||
#feature_multi_thread = get_option('multi_thread')
|
||||
|
||||
# =============================================================================
|
||||
# Dependencies
|
||||
# =============================================================================
|
||||
|
||||
#libm_dep = cc.find_library('m', required: bin_tests)
|
||||
#thread_dep = dependency('threads', required: feature_multi_thread)
|
||||
#use_multi_thread = thread_dep.found()
|
||||
|
||||
# =============================================================================
|
||||
# Compiler flags
|
||||
# =============================================================================
|
||||
|
||||
add_project_arguments(['-DXXH_NAMESPACE=LZ4_'], language: 'c')
|
||||
|
||||
if [compiler_gcc, compiler_clang].contains(cc_id)
|
||||
common_warning_flags = []
|
||||
# Should use Meson's own --werror build option
|
||||
#common_warning_flags += ['-Werror']
|
||||
if c_std == 'c89' or c_std == 'gnu89'
|
||||
common_warning_flags += ['-pedantic', '-Wno-long-long', '-Wno-variadic-macros']
|
||||
elif c_std == 'c99' or c_std == 'gnu99'
|
||||
common_warning_flags += ['-pedantic']
|
||||
endif
|
||||
cc_compile_flags = cc.get_supported_arguments(common_warning_flags)
|
||||
add_project_arguments(cc_compile_flags, language: 'c')
|
||||
endif
|
||||
|
||||
# =============================================================================
|
||||
# Subdirs
|
||||
# =============================================================================
|
||||
|
||||
subdir('lib')
|
||||
|
||||
if bin_programs
|
||||
subdir('programs')
|
||||
endif
|
||||
|
||||
if bin_tests
|
||||
subdir('tests')
|
||||
endif
|
||||
|
||||
if bin_contrib
|
||||
subdir('contrib')
|
||||
endif
|
||||
|
||||
if bin_examples
|
||||
subdir('examples')
|
||||
endif
|
52
ta6ob/lz4/contrib/meson/meson/programs/meson.build
Normal file
52
ta6ob/lz4/contrib/meson/meson/programs/meson.build
Normal file
|
@ -0,0 +1,52 @@
|
|||
# #############################################################################
|
||||
# Copyright (c) 2018-present lzutao <taolzu(at)gmail.com>
|
||||
# All rights reserved.
|
||||
#
|
||||
# This source code is licensed under both the BSD-style license (found in the
|
||||
# LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
||||
# in the COPYING file in the root directory of this source tree).
|
||||
# #############################################################################
|
||||
|
||||
lz4_root_dir = '../../../..'
|
||||
|
||||
lz4_includes = include_directories(join_paths(lz4_root_dir, 'programs'))
|
||||
lz4_sources = [join_paths(lz4_root_dir, 'programs/bench.c'),
|
||||
join_paths(lz4_root_dir, 'programs/datagen.c'),
|
||||
join_paths(lz4_root_dir, 'programs/lz4cli.c'),
|
||||
join_paths(lz4_root_dir, 'programs/lz4io.c')]
|
||||
lz4_c_args = []
|
||||
|
||||
export_dynamic_on_windows = false
|
||||
# explicit backtrace enable/disable for Linux & Darwin
|
||||
if not use_backtrace
|
||||
lz4_c_args += '-DBACKTRACE_ENABLE=0'
|
||||
elif use_debug and host_machine_os == os_windows # MinGW target
|
||||
lz4_c_args += '-DBACKTRACE_ENABLE=1'
|
||||
export_dynamic_on_windows = true
|
||||
endif
|
||||
|
||||
lz4_deps = [ liblz4_dep ]
|
||||
|
||||
lz4 = executable('lz4',
|
||||
lz4_sources,
|
||||
include_directories: lz4_includes,
|
||||
c_args: lz4_c_args,
|
||||
dependencies: lz4_deps,
|
||||
export_dynamic: export_dynamic_on_windows, # Since Meson 0.45.0
|
||||
install: true)
|
||||
|
||||
# =============================================================================
|
||||
# Programs and manpages installing
|
||||
# =============================================================================
|
||||
|
||||
install_man(join_paths(lz4_root_dir, 'programs/lz4.1'))
|
||||
|
||||
InstallSymlink_py = '../InstallSymlink.py'
|
||||
lz4_man1_dir = join_paths(lz4_mandir, 'man1')
|
||||
bin_EXT = host_machine_os == os_windows ? '.exe' : ''
|
||||
man1_EXT = meson.version().version_compare('>=0.49.0') ? '.1' : '.1.gz'
|
||||
|
||||
foreach f : ['lz4c', 'lz4cat', 'unlz4']
|
||||
meson.add_install_script(InstallSymlink_py, 'lz4' + bin_EXT, f + bin_EXT, lz4_bindir)
|
||||
meson.add_install_script(InstallSymlink_py, 'lz4' + man1_EXT, f + man1_EXT, lz4_man1_dir)
|
||||
endforeach
|
93
ta6ob/lz4/contrib/meson/meson/tests/meson.build
Normal file
93
ta6ob/lz4/contrib/meson/meson/tests/meson.build
Normal file
|
@ -0,0 +1,93 @@
|
|||
# #############################################################################
|
||||
# Copyright (c) 2018-present lzutao <taolzu(at)gmail.com>
|
||||
# All rights reserved.
|
||||
#
|
||||
# This source code is licensed under both the BSD-style license (found in the
|
||||
# LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
||||
# in the COPYING file in the root directory of this source tree).
|
||||
# #############################################################################
|
||||
|
||||
lz4_root_dir = '../../../..'
|
||||
programs_dir_inc = include_directories(join_paths(lz4_root_dir, 'programs'))
|
||||
lib_dir_inc = include_directories(join_paths(lz4_root_dir, 'lib'))
|
||||
|
||||
# =============================================================================
|
||||
# Test flags
|
||||
# =============================================================================
|
||||
|
||||
TEST_FILES = join_paths(meson.current_source_dir(), lz4_root_dir, 'tests/COPYING')
|
||||
FUZZER_TIME = '-T90s'
|
||||
NB_LOOPS = '-i1'
|
||||
|
||||
# =============================================================================
|
||||
# Executables
|
||||
# =============================================================================
|
||||
|
||||
fullbench_sources = [join_paths(lz4_root_dir, 'tests/fullbench.c')]
|
||||
fullbench = executable('fullbench',
|
||||
fullbench_sources,
|
||||
include_directories: programs_dir_inc,
|
||||
dependencies: liblz4_dep,
|
||||
install: false)
|
||||
|
||||
fuzzer_sources = [join_paths(lz4_root_dir, 'tests/fuzzer.c')]
|
||||
fuzzer = executable('fuzzer',
|
||||
fuzzer_sources,
|
||||
c_args: ['-D_DEFAULT_SOURCE', '-D_BSD_SOURCE'], # since glibc 2.19
|
||||
include_directories: programs_dir_inc,
|
||||
dependencies: liblz4_dep,
|
||||
install: false)
|
||||
|
||||
frametest_sources = [join_paths(lz4_root_dir, 'tests/frametest.c')]
|
||||
frametest = executable('frametest',
|
||||
frametest_sources,
|
||||
include_directories: programs_dir_inc,
|
||||
dependencies: liblz4_dep,
|
||||
install: false)
|
||||
|
||||
roundTripTest_sources = [join_paths(lz4_root_dir, 'tests/roundTripTest.c')]
|
||||
roundTripTest = executable('roundTripTest',
|
||||
roundTripTest_sources,
|
||||
dependencies: [ liblz4_dep ],
|
||||
install: false)
|
||||
|
||||
datagen_sources = [join_paths(lz4_root_dir, 'tests/datagencli.c')]
|
||||
datagen = executable('datagen',
|
||||
datagen_sources,
|
||||
objects: lz4.extract_objects(join_paths(lz4_root_dir, 'programs/datagen.c')),
|
||||
include_directories: lz4_includes,
|
||||
dependencies: [ liblz4_dep ],
|
||||
install: false)
|
||||
|
||||
checkFrame_sources = [join_paths(lz4_root_dir, 'tests/checkFrame.c')]
|
||||
checkFrame = executable('checkFrame',
|
||||
checkFrame_sources,
|
||||
include_directories: programs_dir_inc,
|
||||
dependencies: [ liblz4_dep ],
|
||||
install: false)
|
||||
|
||||
checkTag_sources = [join_paths(lz4_root_dir, 'tests/checkTag.c')]
|
||||
checkTag = executable('checkTag',
|
||||
checkTag_sources,
|
||||
include_directories: lib_dir_inc,
|
||||
install: false)
|
||||
|
||||
# =============================================================================
|
||||
# Tests (Use "meson test --list" to list all tests)
|
||||
# =============================================================================
|
||||
|
||||
# XXX: (Need TEST) These timeouts (in seconds) when running on a HDD should be
|
||||
# at least six times bigger than on a SSD
|
||||
|
||||
test('test-fullbench',
|
||||
fullbench,
|
||||
args: ['--no-prompt', NB_LOOPS, TEST_FILES],
|
||||
timeout: 420) # Should enough when running on HDD
|
||||
test('test-fuzzer',
|
||||
fuzzer,
|
||||
args: [FUZZER_TIME],
|
||||
timeout: 100)
|
||||
test('test-frametest',
|
||||
frametest,
|
||||
args: [FUZZER_TIME],
|
||||
timeout: 100)
|
24
ta6ob/lz4/contrib/meson/meson_options.txt
Normal file
24
ta6ob/lz4/contrib/meson/meson_options.txt
Normal file
|
@ -0,0 +1,24 @@
|
|||
# #############################################################################
|
||||
# Copyright (c) 2018-present lzutao <taolzu(at)gmail.com>
|
||||
# All rights reserved.
|
||||
#
|
||||
# This source code is licensed under both the BSD-style license (found in the
|
||||
# LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
||||
# in the COPYING file in the root directory of this source tree).
|
||||
# #############################################################################
|
||||
|
||||
# Read guidelines from https://wiki.gnome.org/Initiatives/GnomeGoals/MesonPorting
|
||||
|
||||
option('debug_level', type: 'integer', min: 0, max: 7, value: 1,
|
||||
description: 'Enable run-time debug. See lib/lz4hc.c')
|
||||
option('backtrace', type: 'boolean', value: false,
|
||||
description: 'Display a stack backtrace when execution generates a runtime exception')
|
||||
|
||||
option('bin_programs', type: 'boolean', value: false,
|
||||
description: 'Enable programs build')
|
||||
option('bin_tests', type: 'boolean', value: false,
|
||||
description: 'Enable tests build')
|
||||
option('bin_contrib', type: 'boolean', value: false,
|
||||
description: 'Enable contrib build')
|
||||
option('bin_examples', type: 'boolean', value: false,
|
||||
description: 'Enable examples build')
|
29
ta6ob/lz4/contrib/snap/README.md
Normal file
29
ta6ob/lz4/contrib/snap/README.md
Normal file
|
@ -0,0 +1,29 @@
|
|||
Snap Packaging
|
||||
--------------
|
||||
|
||||
This directory contains the config required to generate a snap package
|
||||
of lz4. Snaps are universal Linux packages that allow you to easily
|
||||
build your application from any source and ship it to any Linux
|
||||
distribution by publishing it to https://snapcraft.io/. A key attribute
|
||||
of a snap package is that it is (ideally) confined such that it
|
||||
executes within a controlled environmenti with all its dependencies
|
||||
bundled with it and does not share dependencies with of from any other
|
||||
package on the system (with a couple of minor exceptions).
|
||||
|
||||
The basic anatomy and workflow is:
|
||||
|
||||
* ensure snap.snapcraft.yaml is up-to-date e.g. with version info
|
||||
|
||||
* build the snap by installing the snapcraft package and running it
|
||||
|
||||
* push snap/* changes to the repo (excluding any crud generated by a build of course)
|
||||
|
||||
* register yourself as owner of lz4 name in snapstore
|
||||
|
||||
* publish new snap to the snap store
|
||||
|
||||
* install snap by doing 'snap install lz4' on any Linux distro
|
||||
|
||||
* all installed copies of lz4 will be automatically updated to your new version
|
||||
|
||||
For more information on Snaps see https://docs.snapcraft.io and https://forum.snapcraft.io/
|
31
ta6ob/lz4/contrib/snap/snapcraft.yaml
Normal file
31
ta6ob/lz4/contrib/snap/snapcraft.yaml
Normal file
|
@ -0,0 +1,31 @@
|
|||
name: lz4
|
||||
version: 1.8.4
|
||||
summary: Extremely Fast Compression algorithm
|
||||
description: >
|
||||
LZ4 is lossless compression algorithm, providing compression
|
||||
speed > 500 MB/s per core, scalable with multi-cores CPU. It features an
|
||||
extremely fast decoder, with speed in multiple GB/s per core, typically
|
||||
reaching RAM speed limits on multi-core systems.
|
||||
.
|
||||
Speed can be tuned dynamically, selecting an "acceleration" factor which
|
||||
trades compression ratio for faster speed. On the other end, a high
|
||||
compression derivative, LZ4_HC, is also provided, trading CPU time for
|
||||
improved compression ratio. All versions feature the same decompression
|
||||
speed.
|
||||
.
|
||||
LZ4 is also compatible with dictionary compression, and can ingest any
|
||||
input file as dictionary, including those created by Zstandard Dictionary
|
||||
Builder. (note: only the final 64KB are used).
|
||||
.
|
||||
LZ4 library is provided as open-source software using BSD 2-Clause license.
|
||||
confinement: strict
|
||||
grade: stable
|
||||
|
||||
apps:
|
||||
lz4:
|
||||
command: usr/local/bin/lz4
|
||||
plugs: [home]
|
||||
parts:
|
||||
lz4:
|
||||
source: ../
|
||||
plugin: make
|
Reference in a new issue