summaryrefslogtreecommitdiffstats
path: root/src/zstd/build/cmake/programs/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'src/zstd/build/cmake/programs/CMakeLists.txt')
-rw-r--r--src/zstd/build/cmake/programs/CMakeLists.txt135
1 files changed, 135 insertions, 0 deletions
diff --git a/src/zstd/build/cmake/programs/CMakeLists.txt b/src/zstd/build/cmake/programs/CMakeLists.txt
new file mode 100644
index 000000000..b26e97d0d
--- /dev/null
+++ b/src/zstd/build/cmake/programs/CMakeLists.txt
@@ -0,0 +1,135 @@
+# ################################################################
+# Copyright (c) 2015-present, Yann Collet, Facebook, Inc.
+# All rights reserved.
+#
+# This source code is licensed under both the BSD-style license (found in the
+# LICENSE file in the root directory of this source tree) and the GPLv2 (found
+# in the COPYING file in the root directory of this source tree).
+# ################################################################
+
+project(programs)
+
+set(CMAKE_INCLUDE_CURRENT_DIR TRUE)
+
+# Define programs directory, where sources and header files are located
+set(LIBRARY_DIR ${ZSTD_SOURCE_DIR}/lib)
+set(PROGRAMS_DIR ${ZSTD_SOURCE_DIR}/programs)
+include_directories(${PROGRAMS_DIR} ${LIBRARY_DIR} ${LIBRARY_DIR}/common ${LIBRARY_DIR}/compress ${LIBRARY_DIR}/dictBuilder)
+
+if (ZSTD_LEGACY_SUPPORT)
+ set(PROGRAMS_LEGACY_DIR ${PROGRAMS_DIR}/legacy)
+ include_directories(${PROGRAMS_LEGACY_DIR} ${LIBRARY_DIR}/legacy)
+endif ()
+
+if (ZSTD_PROGRAMS_LINK_SHARED)
+ set(PROGRAMS_ZSTD_LINK_TARGET libzstd_shared)
+else ()
+ set(PROGRAMS_ZSTD_LINK_TARGET libzstd_static)
+endif ()
+
+if (MSVC)
+ set(MSVC_RESOURCE_DIR ${ZSTD_SOURCE_DIR}/build/VS2010/zstd)
+ set(PlatformDependResources ${MSVC_RESOURCE_DIR}/zstd.rc)
+endif ()
+
+add_executable(zstd ${PROGRAMS_DIR}/zstdcli.c ${PROGRAMS_DIR}/util.c ${PROGRAMS_DIR}/timefn.c ${PROGRAMS_DIR}/fileio.c ${PROGRAMS_DIR}/benchfn.c ${PROGRAMS_DIR}/benchzstd.c ${PROGRAMS_DIR}/datagen.c ${PROGRAMS_DIR}/dibio.c ${PlatformDependResources})
+target_link_libraries(zstd ${PROGRAMS_ZSTD_LINK_TARGET})
+if (CMAKE_SYSTEM_NAME MATCHES "(Solaris|SunOS)")
+ target_link_libraries(zstd rt)
+endif ()
+install(TARGETS zstd RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
+
+if (UNIX)
+ add_custom_target(zstdcat ALL ${CMAKE_COMMAND} -E create_symlink zstd zstdcat DEPENDS zstd COMMENT "Creating zstdcat symlink")
+ add_custom_target(unzstd ALL ${CMAKE_COMMAND} -E create_symlink zstd unzstd DEPENDS zstd COMMENT "Creating unzstd symlink")
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/zstdcat DESTINATION "${CMAKE_INSTALL_BINDIR}")
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/unzstd DESTINATION "${CMAKE_INSTALL_BINDIR}")
+ install(PROGRAMS ${PROGRAMS_DIR}/zstdgrep DESTINATION "${CMAKE_INSTALL_BINDIR}")
+ install(PROGRAMS ${PROGRAMS_DIR}/zstdless DESTINATION "${CMAKE_INSTALL_BINDIR}")
+
+ add_custom_target(zstd.1 ALL
+ ${CMAKE_COMMAND} -E copy ${PROGRAMS_DIR}/zstd.1 .
+ COMMENT "Copying manpage zstd.1")
+ add_custom_target(zstdgrep.1 ALL
+ ${CMAKE_COMMAND} -E copy ${PROGRAMS_DIR}/zstdgrep.1 .
+ COMMENT "Copying manpage zstdgrep.1")
+ add_custom_target(zstdless.1 ALL
+ ${CMAKE_COMMAND} -E copy ${PROGRAMS_DIR}/zstdless.1 .
+ COMMENT "Copying manpage zstdless.1")
+ add_custom_target(zstdcat.1 ALL ${CMAKE_COMMAND} -E create_symlink zstd.1 zstdcat.1 DEPENDS zstd.1 COMMENT "Creating zstdcat.1 symlink")
+ add_custom_target(unzstd.1 ALL ${CMAKE_COMMAND} -E create_symlink zstd.1 unzstd.1 DEPENDS zstd.1 COMMENT "Creating unzstd.1 symlink")
+
+ # Define MAN_INSTALL_DIR if necessary
+ if (MAN_INSTALL_DIR)
+ else ()
+ set(MAN_INSTALL_DIR ${CMAKE_INSTALL_MANDIR}/man1)
+ endif ()
+
+ install(FILES
+ ${CMAKE_CURRENT_BINARY_DIR}/zstd.1
+ ${CMAKE_CURRENT_BINARY_DIR}/zstdcat.1
+ ${CMAKE_CURRENT_BINARY_DIR}/unzstd.1
+ ${CMAKE_CURRENT_BINARY_DIR}/zstdgrep.1
+ ${CMAKE_CURRENT_BINARY_DIR}/zstdless.1
+ DESTINATION "${MAN_INSTALL_DIR}")
+
+ add_executable(zstd-frugal ${PROGRAMS_DIR}/zstdcli.c ${PROGRAMS_DIR}/util.c ${PROGRAMS_DIR}/timefn.c ${PROGRAMS_DIR}/fileio.c)
+ target_link_libraries(zstd-frugal ${PROGRAMS_ZSTD_LINK_TARGET})
+ set_property(TARGET zstd-frugal APPEND PROPERTY COMPILE_DEFINITIONS "ZSTD_NOBENCH;ZSTD_NODICT")
+endif ()
+
+# Add multi-threading support definitions
+
+if (ZSTD_MULTITHREAD_SUPPORT)
+ set_property(TARGET zstd APPEND PROPERTY COMPILE_DEFINITIONS "ZSTD_MULTITHREAD")
+
+ if (UNIX)
+ target_link_libraries(zstd ${THREADS_LIBS})
+
+ add_custom_target(zstdmt ALL ${CMAKE_COMMAND} -E create_symlink zstd zstdmt DEPENDS zstd COMMENT "Creating zstdmt symlink")
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/zstdmt DESTINATION "${CMAKE_INSTALL_BINDIR}")
+ endif ()
+endif ()
+
+option(ZSTD_ZLIB_SUPPORT "ZLIB SUPPORT" OFF)
+option(ZSTD_LZMA_SUPPORT "LZMA SUPPORT" OFF)
+option(ZSTD_LZ4_SUPPORT "LZ4 SUPPORT" OFF)
+
+# Add gzip support
+if (ZSTD_ZLIB_SUPPORT)
+ find_package(ZLIB REQUIRED)
+
+ if (ZLIB_FOUND)
+ include_directories(${ZLIB_INCLUDE_DIRS})
+ target_link_libraries(zstd ${ZLIB_LIBRARIES})
+ set_property(TARGET zstd APPEND PROPERTY COMPILE_DEFINITIONS "ZSTD_GZCOMPRESS;ZSTD_GZDECOMPRESS")
+ else ()
+ message(SEND_ERROR "zlib library is missing")
+ endif ()
+endif ()
+
+# Add lzma support
+if (ZSTD_LZMA_SUPPORT)
+ find_package(LibLZMA REQUIRED)
+
+ if (LIBLZMA_FOUND)
+ include_directories(${LIBLZMA_INCLUDE_DIRS})
+ target_link_libraries(zstd ${LIBLZMA_LIBRARIES})
+ set_property(TARGET zstd APPEND PROPERTY COMPILE_DEFINITIONS "ZSTD_LZMACOMPRESS;ZSTD_LZMADECOMPRESS")
+ else ()
+ message(SEND_ERROR "lzma library is missing")
+ endif ()
+endif ()
+
+# Add lz4 support
+if (ZSTD_LZ4_SUPPORT)
+ find_package(LibLZ4 REQUIRED)
+
+ if (LIBLZ4_FOUND)
+ include_directories(${LIBLZ4_INCLUDE_DIRS})
+ target_link_libraries(zstd ${LIBLZ4_LIBRARIES})
+ set_property(TARGET zstd APPEND PROPERTY COMPILE_DEFINITIONS "ZSTD_LZ4COMPRESS;ZSTD_LZ4DECOMPRESS")
+ else ()
+ message(SEND_ERROR "lz4 library is missing")
+ endif ()
+endif ()