Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 45 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,46 @@
*.o
crnlib/crunch

*.swp
*.swo
*.o
*.dSYM
*.obj
*.swp
*.swo
/aclocal.m4
/autom4te.cache/
/compile
/config.guess
/config.log
/config.status
/config.sub
/configure.scan
/configure
/depcomp
/install-sh
/missing
Makefile
Makefile.in
m4/!ax_check_gl.m4.m4
m4/!ax_save_flags_with_prefix.m4
m4/!ax_save_flags_with_prefix.m4
m4/*.m4
config.h.*
/config.h
*.la
*.lo
.dirstamp
/ltmain.sh
/stamp-h1
/test-driver
/test-suite.log
/libtool
.libs/
.deps
/ar-lib
/autoscan.log
/test/tests
/test/tests.log
/test/tests.trs
/Makefile
crunchcli
294 changes: 294 additions & 0 deletions Makefile.am
Original file line number Diff line number Diff line change
@@ -0,0 +1,294 @@
ACLOCAL_AMFLAGS = -I m4

AM_CXXFLAGS = -fomit-frame-pointer \
-fexpensive-optimizations \
-O3 \
-Wextra \
-Wall \
-DNDEBUG \
-g \
-fexceptions \
-Wno-unused-value \
-Wno-unused \
-fno-strict-aliasing \
-ffast-math \
-fno-math-errno \
-I./crnlib

EXTRA_DIST = README.md CHANGELOG.md license.txt autogen.sh

# lib
lib_LTLIBRARIES = libcrnlib.la
libcrnlib_la_LDFLAGS = -no-defined -version-info 0:1:0 \
-lpthread
libcrnlib_la_SOURCES = crnlib/crn_arealist.cpp \
crnlib/crn_assert.cpp \
crnlib/crn_checksum.cpp \
crnlib/crn_colorized_console.cpp \
crnlib/crn_command_line_params.cpp \
crnlib/crn_comp.cpp \
crnlib/crn_console.cpp \
crnlib/crn_core.cpp \
crnlib/crn_data_stream.cpp \
crnlib/crn_dds_comp.cpp \
crnlib/crn_decomp.cpp \
crnlib/crn_dxt1.cpp \
crnlib/crn_dxt5a.cpp \
crnlib/crn_dxt.cpp \
crnlib/crn_dxt_endpoint_refiner.cpp \
crnlib/crn_dxt_fast.cpp \
crnlib/crn_dxt_hc_common.cpp \
crnlib/crn_dxt_hc.cpp \
crnlib/crn_dxt_image.cpp \
crnlib/crn_dynamic_string.cpp \
crnlib/crn_etc.cpp \
crnlib/crn_file_utils.cpp \
crnlib/crn_find_files.cpp \
crnlib/crn_hash.cpp \
crnlib/crn_hash_map.cpp \
crnlib/crn_huffman_codes.cpp \
crnlib/crn_image_utils.cpp \
crnlib/crn_jpgd.cpp \
crnlib/crn_jpge.cpp \
crnlib/crn_ktx_texture.cpp \
crnlib/crnlib.cpp \
crnlib/crn_lzma_codec.cpp \
crnlib/crn_math.cpp \
crnlib/crn_mem.cpp \
crnlib/crn_miniz.cpp \
crnlib/crn_mipmapped_texture.cpp \
crnlib/crn_pixel_format.cpp \
crnlib/crn_platform.cpp \
crnlib/crn_prefix_coding.cpp \
crnlib/crn_qdxt1.cpp \
crnlib/crn_qdxt5.cpp \
crnlib/crn_rand.cpp \
crnlib/crn_resample_filters.cpp \
crnlib/crn_resampler.cpp \
crnlib/crn_rg_etc1.cpp \
crnlib/crn_ryg_dxt.cpp \
crnlib/crn_sparse_bit_array.cpp \
crnlib/crn_stb_image.cpp \
crnlib/crn_strutils.cpp \
crnlib/crn_symbol_codec.cpp \
crnlib/crn_texture_comp.cpp \
crnlib/crn_texture_conversion.cpp \
crnlib/crn_texture_file_types.cpp \
crnlib/crn_threaded_resampler.cpp \
crnlib/crn_threading_pthreads.cpp \
crnlib/crn_timer.cpp \
crnlib/crn_utils.cpp \
crnlib/crn_value.cpp \
crnlib/crn_vector.cpp \
crnlib/crn_zeng.cpp \
crnlib/lzma_7zBuf2.cpp \
crnlib/lzma_7zBuf.cpp \
crnlib/lzma_7zCrc.cpp \
crnlib/lzma_7zFile.cpp \
crnlib/lzma_7zStream.cpp \
crnlib/lzma_Alloc.cpp \
crnlib/lzma_Bcj2.cpp \
crnlib/lzma_Bra86.cpp \
crnlib/lzma_Bra.cpp \
crnlib/lzma_BraIA64.cpp \
crnlib/lzma_LzFind.cpp \
crnlib/lzma_LzmaDec.cpp \
crnlib/lzma_LzmaEnc.cpp \
crnlib/lzma_LzmaLib.cpp

# define the target to install header files to system when do 'make install'
crnlibdir=$(includedir)/crnlib
crnlib_HEADERS = crnlib/crn_arealist.h \
crnlib/crn_assert.h \
crnlib/crn_atomics.h \
crnlib/crn_buffer_stream.h \
crnlib/crn_cfile_stream.h \
crnlib/crn_checksum.h \
crnlib/crn_clusterizer.h \
crnlib/crn_color.h \
crnlib/crn_colorized_console.h \
crnlib/crn_command_line_params.h \
crnlib/crn_comp.h \
crnlib/crn_console.h \
crnlib/crn_core.h \
crnlib/crn_data_stream.h \
crnlib/crn_dds_comp.h \
crnlib/crn_dxt1.h \
crnlib/crn_dxt5a.h \
crnlib/crn_dxt_endpoint_refiner.h \
crnlib/crn_dxt_fast.h \
crnlib/crn_dxt.h \
crnlib/crn_dxt_hc_common.h \
crnlib/crn_dxt_hc.h \
crnlib/crn_dxt_image.h \
crnlib/crn_dynamic_stream.h \
crnlib/crn_dynamic_string.h \
crnlib/crn_etc.h \
crnlib/crn_file_utils.h \
crnlib/crn_find_files.h \
crnlib/crn_freeimage_image_utils.h \
crnlib/crn_hash.h \
crnlib/crn_hash_map.h \
crnlib/crn_helpers.h \
crnlib/crn_huffman_codes.h \
crnlib/crn_image.h \
crnlib/crn_image_utils.h \
crnlib/crn_intersect.h \
crnlib/crn_jpgd.h \
crnlib/crn_jpge.h \
crnlib/crn_ktx_texture.h \
crnlib/crn_lzma_codec.h \
crnlib/crn_math.h \
crnlib/crn_matrix.h \
crnlib/crn_mem.h \
crnlib/crn_miniz.h \
crnlib/crn_mipmapped_texture.h \
crnlib/crn_packed_uint.h \
crnlib/crn_pixel_format.h \
crnlib/crn_platform.h \
crnlib/crn_prefix_coding.h \
crnlib/crn_qdxt1.h \
crnlib/crn_qdxt5.h \
crnlib/crn_radix_sort.h \
crnlib/crn_rand.h \
crnlib/crn_ray.h \
crnlib/crn_rect.h \
crnlib/crn_resample_filters.h \
crnlib/crn_resampler.h \
crnlib/crn_rg_etc1.h \
crnlib/crn_sparse_array.h \
crnlib/crn_sparse_bit_array.h \
crnlib/crn_strutils.h \
crnlib/crn_symbol_codec.h \
crnlib/crn_texture_comp.h \
crnlib/crn_texture_conversion.h \
crnlib/crn_texture_file_types.h \
crnlib/crn_threaded_clusterizer.h \
crnlib/crn_threaded_resampler.h \
crnlib/crn_threading.h \
crnlib/crn_threading_null.h \
crnlib/crn_threading_pthreads.h \
crnlib/crn_timer.h \
crnlib/crn_traits.h \
crnlib/crn_tree_clusterizer.h \
crnlib/crn_types.h \
crnlib/crn_utils.h \
crnlib/crn_vec.h \
crnlib/crn_vec_interval.h \
crnlib/crn_vector2d.h \
crnlib/crn_vector.h \
crnlib/crn_winhdr.h \
crnlib/crn_zeng.h \
crnlib/lzma_7zBuf.h \
crnlib/lzma_7zCrc.h \
crnlib/lzma_7zFile.h \
crnlib/lzma_7zVersion.h \
crnlib/lzma_Alloc.h \
crnlib/lzma_Bcj2.h \
crnlib/lzma_Bra.h \
crnlib/lzma_CpuArch.h \
crnlib/lzma_LzFind.h \
crnlib/lzma_LzHash.h \
crnlib/lzma_LzmaDec.h \
crnlib/lzma_LzmaEnc.h \
crnlib/lzma_LzmaLib.h \
crnlib/lzma_MyVersion.h \
crnlib/lzma_Types.h

# cli
bin_PROGRAMS = crunchcli
crunchcli_SOURCES = crunch/crunch.cpp \
crunch/corpus_gen.cpp \
crunch/corpus_test.cpp \
crnlib/crn_arealist.cpp \
crnlib/crn_assert.cpp \
crnlib/crn_checksum.cpp \
crnlib/crn_colorized_console.cpp \
crnlib/crn_command_line_params.cpp \
crnlib/crn_comp.cpp \
crnlib/crn_console.cpp \
crnlib/crn_core.cpp \
crnlib/crn_data_stream.cpp \
crnlib/crn_dds_comp.cpp \
crnlib/crn_decomp.cpp \
crnlib/crn_dxt1.cpp \
crnlib/crn_dxt5a.cpp \
crnlib/crn_dxt.cpp \
crnlib/crn_dxt_endpoint_refiner.cpp \
crnlib/crn_dxt_fast.cpp \
crnlib/crn_dxt_hc_common.cpp \
crnlib/crn_dxt_hc.cpp \
crnlib/crn_dxt_image.cpp \
crnlib/crn_dynamic_string.cpp \
crnlib/crn_etc.cpp \
crnlib/crn_file_utils.cpp \
crnlib/crn_find_files.cpp \
crnlib/crn_hash.cpp \
crnlib/crn_hash_map.cpp \
crnlib/crn_huffman_codes.cpp \
crnlib/crn_image_utils.cpp \
crnlib/crn_jpgd.cpp \
crnlib/crn_jpge.cpp \
crnlib/crn_ktx_texture.cpp \
crnlib/crnlib.cpp \
crnlib/crn_lzma_codec.cpp \
crnlib/crn_math.cpp \
crnlib/crn_mem.cpp \
crnlib/crn_miniz.cpp \
crnlib/crn_mipmapped_texture.cpp \
crnlib/crn_pixel_format.cpp \
crnlib/crn_platform.cpp \
crnlib/crn_prefix_coding.cpp \
crnlib/crn_qdxt1.cpp \
crnlib/crn_qdxt5.cpp \
crnlib/crn_rand.cpp \
crnlib/crn_resample_filters.cpp \
crnlib/crn_resampler.cpp \
crnlib/crn_rg_etc1.cpp \
crnlib/crn_ryg_dxt.cpp \
crnlib/crn_sparse_bit_array.cpp \
crnlib/crn_stb_image.cpp \
crnlib/crn_strutils.cpp \
crnlib/crn_symbol_codec.cpp \
crnlib/crn_texture_comp.cpp \
crnlib/crn_texture_conversion.cpp \
crnlib/crn_texture_file_types.cpp \
crnlib/crn_threaded_resampler.cpp \
crnlib/crn_threading_pthreads.cpp \
crnlib/crn_timer.cpp \
crnlib/crn_utils.cpp \
crnlib/crn_value.cpp \
crnlib/crn_vector.cpp \
crnlib/crn_zeng.cpp \
crnlib/lzma_7zBuf2.cpp \
crnlib/lzma_7zBuf.cpp \
crnlib/lzma_7zCrc.cpp \
crnlib/lzma_7zFile.cpp \
crnlib/lzma_7zStream.cpp \
crnlib/lzma_Alloc.cpp \
crnlib/lzma_Bcj2.cpp \
crnlib/lzma_Bra86.cpp \
crnlib/lzma_Bra.cpp \
crnlib/lzma_BraIA64.cpp \
crnlib/lzma_LzFind.cpp \
crnlib/lzma_LzmaDec.cpp \
crnlib/lzma_LzmaEnc.cpp \
crnlib/lzma_LzmaLib.cpp

crunchcli_CXXFLAGS = -fomit-frame-pointer \
-fexpensive-optimizations \
-O3 \
-Wextra \
-Wall \
-DNDEBUG \
-g \
-fexceptions \
-Wno-unused-value \
-Wno-unused \
-fno-strict-aliasing \
-ffast-math \
-fno-math-errno \
-I./inc \
-I./crunch \
-I./crnlib
crunchcli_LDFLAGS = -lpthread
11 changes: 11 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -313,3 +313,14 @@ From the root directory, run:
```c
emcc -O3 emscripten/crn.cpp -I./inc -s EXPORTED_FUNCTIONS="['_malloc', '_free', '_crn_get_width', '_crn_get_height', '_crn_get_levels', '_crn_get_dxt_format', '_crn_get_bytes_per_block', '_crn_get_uncompressed_size', '_crn_decompress']" -s NO_EXIT_RUNTIME=1 -s NO_FILESYSTEM=1 -s ELIMINATE_DUPLICATE_FUNCTIONS=1 -s ALLOW_MEMORY_GROWTH=1 --memory-init-file 0 -o crunch.js
```

## Build on Linux/macOS

For convenient instead of directly using `crnlib/Makefile` (in which we left it intact for reference and just in case of direct use although not complete solution) to build `crunch` tool, you can execute the following sequence of commands on Linux/macOS to build `crunch` tool as well as static/shared libraries along with header files to be installed on your system.

* `./autogen.sh`
* `./configure`
* `make -j4` or `make`
* `sudo make install`

Thus you can integrate crunch with your own engine/project dynamically, or statically. Note that due to the way autotools behave, we generate the binary tool namely `crunchcli` instead of `crunch` to satisfy the build process (as there is crunch directory inside). So instead of executing `crunch ....` you do `crunchcli ...` instead. But you can rename it freely.
4 changes: 4 additions & 0 deletions autogen.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/bin/sh

cd $(dirname "$0")
autoreconf --install
Loading