cmake_minimum_required( VERSION 3.13 )
add_compile_definitions(_LARGEFILE_SOURCE)
add_compile_definitions(_LARGEFILE64_SOURCE)
add_compile_definitions(_FILE_OFFSET_BITS=64)
if(WIN32)
add_compile_definitions(_CRT_SECURE_NO_WARNINGS)
endif()
# This is a hack! We need a config.h
# TODO: either un-vendor mspack, or use new mspack CMake tooling when it merges into the upstream.
configure_file(config.h.in.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
# mspack object
add_library( mspack_obj OBJECT )
target_sources( mspack_obj
PRIVATE
"mspack/cab.h"
"mspack/cabc.c"
"mspack/cabd.c"
"mspack/chm.h"
"mspack/chmc.c"
"mspack/chmd.c"
"mspack/crc32.c"
"mspack/crc32.h"
"mspack/des.h"
"mspack/hlp.h"
"mspack/hlpc.c"
"mspack/hlpd.c"
"mspack/kwaj.h"
"mspack/kwajc.c"
"mspack/kwajd.c"
"mspack/lit.h"
"mspack/litc.c"
"mspack/litd.c"
"mspack/lzss.h"
"mspack/lzssd.c"
"mspack/lzx.h"
"mspack/lzxc.c"
"mspack/lzxd.c"
"mspack/mszip.h"
"mspack/mszipc.c"
"mspack/mszipd.c"
"mspack/oab.h"
"mspack/oabc.c"
"mspack/oabd.c"
"mspack/qtm.h"
"mspack/qtmd.c"
"mspack/readbits.h"
"mspack/readhuff.h"
"mspack/sha.h"
"mspack/system.c"
"mspack/system.h"
"mspack/szdd.h"
"mspack/szddc.c"
"mspack/szddd.c" )
target_include_directories( mspack_obj
PRIVATE
"${CMAKE_BINARY_DIR}"
"${CMAKE_CURRENT_BINARY_DIR}"
PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/mspack" )
# The mspack shared library.
add_library( mspack SHARED )
set_target_properties(mspack PROPERTIES
VERSION "0.8.0"
SOVERSION 0)
if(WIN32)
set_target_properties(mspack PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON)
endif()
target_sources( mspack
PUBLIC
"${CMAKE_CURRENT_SOURCE_DIR}/mspack/mspack.h" )
if(WIN32)
install(TARGETS mspack DESTINATION ${CMAKE_INSTALL_PREFIX})
else()
install(TARGETS mspack DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
# Public (forwarded) dependencies.
target_link_libraries( mspack
PUBLIC
mspack_obj )
add_library( ClamAV::libmspack ALIAS mspack )