cmake_minimum_required(VERSION 3.18)
project(h5z_ebcc)
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif()
if(MSVC)
set(CMAKE_C_FLAGS_RELEASE "/O2")
set(CMAKE_CXX_FLAGS_RELEASE "/O2")
set(CMAKE_C_FLAGS_DEBUG "/Od /Zi /DDEBUG")
set(CMAKE_CXX_FLAGS_DEBUG "/Od /Zi")
else()
set(CMAKE_C_FLAGS_RELEASE "-O3")
set(CMAKE_CXX_FLAGS_RELEASE "-O3")
set(CMAKE_C_FLAGS_DEBUG "-g -O2 -DDEBUG")
set(CMAKE_CXX_FLAGS_DEBUG "-g -O2")
endif()
set(BUILD_THIRDPARTY True)
set(CMAKE_POSITION_INDEPENDENT_CODE True)
add_library(h5z_ebcc SHARED h5z_ebcc.c ebcc_codec.c spiht/spiht_re.c log/log.c)
set_property(TARGET h5z_ebcc PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
# Add static EBCC library for Rust bindings
add_library(ebcc STATIC ebcc_codec.c spiht/spiht_re.c log/log.c)
option(ZSTD_BUILD_PROGRAMS "" OFF)
option(BUILD_CODEC "Build OPENJPEG CLI APPS" OFF)
add_subdirectory(zstd/build/cmake zstd)
add_subdirectory(openjpeg)
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/zstd/lib
${CMAKE_CURRENT_SOURCE_DIR}/zstd/build/cmake/lib
${CMAKE_CURRENT_SOURCE_DIR}/openjpeg/src/lib/openjp2
${CMAKE_CURRENT_BINARY_DIR}/openjpeg/src/lib/openjp2
${CMAKE_CURRENT_SOURCE_DIR}/spiht
${CMAKE_CURRENT_SOURCE_DIR}/log
)
target_link_libraries(h5z_ebcc PRIVATE libzstd_static openjp2_static)
target_link_libraries(ebcc PRIVATE libzstd_static openjp2_static)
install(
TARGETS h5z_ebcc ebcc
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
)