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 )