Unverified Commit 7a822331 authored by Mathis Rosenhauer's avatar Mathis Rosenhauer Committed by GitHub
Browse files

Modernize: cmake (#15)

parent 019e874e
...@@ -16,5 +16,5 @@ libtool ...@@ -16,5 +16,5 @@ libtool
autom4te.cache autom4te.cache
.DS_Store .DS_Store
build* build*
m4/libtool.m4 m4/*
m4/lt* lib/*
cmake_minimum_required(VERSION 3.1) cmake_minimum_required(VERSION 3.13...3.19)
set(CMAKE_C_STANDARD 99) project(libaec LANGUAGES C VERSION 1.0.4)
include(CheckIncludeFiles) option(BUILD_SHARED_LIBS "Build using shared libraries" ON)
include(TestBigEndian)
include(CheckCSourceCompiles)
include(CheckSymbolExists)
include(cmake/macros.cmake)
option(AEC_FUZZING "Enable build of fuzzing targets" OFF) # Automatically export symbls for Windows DLLs
if(AEC_FUZZING) set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
project(libaec C CXX)
else(AEC_FUZZING) set(CMAKE_C_STANDARD 99)
project(libaec C) set(CMAKE_C_VISIBILITY_PRESET hidden)
endif(AEC_FUZZING) set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(libaec_VERSION_MAJOR 1)
set(libaec_VERSION_MINOR 0)
set(libaec_VERSION_PATCH 4)
set(CMAKE_BUILD_TYPE Release)
enable_testing() enable_testing()
check_include_files(malloc.h HAVE_MALLOC_H) include(TestBigEndian)
test_big_endian(WORDS_BIGENDIAN) test_big_endian(WORDS_BIGENDIAN)
check_clzll(HAVE_DECL___BUILTIN_CLZLL)
# Check for __builtin_clzll for faster decoding
include(CheckCSourceCompiles)
check_c_source_compiles(
"int main(void)\n{return __builtin_clzll(1LL);}"
HAVE_DECL___BUILTIN_CLZLL)
if(NOT HAVE_DECL___BUILTIN_CLZLL) if(NOT HAVE_DECL___BUILTIN_CLZLL)
check_bsr64(HAVE_BSR64) # With MSVC we can use _BitScanReverse64
endif(NOT HAVE_DECL___BUILTIN_CLZLL) check_c_source_compiles(
find_inline_keyword() "int main(void){unsigned long foo; unsigned __int64 bar=1LL;
find_restrict_keyword() return _BitScanReverse64(&foo, bar);}"
HAVE_BSR64)
endif()
include(CheckSymbolExists)
check_symbol_exists(snprintf "stdio.h" HAVE_SNPRINTF) check_symbol_exists(snprintf "stdio.h" HAVE_SNPRINTF)
if(NOT HAVE_SNPRINTF) if(NOT HAVE_SNPRINTF)
check_symbol_exists(_snprintf "stdio.h" HAVE__SNPRINTF) check_symbol_exists(_snprintf "stdio.h" HAVE__SNPRINTF)
check_symbol_exists(_snprintf_s "stdio.h" HAVE__SNPRINTF_S) check_symbol_exists(_snprintf_s "stdio.h" HAVE__SNPRINTF_S)
endif(NOT HAVE_SNPRINTF) endif()
# Communicate findings to code. Has to be compatible with autoconf's config.h.
configure_file( configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/cmake/config.h.in "cmake/config.h.in"
${CMAKE_CURRENT_BINARY_DIR}/config.h) "${CMAKE_CURRENT_BINARY_DIR}/config.h")
add_definitions("-DHAVE_CONFIG_H") add_definitions("-DHAVE_CONFIG_H")
option(BUILD_SHARED_LIBS "Build Shared Libraries" ON)
if(BUILD_SHARED_LIBS)
set (LIB_TYPE SHARED)
else(BUILD_SHARED_LIBS)
set(LIB_TYPE STATIC)
endif(BUILD_SHARED_LIBS)
set(libaec_SRCS
${PROJECT_SOURCE_DIR}/src/encode.c
${PROJECT_SOURCE_DIR}/src/encode_accessors.c
${PROJECT_SOURCE_DIR}/src/decode.c)
include_directories("${PROJECT_BINARY_DIR}")
include_directories("${PROJECT_SOURCE_DIR}/src")
add_subdirectory(src) add_subdirectory(src)
add_subdirectory(tests) add_subdirectory(tests)
option(AEC_FUZZING "Enable build of fuzzing target" OFF)
if(AEC_FUZZING) if(AEC_FUZZING)
enable_language(CXX)
if(NOT CMAKE_CXX_COMPILER_ID MATCHES "Clang")
message(FATAL_ERROR "You need to build with Clang for fuzzing to work")
endif()
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "6.0.0")
message(FATAL_ERROR "You need Clang ≥ 6.0.0")
endif()
add_subdirectory(fuzzing) add_subdirectory(fuzzing)
set(FUZZ_TARGET_SAN_FLAGS -fsanitize=fuzzer-no-link,address,undefined)
target_compile_options(aec PUBLIC -g -O1 ${FUZZ_TARGET_SAN_FLAGS})
target_link_options(aec PUBLIC ${FUZZ_TARGET_SAN_FLAGS})
endif() endif()
# Cpack configuration mainly for Windows installer
set(CPACK_PACKAGE_NAME "libaec") set(CPACK_PACKAGE_NAME "libaec")
set(CPACK_PACKAGE_VENDOR "Deutsches Klimarechenzentrum GmbH") set(CPACK_PACKAGE_VENDOR "Deutsches Klimarechenzentrum GmbH")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY set(CPACK_PACKAGE_DESCRIPTION_SUMMARY
"libaec - Adaptive Entropy Coding library") "libaec - Adaptive Entropy Coding library")
set(CPACK_PACKAGE_VERSION_MAJOR "${libaec_VERSION_MAJOR}")
set(CPACK_PACKAGE_VERSION_MINOR "${libaec_VERSION_MINOR}")
set(CPACK_PACKAGE_VERSION_PATCH "${libaec_VERSION_PATCH}")
set(CPACK_PACKAGE_INSTALL_DIRECTORY "libaec") set(CPACK_PACKAGE_INSTALL_DIRECTORY "libaec")
set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/Copyright.txt") set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.txt")
if(WIN32) if(WIN32)
set(CPACK_GENERATOR "WIX") set(CPACK_GENERATOR "WIX")
set(CPACK_WIX_UPGRADE_GUID "E58A21F6-BB99-46B5-8AD8-6114E4CCA0A6") set(CPACK_WIX_UPGRADE_GUID "E58A21F6-BB99-46B5-8AD8-6114E4CCA0A6")
if(CMAKE_CL_64) endif()
set(CPACK_INSTALL_DIRECTORY "$PROGRAMFILES64")
set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY set(CPACK_SOURCE_IGNORE_FILES
"${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION} (Win64)") /.git
else(CMAKE_CL_64) /.*build.*
set(CPACK_INSTALL_DIRECTORY "$PROGRAMFILES") .*~
set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY .*\#.*\#
"${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") \..*\#.*)
endif(CMAKE_CL_64)
endif(WIN32)
include(CPack) include(CPack)
@PACKAGE_INIT@
include("${CMAKE_CURRENT_LIST_DIR}/LibaecTargets.cmake")
check_required_components(libaec)
Getting libaec # Getting libaec
==============
The source code of libaec is hosted at DKRZ GitLab. The source code of libaec is hosted at DKRZ GitLab.
...@@ -15,8 +14,7 @@ location: ...@@ -15,8 +14,7 @@ location:
git clone https://gitlab.dkrz.de/k202009/libaec.git git clone https://gitlab.dkrz.de/k202009/libaec.git
Installation # Installation
============
## General considerations ## General considerations
...@@ -64,18 +62,18 @@ used in Windows. ...@@ -64,18 +62,18 @@ used in Windows.
## Installation from cloned repository ## Installation from cloned repository
The configure script is not included in the repository. You can The configure script is not included in the repository. You can
generate it with autotools: generate it with autotools and gnulib:
cd libaec cd libaec
autoreconv -iv gnulib-tool --import lib-symbol-visibility
autoreconf -iv
mkdir build mkdir build
cd build cd build
../configure ../configure
make check install make check install
Intel compiler settings # Intel compiler settings
=======================
The Intel compiler can improve performance by vectorizing certain The Intel compiler can improve performance by vectorizing certain
parts of the code on x86 architectures. Assuming your CPU supports parts of the code on x86 architectures. Assuming your CPU supports
......
ACLOCAL_AMFLAGS = -I m4 ACLOCAL_AMFLAGS = -I m4
SUBDIRS = src tests SUBDIRS = src tests
EXTRA_DIST = doc/patent.txt CMakeLists.txt cmake/config.h.in \ EXTRA_DIST = doc/patent.txt CMakeLists.txt cmake/config.h.in \
cmake/macros.cmake README.md README.SZIP CHANGELOG.md Copyright.txt data INSTALL.md README.md README.SZIP CHANGELOG.md LICENSE.txt data
sampledata = 121B2TestData sampledata = 121B2TestData
sampledata_url = https://cwe.ccsds.org/sls/docs/SLS-DC/BB121B2TestData/$(sampledata).zip sampledata_url = https://cwe.ccsds.org/sls/docs/SLS-DC/BB121B2TestData/$(sampledata).zip
......
#cmakedefine HAVE_MALLOC_H 1 #cmakedefine WORDS_BIGENDIAN
#cmakedefine WORDS_BIGENDIAN 1 #cmakedefine01 HAVE_DECL___BUILTIN_CLZLL
#cmakedefine HAVE_DECL___BUILTIN_CLZLL 1 #cmakedefine01 HAVE_BSR64
#cmakedefine HAVE_BSR64 1 #cmakedefine HAVE_SNPRINTF
#cmakedefine HAVE_SNPRINTF 1 #cmakedefine HAVE__SNPRINTF
#cmakedefine HAVE__SNPRINTF 1 #cmakedefine HAVE__SNPRINTF_S
#cmakedefine HAVE__SNPRINTF_S 1
macro(check_clzll VARIABLE)
check_c_source_compiles(
"int main(int argc, char *argv[])
{return __builtin_clzll(1LL);}"
${VARIABLE}
)
endmacro()
macro(check_bsr64 VARIABLE)
check_c_source_compiles(
"int main(int argc, char *argv[])
{unsigned long foo; unsigned __int64 bar=1LL;
return _BitScanReverse64(&foo, bar);}"
${VARIABLE}
)
endmacro()
macro(find_inline_keyword)
#Inspired from http://www.cmake.org/Wiki/CMakeTestInline
set(INLINE_TEST_SRC "/* Inspired by autoconf's c.m4 */
static inline int static_foo(){return 0\;}
int main(int argc, char *argv[]){return 0\;}
")
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/CMakeTestCInline.c
${INLINE_TEST_SRC})
foreach(KEYWORD "inline" "__inline__" "__inline")
if(NOT DEFINED C_INLINE)
try_compile(C_HAS_${KEYWORD}
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_BINARY_DIR}/CMakeTestCInline.c
COMPILE_DEFINITIONS "-Dinline=${KEYWORD}"
)
if(C_HAS_${KEYWORD})
set(C_INLINE TRUE)
add_definitions("-Dinline=${KEYWORD}")
message(STATUS "Inline keyword found - ${KEYWORD}")
endif(C_HAS_${KEYWORD})
endif(NOT DEFINED C_INLINE)
endforeach(KEYWORD)
if(NOT DEFINED C_INLINE)
add_definitions("-Dinline=")
message(STATUS "Inline keyword - not found")
endif(NOT DEFINED C_INLINE)
endmacro(find_inline_keyword)
macro(find_restrict_keyword)
set(RESTRICT_TEST_SRC "/* Inspired by autoconf's c.m4 */
int foo (int * restrict ip){return ip[0]\;}
int main(int argc, char *argv[]){int s[1]\;
int * restrict t = s\; t[0] = 0\; return foo(t)\;}
")
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/CMakeTestCRestrict.c
${RESTRICT_TEST_SRC})
foreach(KEYWORD "restrict" "__restrict" "__restrict__" "_Restrict")
if(NOT DEFINED C_RESTRICT)
try_compile(C_HAS_${KEYWORD}
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_BINARY_DIR}/CMakeTestCRestrict.c
COMPILE_DEFINITIONS "-Drestrict=${KEYWORD}"
)
if(C_HAS_${KEYWORD})
set(C_RESTRICT TRUE)
add_definitions("-Drestrict=${KEYWORD}")
message(STATUS "Restrict keyword found - ${KEYWORD}")
endif(C_HAS_${KEYWORD})
endif(NOT DEFINED C_RESTRICT)
endforeach(KEYWORD)
if(NOT DEFINED C_RESTRICT)
add_definitions("-Drestrict=")
message(STATUS "Restrict keyword - not found")
endif(NOT DEFINED C_RESTRICT)
endmacro(find_restrict_keyword)
...@@ -3,7 +3,7 @@ AC_INIT([libaec], [1.0.4], [rosenhauer@dkrz.de]) ...@@ -3,7 +3,7 @@ AC_INIT([libaec], [1.0.4], [rosenhauer@dkrz.de])
AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_AUX_DIR([config]) AC_CONFIG_AUX_DIR([config])
AC_CONFIG_SRCDIR([src/libaec.h]) AC_CONFIG_SRCDIR([src/decode.c])
AC_CONFIG_HEADERS(config/config.h) AC_CONFIG_HEADERS(config/config.h)
LT_INIT LT_INIT
......
if(NOT CMAKE_CXX_COMPILER_ID MATCHES "Clang")
message(FATAL_ERROR "You need to build with Clang for fuzzing to work")
endif()
add_library(aec_fuzz STATIC ${libaec_SRCS})
add_executable(fuzz_target fuzz_target.cc) add_executable(fuzz_target fuzz_target.cc)
target_link_libraries(fuzz_target aec)
set(FUZZ_TARGET_LINK_FLAGS "-fsanitize=address,undefined") # Actually link libFuzzer
set(FUZZ_TARGET_COMPILE_FLAGS target_link_options(fuzz_target PRIVATE -fsanitize=fuzzer)
"-g"
"-fsanitize=address,undefined"
"-fno-sanitize-recover=undefined"
"-fsanitize-coverage=trace-pc-guard,indirect-calls,edge")
set_target_properties(fuzz_target aec_fuzz PROPERTIES
LINK_FLAGS ${FUZZ_TARGET_LINK_FLAGS}
COMPILE_OPTIONS "${FUZZ_TARGET_COMPILE_FLAGS}")
target_link_libraries(fuzz_target aec_fuzz Fuzzer)
../src/libaec.h
\ No newline at end of file
/**
* @file libaec.h
*
* @section LICENSE
* Copyright 2021 Mathis Rosenhauer, Moritz Hanke, Joerg Behrens, Luis Kornblueh
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. 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.
*
* @section DESCRIPTION
*
* Adaptive Entropy Coding library
*
*/
#ifndef LIBAEC_H
#define LIBAEC_H 1
#include <stddef.h>
#ifdef __cplusplus
extern "C"{
#endif
#if BUILDING_LIBAEC && HAVE_VISIBILITY
# define LIBAEC_DLL_EXPORTED __attribute__((__visibility__("default")))
#else
# define LIBAEC_DLL_EXPORTED
#endif
struct internal_state;
struct aec_stream {
const unsigned char *next_in;
/* number of bytes available at next_in */
size_t avail_in;
/* total number of input bytes read so far */
size_t total_in;
unsigned char *next_out;
/* remaining free space at next_out */
size_t avail_out;
/* total number of bytes output so far */
size_t total_out;
/* resolution in bits per sample (n = 1, ..., 32) */
unsigned int bits_per_sample;
/* block size in samples */
unsigned int block_size;
/* Reference sample interval, the number of blocks
* between consecutive reference samples (up to 4096). */
unsigned int rsi;
unsigned int flags;
struct internal_state *state;
};
/*********************************/
/* Sample data description flags */
/*********************************/
/* Samples are signed. Telling libaec this results in a slightly
* better compression ratio. Default is unsigned. */
#define AEC_DATA_SIGNED 1
/* 24 bit samples are coded in 3 bytes */
#define AEC_DATA_3BYTE 2
/* Samples are stored with their most significant bit first. This has
* nothing to do with the endianness of the host. Default is LSB. */
#define AEC_DATA_MSB 4
/* Set if preprocessor should be used */
#define AEC_DATA_PREPROCESS 8
/* Use restricted set of code options */
#define AEC_RESTRICTED 16
/* Pad RSI to byte boundary. Only used for decoding some CCSDS sample
* data. Do not use this to produce new data as it violates the
* standard. */
#define AEC_PAD_RSI 32
/* Do not enforce standard regarding legal block sizes. */
#define AEC_NOT_ENFORCE 64
/*************************************/
/* Return codes of library functions */
/*************************************/
#define AEC_OK 0
#define AEC_CONF_ERROR (-1)
#define AEC_STREAM_ERROR (-2)
#define AEC_DATA_ERROR (-3)
#define AEC_MEM_ERROR (-4)
/************************/
/* Options for flushing */
/************************/
/* Do not enforce output flushing. More input may be provided with
* later calls. So far only relevant for encoding. */
#define AEC_NO_FLUSH 0
/* Flush output and end encoding. The last call to aec_encode() must
* set AEC_FLUSH to drain all output.
*
* It is not possible to continue encoding of the same stream after it
* has been flushed. For one, the last block may be padded zeros after
* preprocessing. Secondly, the last encoded byte may be padded with
* fill bits. */
#define AEC_FLUSH 1
/*********************************************/
/* Streaming encoding and decoding functions */
/*********************************************/
LIBAEC_DLL_EXPORTED int aec_encode_init(struct aec_stream *strm);
LIBAEC_DLL_EXPORTED int aec_encode(struct aec_stream *strm, int flush);
LIBAEC_DLL_EXPORTED int aec_encode_end(struct aec_stream *strm);
LIBAEC_DLL_EXPORTED int aec_decode_init(struct aec_stream *strm);
LIBAEC_DLL_EXPORTED int aec_decode(struct aec_stream *strm, int flush);
LIBAEC_DLL_EXPORTED int aec_decode_end(struct aec_stream *strm);
/***************************************************************/
/* Utility functions for encoding or decoding a memory buffer. */
/***************************************************************/
LIBAEC_DLL_EXPORTED int aec_buffer_encode(struct aec_stream *strm);
LIBAEC_DLL_EXPORTED int aec_buffer_decode(struct aec_stream *strm);
#ifdef __cplusplus
}
#endif
#endif /* LIBAEC_H */
../src/szlib.h
\ No newline at end of file
/**
* @file szlib.h
*
* @section LICENSE
* Copyright 2021 Mathis Rosenhauer, Moritz Hanke, Joerg Behrens, Luis Kornblueh
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. 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.
*
* @section DESCRIPTION
*
* Adaptive Entropy Coding library
*
*/
#ifndef SZLIB_H
#define SZLIB_H 1
#include <libaec.h>
#define SZ_ALLOW_K13_OPTION_MASK 1
#define SZ_CHIP_OPTION_MASK 2
#define SZ_EC_OPTION_MASK 4
#define SZ_LSB_OPTION_MASK 8
#define SZ_MSB_OPTION_MASK 16
#define SZ_NN_OPTION_MASK 32
#define SZ_RAW_OPTION_MASK 128
#define SZ_OK AEC_OK
#define SZ_OUTBUFF_FULL 2
#define SZ_NO_ENCODER_ERROR -1
#define SZ_PARAM_ERROR AEC_CONF_ERROR
#define SZ_MEM_ERROR AEC_MEM_ERROR
#define SZ_MAX_PIXELS_PER_BLOCK 32
#define SZ_MAX_BLOCKS_PER_SCANLINE 128
#define SZ_MAX_PIXELS_PER_SCANLINE \
(SZ_MAX_BLOCKS_PER_SCANLINE) * (SZ_MAX_PIXELS_PER_BLOCK)
typedef struct SZ_com_t_s
{
int options_mask;
int bits_per_pixel;
int pixels_per_block;
int pixels_per_scanline;
} SZ_com_t;
LIBAEC_DLL_EXPORTED int SZ_BufftoBuffCompress(
void *dest, size_t *destLen,
const void *source, size_t sourceLen,
SZ_com_t *param);
LIBAEC_DLL_EXPORTED int SZ_BufftoBuffDecompress(
void *dest, size_t *destLen,
const void *source, size_t sourceLen,
SZ_com_t *param);
LIBAEC_DLL_EXPORTED int SZ_encoder_enabled(void);
#endif /* SZLIB_H */
include (GenerateExportHeader) # Main library aec
add_library(aec ${LIB_TYPE} ${libaec_SRCS})