blob: 622169868cc755ab62412c11e96dd9860663a810 [file] [log] [blame]
# This makefile is a simpler alternative to the autoconf-based build
# system, for simple local building of the libraries and tools.
# It will not install the libraries system-wide, but just create the 'cwp2'
# and 'dwp2' tools in the examples/ directory, along with the static
# libraries 'src/libwebp2.a', 'src/libwebp2decoder.a'
#
# To build the library and examples, use 'make'.
#### Customizable part ####
VERSION=0.1
ARCHIVE_FILE=wp2-$(VERSION).tar.gz
EXTRA_LIBS=
EXTRA_FLAGS=
# These flags assume you have libpng, libjpeg, libtiff, libgif and libwebp
# installed. If not, either follow the install instructions below or just
# comment out the next five lines.
EXTRA_FLAGS += -DWP2_HAVE_PNG -DWP2_HAVE_JPEG -DWP2_HAVE_TIFF -DWP2_HAVE_GIF
EXTRA_FLAGS += -DWP2_HAVE_WEBP
IMG_LIBS= -lpng -lz -ljpeg -ltiff -lgif \
-lwebp -lwebpdemux -Wno-unused-command-line-argument
# point to Googletest include dir and objects.
GTEST_DIR=../googletest
GTEST_FLAGS = -I$(GTEST_DIR)/googletest/include
GTEST_FLAGS += -I$(GTEST_DIR)/googlemock/include
GTEST_LIBS = -L$(GTEST_DIR)/lib -lgtest -lgtest_main
# OPENGL setup
EXTRA_FLAGS += -DWP2_HAVE_OPENGL
ifeq ($(strip $(shell uname)), Darwin)
# Work around a problem linking tables marked as common symbols,
# cf., src/enc/yuv.[hc]
# Failure observed with: gcc 4.2.1 and 4.0.1.
EXTRA_FLAGS += -fno-common
EXTRA_FLAGS += -Wno-deprecated-declarations
# this is for using regular glut:
# EXTRA_FLAGS += -DHAVE_GLUT_GLUT_H
# GL_LIBS = -framework GLUT -framework OpenGL -lglut
# anmd this is for freeglut:
EXTRA_FLAGS += -DWP2_HAVE_FREEGLUT
GL_LIBS = -lglut -lGL
else
GL_LIBS = -lglut -lGL
endif
# SDL flags: use sdl-config if it exists
SDL_CONFIG = $(shell sdl-config --version 2> /dev/null)
ifneq ($(SDL_CONFIG),)
SDL_LIBS = $(shell sdl-config --libs)
SDL_FLAGS = $(shell sdl-config --cflags)
else
# use best-guess
SDL_LIBS = -lSDL
SDL_FLAGS =
endif
# To install libraries on Mac OS X:
# 1. Install MacPorts (http://www.macports.org/install.php)
# 2. Run "sudo port install jpeg"
# 3. Run "sudo port install libpng"
# 4. Run "sudo port install tiff"
# 5. Run "sudo port install giflib"
# To install libraries on Linux:
# 1. Run "sudo apt-get install libjpeg62-dev"
# 2. Run "sudo apt-get install libpng12-dev"
# 3. Run "sudo apt-get install libtiff4-dev"
# 4. Run "sudo apt-get install libgif-dev"
# Uncomment for build for 32bit platform
# Alternatively, you can just use the command
# 'make -f makefile.unix EXTRA_FLAGS=-m32' to that effect.
# EXTRA_FLAGS += -m32
# Extra flags to enable byte swap for 16 bit colorspaces.
# EXTRA_FLAGS += -DWP2_SWAP_16BIT_CSP
# Extra flags to enable multi-threading
EXTRA_FLAGS += -DWP2_USE_THREAD
EXTRA_LIBS += -lpthread
# Control symbol visibility. Comment out if your compiler doesn't support it.
EXTRA_FLAGS += -fvisibility=hidden
# Extra flags to emulate C89 strictness with the full ANSI
EXTRA_FLAGS += -Wmissing-declarations
# EXTRA_FLAGS += -Wdeclaration-after-statement
EXTRA_FLAGS += -Wshadow
EXTRA_FLAGS += -Wformat-security
# EXTRA_FLAGS += -Wvla
# fetch git hash
GIT_HASH = $(shell git rev-parse --short HEAD)
ifneq ($(GIT_HASH),)
EXTRA_FLAGS += -DWP2_GIT_VERSION=\"$(GIT_HASH)\"
endif
# SSE4.2-specific flags. If unsure about your compiler's defines, try:
# $(CC) -dM -E - < /dev/null | grep SSE
ifeq ($(HAVE_SSE), 1)
EXTRA_FLAGS += -DWP2_HAVE_SSE
endif
EXTRA_FLAGS += -msse4
# AVX2-specific flags:
ifeq ($(HAVE_AVX2), 1)
EXTRA_FLAGS += -DWP2_HAVE_AVX2 -DWP2_HAVE_SSE
src/dsp/deblocking_filter_dsp.o: EXTRA_FLAGS += -mavx2
endif
# NEON-specific flags:
# EXTRA_FLAGS += -march=armv7-a -mfloat-abi=hard -mfpu=neon -mtune=cortex-a8
# -> seems to make the overall lib slower: -fno-split-wide-types
# MIPS (MSA) 32-bit build specific flags for mips32r5 (p5600):
# EXTRA_FLAGS += -mips32r5 -mabi=32 -mtune=p5600 -mmsa -mfp64
# EXTRA_FLAGS += -msched-weight -mload-store-pairs
# MIPS (MSA) 64-bit build specific flags for mips64r6 (i6400):
# EXTRA_FLAGS += -mips64r6 -mabi=64 -mtune=i6400 -mmsa -mfp64
# EXTRA_FLAGS += -msched-weight -mload-store-pairs
# specific flags for C/C++
EXTRA_C_FLAGS = $(EXTRA_FLAGS)
EXTRA_C_FLAGS += -Wextra -Wold-style-definition
EXTRA_C_FLAGS += -Wmissing-prototypes
EXTRA_CXX_FLAGS = $(EXTRA_FLAGS)
EXTRA_CXX_FLAGS += -std=c++14
#### Nothing should normally be changed below this line ####
AR = ar
ARFLAGS = r
CPPFLAGS = -Isrc/ -I. -Wall
ifeq ($(DEBUG), 1)
CFLAGS += -g $(EXTRA_C_FLAGS)
CXXFLAGS += -g $(EXTRA_CXX_FLAGS)
else
CFLAGS += -O3 -DNDEBUG $(EXTRA_C_FLAGS)
CXXFLAGS += -O3 -DNDEBUG $(EXTRA_CXX_FLAGS)
endif
ifeq ($(TRACE), 1)
CFLAGS += -DWP2_TRACE
CXXFLAGS += -DWP2_TRACE
endif
ifeq ($(ERROR_TRACE), 1)
CFLAGS += -DWP2_ERROR_TRACE
CXXFLAGS += -DWP2_ERROR_TRACE
endif
ifeq ($(BITTRACE), 1)
CFLAGS += -DWP2_BITTRACE
CXXFLAGS += -DWP2_BITTRACE
endif
ifeq ($(REDUCED), 1)
CFLAGS += -DWP2_REDUCE_BINARY_SIZE
CXXFLAGS += -DWP2_REDUCE_BINARY_SIZE
endif
# for AOM_ACCOUNTING/INSPECTION, we need a specially built libaom, with the
# flags CONFIG_ACCOUNTING/CONFIG_INSPECTION defined and access to inner
# headers av1/decoder/... Same for CONFIG_TUNE_VMAF and CONFIG_TUNE_BUTTERAUGLI.
ifneq ($(AOM_PATH),)
EXTRA_INC= -I${AOM_PATH} -I${AOM_PATH}/build -DWP2_HAVE_AOM_DBG -DWP2_HAVE_AOM
CFLAGS += ${EXTRA_INC}
CXXFLAGS += ${EXTRA_INC}
EXTRA_LIBS += ${AOM_PATH}/build/libaom.a
# if you've built the libaom with CONFIG_TUNE_BUTTERAUGLI, you'll need libjxl:
# EXTRA_LIBS += -ljxl
# and same with CONFIG_TUNE_VMAF which requires libvmaf:
# EXTRA_LIBS += -lvmaf
endif
# For using system-wide installed libaom:
ifeq ($(AOM), 1)
CFLAGS += -DWP2_HAVE_AOM
CXXFLAGS += -DWP2_HAVE_AOM
EXTRA_LIBS += -laom
endif
# AVIF support through libavif
ifeq ($(AVIF), 1)
CFLAGS += -DWP2_HAVE_AVIF
CXXFLAGS += -DWP2_HAVE_AVIF
EXTRA_LIBS += -lavif
endif
ifeq ($(SJPEG), 1)
CFLAGS += -DWP2_HAVE_SJPEG
CXXFLAGS += -DWP2_HAVE_SJPEG
EXTRA_LIBS += -lsjpeg
endif
ifeq ($(ENC_DEC_MATCH), 1)
CFLAGS += -DWP2_ENC_DEC_MATCH
CXXFLAGS += -DWP2_ENC_DEC_MATCH
endif
EXTRA_FLAGS += -I/usr/local/include -DWP2_HAVE_OPENGL
EXTRA_LIBS += -L/usr/local/lib
ifeq ($(USE_CLANG), 1)
CC = clang -std=gnu99
CXX = clang++
else
CC = gcc -std=gnu99
CXX = g++
endif
INSTALL = install
GROFF = /usr/bin/groff
COL = /usr/bin/col
LDFLAGS += $(EXTRA_LIBS) $(EXTRA_FLAGS) -lm
ANIM_UTIL_OBJS =
DEC_OBJS = \
src/dec/alpha_dec.o \
src/dec/anim_dec.o \
src/dec/av1_dec.o \
src/dec/bypass_dec.o \
src/dec/features_dec.o \
src/dec/filters/alpha_filter.o \
src/dec/filters/block_map_filter.o \
src/dec/filters/deblocking_filter.o \
src/dec/filters/directional_filter.o \
src/dec/filters/grain_filter.o \
src/dec/filters/intertile_filter.o \
src/dec/filters/intratile_filter.o \
src/dec/filters/restoration_filter.o \
src/dec/icc_dec.o \
src/dec/incr/decoder_api.o \
src/dec/incr/decoder_context.o \
src/dec/incr/decoder_info.o \
src/dec/incr/decoder_skip.o \
src/dec/incr/decoder_stages.o \
src/dec/incr/decoder_state.o \
src/dec/incr/decoder_tiles.o \
src/dec/lossless/group4_dec.o \
src/dec/lossless/losslessi_dec.o \
src/dec/lossless/lzw_dec.o \
src/dec/lossless_dec.o \
src/dec/lossy_dec.o \
src/dec/main_dec.o \
src/dec/residuals_dec.o \
src/dec/residuals_dec_aom.o \
src/dec/symbols_dec.o \
src/dec/syntax_dec.o \
src/dec/tile_dec.o \
DSP_DEC_OBJS = \
src/dsp/alpha.o \
src/dsp/ans_dsp.o \
src/dsp/argb_converter.o \
src/dsp/cpu.o \
src/dsp/cdef_dsp.o \
src/dsp/csp_dsp.o \
src/dsp/deblocking_filter_dsp.o \
src/dsp/dec_dsp.o \
src/dsp/intra_dsp.o \
src/dsp/quant_dsp.o \
src/dsp/transf_c.o \
src/dsp/transf_sse.o \
src/dsp/lossless/dspl.o \
src/dsp/lossless/decl_dsp.o \
src/dsp/raster_dsp.o \
src/dsp/grain_c.o \
src/dsp/math.o \
src/dsp/ssim_dsp.o \
src/dsp/wiener_dsp.o \
ENC_OBJS = \
src/enc/alpha_enc.o \
src/enc/analysis_enc.o \
src/enc/anim/anim_enc.o \
src/enc/anim/anim_frame.o \
src/enc/anim/anim_rectangle.o \
src/enc/av1_enc.o \
src/enc/block_enc.o \
src/enc/bypass_enc.o \
src/enc/config_enc.o \
src/enc/distortion_enc.o \
src/enc/lossless/analysisl_enc.o \
src/enc/lossless/backward_references_cost_enc.o \
src/enc/lossless/backward_references_enc.o \
src/enc/lossless/group4_enc.o \
src/enc/lossless/histogram_enc.o \
src/enc/lossless/lzw_enc.o \
src/enc/lossless/palette.o \
src/enc/lossless/predictorl_enc.o \
src/enc/lossless/losslessi_enc.o \
src/enc/symbols_enc.o \
src/enc/lossless_enc.o \
src/enc/lossy_enc.o \
src/enc/main_enc.o \
src/enc/nearlossless_enc.o \
src/enc/partitioning/partition_enc.o \
src/enc/partitioning/partition_score_func.o \
src/enc/partitioning/partition_score_func_area.o \
src/enc/partitioning/partition_score_func_block.o \
src/enc/partitioning/partition_score_func_multi.o \
src/enc/partitioning/partition_score_func_tile.o \
src/enc/partitioning/partitioner.o \
src/enc/partitioning/partitioner_area.o \
src/enc/partitioning/partitioner_exhaustive.o \
src/enc/partitioning/partitioner_multi.o \
src/enc/partitioning/partitioner_split.o \
src/enc/partitioning/partitioner_split_recurse.o \
src/enc/partitioning/partitioner_top_left.o \
src/enc/residuals_enc.o \
src/enc/residuals_enc_aom.o \
src/enc/screen_content/screen_enc.o \
src/enc/segment_enc.o \
src/enc/syntax_enc.o \
src/enc/tile_enc.o \
src/enc/trellis.o \
src/enc/writer_enc.o \
DSP_ENC_OBJS = \
src/dsp/enc_dsp.o \
src/dsp/lossless/encl_dsp.o \
src/dsp/score_dsp.o \
EX_FORMAT_DEC_HDRS = \
imageio/image_dec.h \
imageio/anim_image_dec.h \
EX_FORMAT_DEC_OBJS = \
imageio/anim_image_dec.o \
imageio/bmpdec.o \
imageio/gifdec.o \
imageio/gifdec_metadata.o \
imageio/image_dec.o \
imageio/jpegdec.o \
imageio/pngdec.o \
imageio/pnmdec.o \
imageio/tiffdec.o \
imageio/webpdec.o \
imageio/webpenc.o \
imageio/wp2dec.o \
EX_FORMAT_ENC_HDRS= \
imageio/file_format.h \
imageio/image_enc.h \
EX_FORMAT_ENC_OBJS = \
imageio/bmpenc.o \
imageio/image_enc.o \
imageio/file_format.o \
imageio/pngenc.o \
imageio/pnmenc.o \
imageio/tiffenc.o \
EX_UTIL_OBJS = \
IMAGE_UTIL_HDRS= \
imageio/imageio_util.h \
IMAGE_UTIL_OBJS = \
imageio/imageio_util.o \
ANS_OBJS = \
src/utils/ans.o \
src/utils/ans_utils.o \
ANS_ENC_OBJS = \
src/utils/ans_enc.o \
src/utils/ans_cost_table.o \
PREVIEW_OBJS = \
src/common/preview/preview.o \
src/common/preview/preview_rasterizer.o \
src/dec/preview/preview_dec.o \
src/enc/preview/preview_analysis.o \
src/enc/preview/preview_color.o \
src/enc/preview/preview_config.o \
src/enc/preview/preview_enc.o \
src/enc/preview/preview_opt.o \
UTILS_DEC_OBJS = \
src/utils/argb_buffer.o \
src/utils/csp.o \
src/utils/data.o \
src/utils/hash.o \
src/utils/hash_map.o \
src/utils/context_switch.o \
src/utils/data_source.o \
src/utils/data_source_context.o \
src/utils/data_source_stream.o \
src/utils/front_mgr.o \
src/utils/memory.o \
src/utils/orientation.o \
src/utils/plane.o \
src/utils/quantizer.o \
src/utils/split_iterator.o \
src/utils/status.o \
src/utils/thread_utils.o \
src/utils/utils.o \
src/utils/wiener.o \
UTILS_ENC_OBJS = \
src/common/global_params.o \
src/common/header_enc_dec.o \
src/common/integral.o \
COMMON_DEC_OBJS = \
src/common/filters/rstr_flt_params.o \
src/common/lossless/color_cache.o \
src/common/lossy/block.o \
src/common/lossy/block_size.o \
src/common/lossy/block_size_io.o \
src/common/lossy/context.o \
src/common/lossy/predictor.o \
src/common/lossy/quant_mtx.o \
src/common/lossy/residuals.o \
src/common/lossy/residuals_aom.o \
src/common/lossy/rnd_mtx.o \
src/common/lossy/segment.o \
src/common/lossy/transforms.o \
src/common/progress_watcher.o \
src/common/symbols.o \
src/common/vdebug.o \
EXAMPLE_UTILS_HDRS = \
examples/stopwatch.h \
examples/example_utils.h \
EXAMPLE_UTILS_OBJS = \
examples/custom_memory.o \
examples/example_utils.o \
EXTRAS_OBJS = \
extras/aom_utils.o \
extras/ccsp_imageio.o \
extras/wp2_dec_12b.o \
extras/extras.o \
extras/y4menc.o \
extras/y4mdec.o \
LIBWP2DECODER_OBJS = $(DEC_OBJS) $(DSP_DEC_OBJS) $(UTILS_DEC_OBJS) \
$(ANS_OBJS) $(PREVIEW_OBJS) $(COMMON_DEC_OBJS)
LIBWP2_OBJS = $(LIBWP2DECODER_OBJS) $(ENC_OBJS) $(DSP_ENC_OBJS) \
$(UTILS_ENC_OBJS) $(ANS_ENC_OBJS)
HDRS_INSTALLED = \
src/wp2/base.h \
src/wp2/debug.h \
src/wp2/decode.h \
src/wp2/encode.h \
src/wp2/format_constants.h \
HDRS = \
src/common/av1_common.h \
src/common/color_precision.h \
src/common/constants.h \
src/common/filters/rstr_flt_params.h \
src/common/lossless/color_cache.h \
src/common/lossy/block.h \
src/common/lossy/block_size.h \
src/common/lossy/block_size_io.h \
src/common/lossy/context.h \
src/common/lossy/predictor.h \
src/common/lossy/quant_mtx.h \
src/common/lossy/segment.h \
src/common/lossy/transforms.h \
src/common/lossy/residuals.h \
src/common/lossy/residuals_aom.h \
src/common/lossy/rnd_mtx.h \
src/common/lossy/aom/cdfs.inc \
src/common/global_params.h \
src/common/header_enc_dec.h \
src/common/integral.h \
src/common/preview/preview.h \
src/common/progress_watcher.h \
src/common/symbols.h \
src/dsp/dsp.h \
src/dsp/dsp_x86.h \
src/dsp/lossless/decl_dsp.h \
src/dsp/lossless/encl_dsp.h \
src/dsp/lossless/dspl.h \
src/dsp/math.h \
src/dec/filters/alpha_filter.h \
src/dec/filters/block_map_filter.h \
src/dec/filters/deblocking_filter.h \
src/dec/filters/directional_filter.h \
src/dec/filters/grain_filter.h \
src/dec/filters/intertile_filter.h \
src/dec/filters/intratile_filter.h \
src/dec/filters/restoration_filter.h \
src/dec/incr/decoder_context.h \
src/dec/incr/decoder_info.h \
src/dec/incr/decoder_skip.h \
src/dec/incr/decoder_state.h \
src/dec/lossless/losslessi_dec.h \
src/dec/preview/preview_dec.h \
src/dec/residuals_dec_aom.h \
src/dec/symbols_dec.h \
src/dec/tile_dec.h \
src/dec/wp2_dec_i.h \
src/enc/analysis.h \
src/enc/anim/anim_enc.h \
src/enc/block_enc.h \
src/enc/lossless/losslessi_enc.h \
src/enc/lossless/histogram_enc.h \
src/enc/partitioning/partition_score_func.h \
src/enc/partitioning/partition_score_func_area.h \
src/enc/partitioning/partition_score_func_block.h \
src/enc/partitioning/partition_score_func_multi.h \
src/enc/partitioning/partition_score_func_tile.h \
src/enc/partitioning/partitioner.h \
src/enc/partitioning/partitioner_area.h \
src/enc/partitioning/partitioner_exhaustive.h \
src/enc/partitioning/partitioner_multi.h \
src/enc/partitioning/partitioner_split.h \
src/enc/partitioning/partitioner_split_recurse.h \
src/enc/partitioning/partitioner_top_left.h \
src/enc/preview/preview_enc.h \
src/enc/residuals_enc_aom.h \
src/enc/screen_content/screen_enc.h \
src/enc/symbols_enc.h \
src/enc/tile_enc.h \
src/enc/trellis.h \
src/enc/wp2_enc_i.h \
src/utils/ans.h \
src/utils/ans_utils.h \
src/utils/context_switch.h \
src/utils/csp.h \
src/utils/data_source.h \
src/utils/data_source_context.h \
src/utils/data_source_stream.h \
src/utils/front_mgr.h \
src/utils/hash.h \
src/utils/orientation.h \
src/utils/plane.h \
src/utils/random.h \
src/utils/split_iterator.h \
src/utils/split_iterator.cc \
src/utils/stats.h \
src/utils/thread_utils.h \
src/utils/utils.h \
src/utils/vector.h \
src/utils/wiener.h \
$(HDRS_INSTALLED) \
OUT_LIBS =
OUT_LIBS += imageio/libimageio_util.a
OUT_LIBS += imageio/libimagedec.a
OUT_LIBS += imageio/libimageenc.a
OUT_LIBS += extras/libextras.a
OUT_LIBS += examples/example_utils.a
OUT_LIBS += src/libwebp2decoder.a
OUT_LIBS += src/libwebp2.a
# libs for testing. Let's just include everything we could need
BASE_LIBS =
BASE_LIBS += extras/libextras.a
BASE_LIBS += imageio/libimageenc.a
BASE_LIBS += imageio/libimagedec.a
BASE_LIBS += imageio/libimageio_util.a
BASE_LIBS += examples/example_utils.a
BASE_LIBS += src/libwebp2.a
TEST_OBJS =
TEST_OBJS += tests/include/helpers_incr.o
TEST_OBJS += tests/include/helpers_filter.o
TEST_OBJS += tests/include/helpers.o
TEST_OBJS += $(BASE_LIBS)
TEST_CXX_FLAGS =
TEST_CXX_FLAGS += $(GTEST_FLAGS) -lpthread -Wno-unused-command-line-argument
OTHER_EXAMPLES =
OUTPUT = $(OUT_LIBS) $(OUT_EXAMPLES)
ifeq ($(MAKECMDGOALS),clean)
OUTPUT += $(EXTRA_EXAMPLES) $(OTHER_EXAMPLES)
OUTPUT += $(EXTRAS_LIB)
endif
all: ex $(EXTRA_EXAMPLES) $(OTHER_EXAMPLES) $(CC_TESTS) $(SH_TESTS)
%.o: %.c $(HDRS)
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
%.o: %.cc $(HDRS)
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $< -o $@
imageio/libimagedec.a: $(EX_FORMAT_DEC_OBJS) $(EX_FORMAT_DEC_HDRS)
imageio/libimageenc.a: $(EX_FORMAT_ENC_OBJS) $(EX_FORMAT_ENC_HDRS)
imageio/libimageio_util.a: $(IMAGE_UTIL_OBJS) $(IMAGE_UTIL_HDRS)
examples/example_utils.a: $(EXAMPLE_UTILS_OBJS) $(EXAMPLE_UTILS_HDRS)
extras/libextras.a: $(EXTRAS_OBJS)
src/libwebp2decoder.a: $(LIBWP2DECODER_OBJS)
src/libwebp2.a: $(LIBWP2_OBJS)
%.a:
$(AR) $(ARFLAGS) $@ $^
###############################################################################
# examples
###############################################################################
examples/cwp2: examples/cwp2.o
examples/cwp2: $(BASE_LIBS)
examples/cwp2: override EXTRA_LIBS += $(IMG_LIBS)
examples/dwp2: examples/dwp2.o
examples/dwp2: $(BASE_LIBS)
examples/dwp2: override EXTRA_LIBS += $(IMG_LIBS)
examples/vwp2: examples/vwp2.o
examples/vwp2: $(BASE_LIBS)
examples/vwp2: extras/libextras.a
examples/vwp2: override EXTRA_LIBS += $(IMG_LIBS) $(GL_LIBS)
examples/get_disto: examples/get_disto.o
examples/get_disto: $(BASE_LIBS)
examples/get_disto: override EXTRA_LIBS += $(IMG_LIBS)
examples/rd_curve: examples/rd_curve.o
examples/rd_curve: $(BASE_LIBS)
examples/rd_curve: extras/libextras.a
examples/rd_curve: override EXTRA_LIBS += $(IMG_LIBS)
OUT_EXAMPLES =
OUT_EXAMPLES += examples/cwp2
OUT_EXAMPLES += examples/dwp2
OUT_EXAMPLES += examples/vwp2
OUT_EXAMPLES += examples/get_disto
OUT_EXAMPLES += examples/rd_curve
ex: $(OUT_EXAMPLES)
###############################################################################
# extras
###############################################################################
extras/vwp2_sdl: extras/vwp2_sdl.o
extras/vwp2_sdl: extras/wp2_to_sdl.o
extras/vwp2_sdl: $(BASE_LIBS)
extras/vwp2_sdl: override EXTRA_FLAGS += -DWP2_HAVE_SDL $(SDL_FLAGS)
extras/vwp2_sdl: override EXTRA_LIBS += $(SDL_LIBS) $(IMG_LIBS)
extras/av1enc: extras/av1enc.o
extras/av1enc: $(BASE_LIBS)
extras/av1enc: override EXTRA_LIBS += $(IMG_LIBS) -lpthread
extras/mk_preview: extras/mk_preview.o
extras/mk_preview: $(BASE_LIBS)
extras/mk_preview: override EXTRA_LIBS += $(IMG_LIBS) -lpthread
extras/ewp2: extras/ewp2.o
extras/ewp2: $(BASE_LIBS)
extras/ewp2: override EXTRA_LIBS += $(IMG_LIBS) -lpthread
EXTRA_EXAMPLES =
EXTRA_EXAMPLES += extras/vwp2_sdl
EXTRA_EXAMPLES += extras/av1enc
EXTRA_EXAMPLES += extras/mk_preview
EXTRA_EXAMPLES += extras/ewp2
EXTRAS_LIB = extras/libextras.a
extras: $(EXTRAS_LIB) $(EXTRA_EXAMPLES)
###############################################################################
$(OUT_EXAMPLES) $(EXTRA_EXAMPLES) $(OTHER_EXAMPLES):
$(CXX) -o $@ $^ $(LDFLAGS)
###############################################################################
# tests
###############################################################################
dist: DESTDIR := dist
dist: OUT_EXAMPLES += $(EXTRA_EXAMPLES)
dist: all
$(INSTALL) -m755 -d $(DESTDIR)/include/wp2 \
$(DESTDIR)/bin $(DESTDIR)/doc $(DESTDIR)/lib
$(INSTALL) -m755 -s $(OUT_EXAMPLES) $(DESTDIR)/bin
$(INSTALL) -m644 $(HDRS_INSTALLED) $(DESTDIR)/include/wp2
$(INSTALL) -m644 src/libwebp2.a $(DESTDIR)/lib
umask 022; \
for m in man/[cd]wp2.1; do \
basenam=$$(basename $$m .1); \
$(GROFF) -t -e -man -T utf8 $$m \
| $(COL) -bx >$(DESTDIR)/doc/$${basenam}.txt; \
$(GROFF) -t -e -man -T html $$m \
| $(COL) -bx >$(DESTDIR)/doc/$${basenam}.html; \
done
###############################################################################
# tests
###############################################################################
CC_TESTS =
CC_TESTS += test_alloc test_ans test_extras test_av1
CC_TESTS += test_math test_transf test_utils test_front_mgr
CC_TESTS += test_preview_api test_optim test_csp test_dsp test_vector
CC_TESTS += test_symbols test_segment test_quant_mtx test_incr_dec test_api
CC_TESTS += test_coded_block test_distortion test_predictor test_score
CC_TESTS += test_anim test_anim_incr test_imageio_anim test_example_utils
CC_TESTS += test_orientation test_partitions test_uv_mode test_aom_residuals
CC_TESTS += test_residuals test_efforts test_progress test_intertile_filter
CC_TESTS += test_directional_filter test_deblocking_filter test_plane
CC_TESTS += test_header test_custom_csp test_custom_csp_dec test_malloc_fail_at
CC_TESTS += test_custom_csp_enc test_custom_csp_enc_dec test_dec
CC_TESTS += test_thread test_pessimization test_formats test_global_params
CC_TESTS += test_data test_data_source test_data_source_stream test_alpha_filter
CC_TESTS += test_anim_rectangle test_block_size test_context test_buffer
CC_TESTS += test_imageio test_imageio_conversion test_imageio_util
CC_TESTS += test_simple_enc_dec test_simple_encode test_slow_enc test_trellis
CC_TESTS += test_partition_score_func test_tile_shapes test_version
CC_TESTS += test_syntax_writer test_anim_frame test_diffusion test_analysis
CC_TESTS += test_decoder_api test_restoration_filter test_color_precision
CC_TESTS += test_dsp_speed test_metadata test_bypass test_screen test_anim_skip
CC_TESTS += test_split_iterator test_slow_lossless_enc test_debug_options
CC_TESTS += test_average_color test_varint
# lossless tests:
CC_TESTS += lossless/test_color_cache lossless/test_palette
CC_TESTS += lossless/test_group4 lossless/test_histogram
# template for generating test binary rules
define TEST_binary_template
tests/$(1): tests/$$(addsuffix .o, $(1)) $(TEST_OBJS)
tests/$(1): override EXTRA_LIBS += $(IMG_LIBS) $(GTEST_LIBS)
tests/$(1): override EXTRA_CXX_FLAGS += $(TEST_CXX_FLAGS)
tests/$(1):
$$(CXX) -o $(2) $$^ $$(LDFLAGS)
endef
define TEST_template # generate the rules with same name for .cc and binary
$(call TEST_binary_template,$(1),$$@)
endef
define TEST_template_full # generate the rules for binary and test script
$(call TEST_template,$(1))
$(1): tests/$(1)
cd tests && ./$(1)
endef
$(foreach ttest, $(CC_TESTS), $(eval $(call TEST_template_full,$(ttest))))
# special sh tests, with specially named binaries
$(eval $(call TEST_binary_template,test_assert,tests/test_assert_bin))
test_assert: tests/test_assert
cd tests && ./test_assert.sh
$(eval $(call TEST_binary_template,ansz,tests/ansz))
test_ansz: tests/ansz
cd tests && ./test_ansz.sh
test_io: $(OUT_EXAMPLES) $(EXTRA_EXAMPLES) $(OTHER_EXAMPLES)
cd tests && ./test_io.sh ../examples
test_io_pnm: $(OUT_EXAMPLES) $(EXTRA_EXAMPLES) $(OTHER_EXAMPLES)
cd tests && ./test_io_pnm.sh ../examples
test_cmd: $(OUT_EXAMPLES) $(EXTRA_EXAMPLES) $(OTHER_EXAMPLES)
cd tests && ./test_cmd.sh ../examples > /dev/null
test_enc: $(OUT_EXAMPLES) $(EXTRA_EXAMPLES) $(OTHER_EXAMPLES)
cd tests && ./test_enc.sh ../examples
test_enc_dir: $(OUT_EXAMPLES) $(EXTRA_EXAMPLES) $(OTHER_EXAMPLES)
cd tests && ./test_enc_dir.sh ../examples
test_enc_anim: $(OUT_EXAMPLES) $(EXTRA_EXAMPLES) $(OTHER_EXAMPLES)
cd tests && ./test_enc_anim.sh ../examples
test_memory: $(OUT_EXAMPLES) $(EXTRA_EXAMPLES) $(OTHER_EXAMPLES)
cd tests && ./test_memory.sh ../examples
test_icc: $(OUT_EXAMPLES) $(EXTRA_EXAMPLES) $(OTHER_EXAMPLES)
cd tests && ./test_icc.sh ../examples
SH_TESTS =
SH_TESTS += test_assert test_ansz test_io_pnm test_cmd
SH_TESTS += test_enc test_enc_dir test_enc_anim test_memory test_icc
test: $(CC_TESTS) $(SH_TESTS)
###############################################################################
ex_clean:
for ttest in $(CC_TESTS); do $(RM) tests/$$ttest tests/$$ttest.o; done
for ttest in ansz test_assert_bin; do $(RM) tests/$$ttest; done
$(RM) tests/*.o tests/*~
clean: ex_clean
$(RM) $(OUTPUT) *~
$(RM) -rf Testing
for d in examples extras imageio src src/dec src/dsp src/enc src/wp2 \
src/utils tests man doc swig cmake src/enc/lossless \
src/dec/filters src/dec/incr src/dec/lossless src/dsp/lossless \
src/utils/lossless src/common/lossless src/common/lossy \
src/enc/preview src/enc/partitioning src/dec/preview \
src/common/preview src/common/filters/ src/common \
src/enc/anim src/enc/screen_content tests/include \
src/common/lossy/aom; \
do \
$(RM) -f $$d/*.o $$d/*~ $$d/*.a; \
done
$(RM) -f wp2_js/*.bc wp2_js/*~
DIST_FILES= \
API.txt \
Makefile \
README.md \
README.wp2_js \
LICENSE \
CMakeLists.txt \
cmake/android.cmake \
cmake/compiler.cmake \
cmake/cpu.cmake \
cmake/thread.cmake \
cmake/wp2Config.cmake.in \
doc/vwp2.webp \
examples/cwp2.cc \
examples/dwp2.cc \
examples/vwp2.cc \
examples/get_disto.cc \
examples/rd_curve.cc \
examples/custom_memory.cc \
examples/example_utils.cc \
examples/example_utils.h \
examples/stopwatch.h \
extras/aom_utils.h \
extras/aom_utils.cc \
extras/av1enc.cc \
extras/mk_preview.cc \
extras/ccsp_imageio.h \
extras/ccsp_imageio.cc \
extras/extras.h \
extras/ewp2.cc \
extras/extras.cc \
extras/vwp2_sdl.cc \
extras/wp2_dec_12b.cc \
extras/wp2_to_sdl.h \
extras/wp2_to_sdl.cc \
extras/y4mdec.cc \
extras/y4menc.cc \
imageio/anim_image_dec.cc \
imageio/anim_image_dec.h \
imageio/bmpdec.cc \
imageio/bmpenc.cc \
imageio/file_format.cc \
imageio/file_format.h \
imageio/gifdec.cc \
imageio/gifdec_metadata.cc \
imageio/image_dec.cc \
imageio/image_dec.h \
imageio/image_enc.cc \
imageio/image_enc.h \
imageio/imageio_util.cc \
imageio/imageio_util.h \
imageio/jpegdec.cc \
imageio/pngdec.cc \
imageio/pngenc.cc \
imageio/pnmdec.cc \
imageio/pnmenc.cc \
imageio/tiffdec.cc \
imageio/tiffenc.cc \
imageio/webpdec.cc \
imageio/webpenc.cc \
imageio/wp2dec.cc \
man/dwp2.1 \
man/cwp2.1 \
man/vwp2.1 \
src/common/av1_common.h \
src/common/color_precision.h \
src/common/constants.h \
src/common/filters/rstr_flt_params.h \
src/common/filters/rstr_flt_params.cc \
src/common/global_params.h \
src/common/global_params.cc \
src/common/header_enc_dec.h \
src/common/header_enc_dec.cc \
src/common/integral.h \
src/common/integral.cc \
src/common/lossless/color_cache.h \
src/common/lossless/color_cache.cc \
src/common/lossy/aom/cdfs.inc \
src/common/lossy/block.h \
src/common/lossy/block.cc \
src/common/lossy/block_size.h \
src/common/lossy/block_size.cc \
src/common/lossy/block_size_io.h \
src/common/lossy/block_size_io.cc \
src/common/lossy/context.h \
src/common/lossy/context.cc \
src/common/lossy/predictor.h \
src/common/lossy/predictor.cc \
src/common/lossy/quant_mtx.h \
src/common/lossy/quant_mtx.cc \
src/common/lossy/residuals.h \
src/common/lossy/residuals.cc \
src/common/lossy/residuals_aom.h \
src/common/lossy/residuals_aom.cc \
src/common/lossy/rnd_mtx.h \
src/common/lossy/rnd_mtx.cc \
src/common/lossy/segment.h \
src/common/lossy/segment.cc \
src/common/lossy/transforms.h \
src/common/lossy/transforms.cc \
src/common/preview/preview.h \
src/common/preview/preview.cc \
src/common/preview/preview_rasterizer.cc \
src/common/progress_watcher.h \
src/common/progress_watcher.cc \
src/common/symbols.h \
src/common/symbols.cc \
src/common/vdebug.cc \
src/common/vdebug.h \
src/dec/alpha_dec.cc \
src/dec/anim_dec.cc \
src/dec/av1_dec.cc \
src/dec/bypass_dec.cc \
src/dec/features_dec.cc \
src/dec/filters/alpha_filter.h \
src/dec/filters/alpha_filter.cc \
src/dec/filters/block_map_filter.h \
src/dec/filters/block_map_filter.cc \
src/dec/filters/deblocking_filter.h \
src/dec/filters/deblocking_filter.cc \
src/dec/filters/directional_filter.h \
src/dec/filters/directional_filter.cc \
src/dec/filters/grain_filter.h \
src/dec/filters/grain_filter.cc \
src/dec/filters/intertile_filter.h \
src/dec/filters/intertile_filter.cc \
src/dec/filters/intratile_filter.h \
src/dec/filters/intratile_filter.cc \
src/dec/filters/restoration_filter.h \
src/dec/filters/restoration_filter.cc \
src/dec/icc_dec.cc \
src/dec/incr/decoder_api.cc \
src/dec/incr/decoder_context.h \
src/dec/incr/decoder_context.cc \
src/dec/incr/decoder_info.h \
src/dec/incr/decoder_info.cc \
src/dec/incr/decoder_skip.h \
src/dec/incr/decoder_skip.cc \
src/dec/incr/decoder_stages.cc \
src/dec/incr/decoder_state.h \
src/dec/incr/decoder_state.cc \
src/dec/incr/decoder_tiles.cc \
src/dec/lossless_dec.cc \
src/dec/lossy_dec.cc \
src/dec/main_dec.cc \
src/dec/preview/preview_dec.h \
src/dec/preview/preview_dec.cc \
src/dec/residuals_dec.cc \
src/dec/residuals_dec_aom.h \
src/dec/residuals_dec_aom.cc \
src/dec/symbols_dec.h \
src/dec/symbols_dec.cc \
src/dec/syntax_dec.cc \
src/dec/tile_dec.h \
src/dec/tile_dec.cc \
src/dec/wp2_dec_i.h \
src/dsp/alpha.cc \
src/dsp/ans_dsp.cc \
src/dsp/argb_converter.cc \
src/dsp/cpu.cc \
src/dsp/cdef_dsp.cc \
src/dsp/csp_dsp.cc \
src/dsp/deblocking_filter_dsp.cc \
src/dsp/dec_dsp.cc \
src/dsp/dsp.h \
src/dsp/dsp_x86.h \
src/dsp/enc_dsp.cc \
src/dsp/raster_dsp.cc \
src/dsp/grain_c.cc \
src/dsp/math.cc \
src/dsp/math.h \
src/dsp/score_dsp.cc \
src/dsp/ssim_dsp.cc \
src/dsp/intra_dsp.cc \
src/dsp/quant_dsp.cc \
src/dsp/transf_c.cc \
src/dsp/transf_sse.cc \
src/dsp/wiener_dsp.cc \
src/enc/alpha_enc.cc \
src/enc/analysis.h \
src/enc/analysis_enc.cc \
src/enc/anim/anim_enc.h \
src/enc/anim/anim_enc.cc \
src/enc/anim/anim_frame.cc \
src/enc/anim/anim_rectangle.cc \
src/enc/av1_enc.cc \
src/enc/block_enc.h \
src/enc/block_enc.cc \
src/enc/bypass_enc.cc \
src/enc/config_enc.cc \
src/enc/distortion_enc.cc \
src/enc/lossless_enc.cc \
src/enc/lossy_enc.cc \
src/enc/main_enc.cc \
src/enc/nearlossless_enc.cc \
src/enc/partitioning/partition_enc.cc \
src/enc/partitioning/partition_score_func.h \
src/enc/partitioning/partition_score_func.cc \
src/enc/partitioning/partition_score_func_area.h \
src/enc/partitioning/partition_score_func_area.cc \
src/enc/partitioning/partition_score_func_block.h \
src/enc/partitioning/partition_score_func_block.cc \
src/enc/partitioning/partition_score_func_multi.h \
src/enc/partitioning/partition_score_func_multi.cc \
src/enc/partitioning/partition_score_func_tile.h \
src/enc/partitioning/partition_score_func_tile.cc \
src/enc/partitioning/partitioner.h \
src/enc/partitioning/partitioner.cc \
src/enc/partitioning/partitioner_area.h \
src/enc/partitioning/partitioner_area.cc \
src/enc/partitioning/partitioner_exhaustive.h \
src/enc/partitioning/partitioner_exhaustive.cc \
src/enc/partitioning/partitioner_multi.h \
src/enc/partitioning/partitioner_multi.cc \
src/enc/partitioning/partitioner_split.h \
src/enc/partitioning/partitioner_split.cc \
src/enc/partitioning/partitioner_split_recurse.h \
src/enc/partitioning/partitioner_split_recurse.cc \
src/enc/partitioning/partitioner_top_left.h \
src/enc/partitioning/partitioner_top_left.cc \
src/enc/syntax_enc.cc \
src/enc/preview/preview_analysis.cc \
src/enc/preview/preview_color.cc \
src/enc/preview/preview_config.cc \
src/enc/preview/preview_enc.h \
src/enc/preview/preview_enc.cc \
src/enc/preview/preview_opt.cc \
src/enc/residuals_enc.cc \
src/enc/residuals_enc_aom.h \
src/enc/residuals_enc_aom.cc \
src/enc/screen_content/screen_enc.h \
src/enc/screen_content/screen_enc.cc \
src/enc/segment_enc.cc \
src/enc/symbols_enc.h \
src/enc/symbols_enc.cc \
src/enc/tile_enc.h \
src/enc/tile_enc.cc \
src/enc/trellis.h \
src/enc/trellis.cc \
src/enc/wp2_enc_i.h \
src/enc/writer_enc.cc \
src/utils/ans.h \
src/utils/ans.cc \
src/utils/ans_enc.h \
src/utils/ans_enc.cc \
src/utils/ans_cost_table.cc \
src/utils/ans_utils.h \
src/utils/ans_utils.cc \
src/utils/context_switch.h \
src/utils/context_switch.cc \
src/utils/csp.h \
src/utils/csp.cc \
src/utils/data.cc \
src/utils/data_source.h \
src/utils/data_source.cc \
src/utils/data_source_context.h \
src/utils/data_source_context.cc \
src/utils/data_source_stream.h \
src/utils/data_source_stream.cc \
src/utils/argb_buffer.cc \
src/utils/front_mgr.h \
src/utils/front_mgr.cc \
src/utils/hash.h \
src/utils/memory.cc \
src/utils/orientation.cc \
src/utils/orientation.h \
src/utils/plane.cc \
src/utils/plane.h \
src/utils/quantizer.cc \
src/utils/quantizer.h \
src/utils/random.h \
src/utils/split_iterator.h \
src/utils/split_iterator.cc \
src/utils/stats.h \
src/utils/status.cc \
src/utils/thread_utils.cc \
src/utils/thread_utils.h \
src/utils/utils.cc \
src/utils/utils.h \
src/utils/vector.h \
src/utils/wiener.h \
src/utils/wiener.cc \
src/wp2/base.h \
src/wp2/debug.h \
src/wp2/decode.h \
src/wp2/encode.h \
src/wp2/format_constants.h \
src/dec/lossless/group4_dec.cc \
src/dec/lossless/losslessi_dec.cc \
src/dec/lossless/losslessi_dec.h \
src/dsp/lossless/decl_dsp.h \
src/dsp/lossless/decl_dsp.cc \
src/dsp/lossless/dspl.h \
src/dsp/lossless/dspl.cc \
src/dsp/lossless/encl_dsp.h \
src/dsp/lossless/encl_dsp.cc \
src/enc/lossless/analysisl_enc.cc \
src/enc/lossless/histogram_enc.h \
src/enc/lossless/predictorl_enc.cc \
src/enc/lossless/losslessi_enc.cc \
src/enc/symbols_enc.h \
src/enc/symbols_enc.cc \
src/enc/lossless/losslessi_enc.h \
src/enc/lossless/backward_references_cost_enc.cc \
src/enc/lossless/backward_references_enc.cc \
src/enc/lossless/backward_references_enc.h \
src/enc/lossless/group4_enc.cc \
src/enc/lossless/histogram_enc.cc \
src/enc/lossless/palette.h \
src/enc/lossless/palette.cc \
swig/examples/pycwp2.py \
swig/examples/pydwp2.py \
swig/examples/pyvwp2.py \
swig/CMakeLists.txt \
swig/libwebp2.i \
swig/README.md \
tests/include/helpers.h \
tests/include/helpers.cc \
tests/include/helpers_filter.h \
tests/include/helpers_filter.cc \
tests/include/helpers_incr.h \
tests/include/helpers_incr.cc \
tests/CMakeLists.txt \
tests/ansz.cc \
tests/test_alloc.cc \
tests/test_alpha_filter.cc \
tests/test_analysis.cc \
tests/test_anim.cc \
tests/test_anim_frame.cc \
tests/test_anim_incr.cc \
tests/test_anim_rectangle.cc \
tests/test_anim_skip.cc \
tests/test_ans.cc \
tests/test_ansz.sh \
tests/test_aom_residuals.cc \
tests/test_api.cc \
tests/test_assert.cc \
tests/test_assert.sh \
tests/test_average_color.cc \
tests/test_block_size.cc \
tests/test_buffer.cc \
tests/test_bypass.cc \
tests/test_cmd.sh \
tests/test_trellis.cc \
tests/lossless/test_color_cache.cc \
tests/lossless/test_histogram.cc \
tests/lossless/test_group4.cc \
tests/lossless/test_palette.cc \
tests/test_av1.cc \
tests/test_coded_block.cc \
tests/test_color_precision.cc \
tests/test_context.cc \
tests/test_conversion.cc \
tests/test_csp.cc \
tests/test_custom_csp.cc \
tests/test_custom_csp_dec.cc \
tests/test_custom_csp_enc.cc \
tests/test_custom_csp_enc_dec.cc \
tests/test_dsp.cc \
tests/test_dsp_speed.cc \
tests/test_data.cc \
tests/test_data_source.cc \
tests/test_data_source_stream.cc \
tests/test_deblocking_filter.cc \
tests/test_dec.cc \
tests/test_decoder_api.cc \
tests/test_diffusion.cc \
tests/test_directional_filter.cc \
tests/test_distortion.cc \
tests/test_enc.sh \
tests/test_enc_anim.sh \
tests/test_enc_dir.sh \
tests/test_enc_ewp2.sh \
tests/test_example_utils.cc \
tests/test_extras.cc \
tests/test_formats.cc \
tests/test_front_mgr.cc \
tests/test_header.cc \
tests/test_global_params.cc \
tests/test_icc.sh \
tests/test_imageio.cc \
tests/test_imageio_anim.cc \
tests/test_imageio_conversion.cc \
tests/test_imageio_util.cc \
tests/test_incr_dec.cc \
tests/test_intertile_filter.cc \
tests/test_io.sh \
tests/test_io_pnm.sh \
tests/test_io_ewp2.sh \
tests/test_math.cc \
tests/test_malloc_fail_at.cc \
tests/test_memory.sh \
tests/test_metadata.cc \
tests/test_debug_options.cc \
tests/test_optim.cc \
tests/test_orientation.cc \
tests/test_partitions.cc \
tests/test_partition_score_func.cc \
tests/test_pessimization.cc \
tests/test_plane.cc \
tests/test_pessimization.cc \
tests/test_predictor.cc \
tests/test_preview_api.cc \
tests/test_progress.cc \
tests/test_score.cc \
tests/test_screen.cc \
tests/test_quant_mtx.cc \
tests/test_restoration_filter.cc \
tests/test_residuals.cc \
tests/test_segment.cc \
tests/test_simple_enc_dec.cc \
tests/test_simple_encode.cc \
tests/test_slow_enc.cc \
tests/test_slow_lossless_enc.cc \
tests/test_split_iterator.cc \
tests/test_stuttering_server.sh \
tests/test_efforts.cc \
tests/test_symbols.cc \
tests/test_swig_examples.sh \
tests/test_swig_python.py \
tests/test_syntax_writer.cc \
tests/test_thread.cc \
tests/test_tile_shapes.cc \
tests/test_transf.cc \
tests/test_utils.cc \
tests/test_uv_mode.cc \
tests/test_varint.cc \
tests/test_vector.cc \
tests/test_version.cc \
tests/testdata \
tests/testdata/metadata/ICC_524_type1.bin \
tests/testdata/metadata/ICC_3144_type2.bin \
tests/testdata/metadata/ICC_3144_type3.bin \
tests/testdata/alpha_ramp.lossy.webp \
tests/testdata/alpha_ramp.pam \
tests/testdata/alpha_ramp.png \
tests/testdata/alpha_ramp.tiff \
tests/testdata/alpha_ramp.webp \
tests/testdata/animation0.gif \
tests/testdata/animation0.webp \
tests/testdata/animation1.webp \
tests/testdata/source0.pgm \
tests/testdata/source0.ppm \
tests/testdata/source1.itl.png \
tests/testdata/source1.png \
tests/testdata/source1_1x1.png \
tests/testdata/source1_1x48.png \
tests/testdata/source1_32x32.png \
tests/testdata/source1_4x4.png \
tests/testdata/source1_64x1.png \
tests/testdata/source1_64x48.png \
tests/testdata/source2.tiff \
tests/testdata/source3.jpg \
tests/testdata/source4.ll.webp \
tests/testdata/source4.webp \
tests/testdata/specific \
tests/testdata/specific/bug449_1001.pam \
tests/testdata/specific/bug449_1001.pgm \
tests/testdata/specific/bug449_1001.ppm \
tests/testdata/specific/bug449_1001_g.pam \
tests/testdata/specific/bug449_255.pam \
tests/testdata/specific/bug449_255.pgm \
tests/testdata/specific/bug449_255.ppm \
tests/testdata/specific/bug449_255_g.pam \
tests/testdata/specific/bug449_37.pam \
tests/testdata/specific/bug449_37.pgm \
tests/testdata/specific/bug449_37.ppm \
tests/testdata/specific/bug449_37_g.pam \
tests/testdata/specific/bug449_65535.pam \
tests/testdata/specific/bug449_65535.pgm \
tests/testdata/specific/bug449_65535.ppm \
tests/testdata/specific/bug449_65535_g.pam \
tests/testdata/specific/bug449_ref.png \
tests/testdata/specific/bug449_ref_gray.png \
tests/testdata/specific/bug449_ref_gray_alpha.png \
tests/testdata/specific/bug449_ref_noalpha.png \
tests/tools/stuttering_http_server.py \
wp2_js/index.html \
wp2_js/index_wasm.html \
wp2_js/test_wp2_js.wp2 \
wp2_js/test_wp2_wasm.wp2 \
wp2_js/preview.html \
Android.mk \
Application.mk \
examples/Android.mk \
pak: clean
ifeq ($(strip $(shell uname)), Darwin)
COPYFILE_DISABLE=1 tar -s ,.*,wp2-$(VERSION)\/~,p -czf $(ARCHIVE_FILE) \
$(DIST_FILES)
else
tar --transform="s#^#wp2-$(VERSION)/#" -czf $(ARCHIVE_FILE) $(DIST_FILES)
endif
@echo "GENERATED ARCHIVE: $(ARCHIVE_FILE)"
.PHONY: all clean dist ex pak
.SUFFIXES: