From 4ba244eb1db6078b00f8837865abcbb89d41d259 Mon Sep 17 00:00:00 2001 From: Mauricio Cardenas Date: Sat, 12 Jul 2025 12:18:19 -0600 Subject: [PATCH] build: add cmake fix: CMake definition for cmake specific files feat: add cmake lists to drivers and kmi fix: revert unnecesary changes fix: missing .c file fix: typos and names chore: add build specific version number and add comments feat: add last cmakelists fix: fix compilation issues feat: fix names feat: add manpages feat: cmake working feat: add flags feat: working everything feat: rpath --- .cmake/FindFUSE.cmake | 9 ++++ .cmake/FindNetSNMP.cmake | 37 +++++++++++++++ .cmake/FindUUID.cmake | 10 ++++ .cmake/LTFSUtils.cmake | 29 ++++++++++++ .gitignore | 6 +++ CMakeLists.txt | 42 +++++++++++++++++ conf/CMakeLists.txt | 32 +++++++++++++ conf/ltfs.conf.in | 12 ++--- man/CMakeLists.txt | 17 +++++++ messages/CMakeLists.txt | 43 +++++++++++++++++ src/CMakeLists.txt | 47 +++++++++++++++++++ src/iosched/CMakeLists.txt | 20 ++++++++ src/kmi/CMakeLists.txt | 23 +++++++++ src/libltfs/CMakeLists.txt | 18 +++++++ src/libltfs/arch/time_internal.c | 5 +- src/libltfs/ltfs.h | 2 +- src/tape_drivers/CMakeLists.txt | 16 +++++++ src/tape_drivers/freebsd/cam/CMakeLists.txt | 17 +++++++ src/tape_drivers/generic/file/CMakeLists.txt | 12 +++++ .../generic/itdtimg/CMakeLists.txt | 13 +++++ .../linux/lin_tape/CMakeLists.txt | 16 +++++++ src/tape_drivers/linux/sg/CMakeLists.txt | 18 +++++++ .../netbsd/scsipi-ibmtape/CMakeLists.txt | 17 +++++++ src/tape_drivers/osx/iokit/CMakeLists.txt | 17 +++++++ src/utils/CMakeLists.txt | 24 ++++++++++ 25 files changed, 493 insertions(+), 9 deletions(-) create mode 100644 .cmake/FindFUSE.cmake create mode 100644 .cmake/FindNetSNMP.cmake create mode 100644 .cmake/FindUUID.cmake create mode 100644 .cmake/LTFSUtils.cmake create mode 100644 CMakeLists.txt create mode 100644 conf/CMakeLists.txt create mode 100644 man/CMakeLists.txt create mode 100644 messages/CMakeLists.txt create mode 100644 src/CMakeLists.txt create mode 100644 src/iosched/CMakeLists.txt create mode 100644 src/kmi/CMakeLists.txt create mode 100644 src/libltfs/CMakeLists.txt create mode 100644 src/tape_drivers/CMakeLists.txt create mode 100644 src/tape_drivers/freebsd/cam/CMakeLists.txt create mode 100644 src/tape_drivers/generic/file/CMakeLists.txt create mode 100644 src/tape_drivers/generic/itdtimg/CMakeLists.txt create mode 100644 src/tape_drivers/linux/lin_tape/CMakeLists.txt create mode 100644 src/tape_drivers/linux/sg/CMakeLists.txt create mode 100644 src/tape_drivers/netbsd/scsipi-ibmtape/CMakeLists.txt create mode 100644 src/tape_drivers/osx/iokit/CMakeLists.txt create mode 100644 src/utils/CMakeLists.txt diff --git a/.cmake/FindFUSE.cmake b/.cmake/FindFUSE.cmake new file mode 100644 index 00000000..4f8f7e21 --- /dev/null +++ b/.cmake/FindFUSE.cmake @@ -0,0 +1,9 @@ +#### +# Find libfuse and set the offset to 64bits +### +find_package(PkgConfig REQUIRED) + +pkg_check_modules(FUSE REQUIRED "fuse>=2.6.0" IMPORTED_TARGET) +target_compile_definitions(PkgConfig::FUSE INTERFACE + _FILE_OFFSET_BITS=64 +) diff --git a/.cmake/FindNetSNMP.cmake b/.cmake/FindNetSNMP.cmake new file mode 100644 index 00000000..5340009d --- /dev/null +++ b/.cmake/FindNetSNMP.cmake @@ -0,0 +1,37 @@ +##### +# Find the Net SNMP library (net-snmp) +# +option(ENABLE_SNMP "Enable SNMP support" YES) +set(NetSNMP_FOUND OFF CACHE BOOL "net-snmp is found") + +if(ENABLE_SNMP OR NetSNMP_FIND_REQUIRED) + find_program(NetSNMP_CONFIG_BIN net-snmp-config REQUIRED) +else() + find_program(NetSNMP_CONFIG_BIN net-snmp-config) +endif() + + +if(NetSNMP_CONFIG_BIN) + execute_process(COMMAND ${NetSNMP_CONFIG_BIN} --cflags + OUTPUT_VARIABLE NetSNMP_CFLAGS + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + execute_process(COMMAND ${NetSNMP_CONFIG_BIN} --libs + OUTPUT_VARIABLE NetSNMP_LIBS + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + execute_process(COMMAND ${NetSNMP_CONFIG_BIN} --agent-libs + OUTPUT_VARIABLE NetSNMP_AGENT_LIBS + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + # NetSNMP import library + add_library(NetSNMP INTERFACE IMPORTED) + separate_arguments(NetSNMP_CFLAGS) + separate_arguments(NetSNMP_AGENT_LIBS) + separate_arguments(NetSNMP_LIBS) + + set_target_properties(NetSNMP PROPERTIES + INTERFACE_COMPILE_OPTIONS "${NetSNMP_CFLAGS};${NetSNMP_LIBS};${NetSNMP_AGENT_LIBS}" + ) + set(NetSNMP_FOUND ON CACHE BOOL "net-snmp is found") +endif() diff --git a/.cmake/FindUUID.cmake b/.cmake/FindUUID.cmake new file mode 100644 index 00000000..cf30f70a --- /dev/null +++ b/.cmake/FindUUID.cmake @@ -0,0 +1,10 @@ +### +# Find UUID package +# +find_package(PkgConfig REQUIRED) + +if(APPLE) + pkg_check_modules(UUID REQUIRED "uuid>=1.6" IMPORTED_TARGET) +else() + pkg_check_modules(UUID REQUIRED "uuid>=1.36" IMPORTED_TARGET) +endif() diff --git a/.cmake/LTFSUtils.cmake b/.cmake/LTFSUtils.cmake new file mode 100644 index 00000000..ca6a9c8a --- /dev/null +++ b/.cmake/LTFSUtils.cmake @@ -0,0 +1,29 @@ +# +# Set the tape backend and set default in case is not defined +# +macro(option_tape_backend) + if (NOT DEFAULT_TAPE) + if(LINUX) + set(DEFAULT_TAPE sg) + elseif(APPLE) + set(DEFAULT_TAPE iokit) + elseif(BSD) + if(FREEBSD) + set(DEFAULT_TAPE cam) + elseif(NETBSD) + set(DEFAULT_TAPE scsipi-ibmtape) + endif() + endif() + elseif (NOT ENABLE_LINTAPE AND DEFAULT_TAPE STREQUAL "lin_tape") + message(FATAL_ERROR "lin_tape is not enabled -DENABLE_LINTAPE is required.") + endif() +endmacro() + +macro(option_unorm2) + string(REPLACE "." ";" ICU_VERSION_ARRAY ${ICU_VERSION}) + list(GET ICU_VERSION_ARRAY 0 ICU_VERSION_MAJOR) + if(ICU_6X OR ICU_VERSION_MAJOR GREATER_EQUAL "56") + add_compile_definitions(USE_UNORM2) + message(STATUS "Using ICU6x funtions") + endif() +endmacro() diff --git a/.gitignore b/.gitignore index 0711b11e..7da89c20 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,9 @@ +# Files generated by cmake +__cmake_systeminformation +.cache +build +CMakeFiles + # Files generated by ./autogen.sh Makefile.in aclocal.m4 diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..7cf877e1 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,42 @@ +cmake_minimum_required(VERSION 3.26) +project(ltfs LANGUAGES C) +set(VERSION "2.5.0.0 (Prelim cmake)") +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) +set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/.cmake") + +if(NOT CMAKE_BUILD_TYPE MATCHES "Debug|Release") + set(CMAKE_BUILD_TYPE Debug) +endif() + +# Add dependencies +include(GNUInstallDirs REQUIRED) +include(LTFSUtils REQUIRED) +find_package(Threads REQUIRED) +find_package(ICU COMPONENTS uc) +find_package(LibXml2 REQUIRED) +find_package(FUSE REQUIRED) +find_package(UUID REQUIRED) +find_package(NetSNMP) +# Configure project +set(DEFAULT_TAPE "" CACHE STRING "default tape backend plugin, e.g. sg, iokit, cam, scsipi-ibmtape") +set(DEFAULT_IOSCHED "unified" CACHE STRING "default I/O scheduler plugin, e.g. unified") +set(DEFAULT_KMI "none" CACHE STRING "default key manager interface plugin, e.g. none") +option(MSG_CHECK "compile in message checking mode (may be binary is defunct)" OFF) +option(POSIXLINK_ONLY "compile with livelink mode support" ON) +option(USE_NEW_LOCKING "use new locking system or not" ON) +option(ENABLE_LIN_TAPE "support IBM's lin_tape driver or not" OFF) +option(SUPPORT_BUGGY_IFS "support buggy I/Fs for tape drivers" OFF) +option(INDENT_INDEXES "enable xml indentation for index" OFF) +option(FORMAT_SPEC25 "support format spec 2.5 or not" OFF) +option(ICU_6X "force to use ICU6x (unorm2) functions" OFF) +option(HAVE_XML_PARSE_HUGE "enable xml parsing with huge file support" OFF) +option_tape_backend() +option_unorm2() +add_compile_definitions(_GNU_SOURCE __CMAKE_BUILD) + +# Generate targets and configrations +add_subdirectory(messages) +add_subdirectory(src) +add_subdirectory(conf) +add_subdirectory(man) +configure_file(ltfs.pc.in ltfs.pc) diff --git a/conf/CMakeLists.txt b/conf/CMakeLists.txt new file mode 100644 index 00000000..f7e44314 --- /dev/null +++ b/conf/CMakeLists.txt @@ -0,0 +1,32 @@ +# NOTE: This can be done using an .in file with @VARS@ but somehow this is done using sed +set(PLAT_OPTS) +if(ENABLE_LINTAPE) + # list(APPEND PLAT_OPTS "plugin tape lin_tape ${CMAKE_INSTALL_LIBDIR}/ltfs/libtape_lin_tape.so") + list(APPEND PLAT_OPTS "plugin tape lin_tape libtape_lin_tape.so") +endif() + +if(LINUX) + list(APPEND PLAT_OPTS "plugin tape sg libtape_sg.so") +elseif(APPLE) + list(APPEND PLAT_OPTS "plugin tape iokit libtape_iokit.so") +elseif(BSD) + if (CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") + list(APPEND PLAT_OPTS "plugin tape cam libtape-cam.so") + elseif(CMAKE_SYSTEM_NAME STREQUAL "NetBSD") + list(APPEND PLAT_OPTS "plugin tape scsipi-ibmtape libtape_scsipi_ibmtape.so") + endif() +endif() + +file(REAL_PATH "ltfs.conf.in" CONFIG_FILE) +file(COPY_FILE "ltfs.conf.local" "${CMAKE_CURRENT_BINARY_DIR}/ltfs.conf.local") +add_custom_command(OUTPUT "ltfs.conf" + COMMAND sed -e "s!__PLATFORM_DRIVERS__!${PLAT_OPTS}!" ${CONFIG_FILE} > .tmp1 + COMMAND sed -e "s!__LIBDIR__!${CMAKE_INSTALL_LIBDIR}!" .tmp1 > .tmp2 + COMMAND sed -e "s!__DEFAULT_TAPE__!${DEFAULT_TAPE}!" .tmp2 > .tmp1 + COMMAND sed -e "s!__DEFAULT_IOSCHED__!${DEFAULT_IOSCHED}!" .tmp1 > .tmp2 + COMMAND sed -e "s!__DEFAULT_KMI__!${DEFAULT_KMI}!" .tmp2 > .tmp1 + COMMAND sed -e "s!__CONFDIR__!${CMAKE_CURRENT_BINARY_DIR}!" .tmp1 > ltfs.conf + DEPENDS ${CONFIG_FILE} + BYPRODUCTS .tmp1 .tmp2 +) +add_custom_target("conf" ALL DEPENDS "ltfs.conf") diff --git a/conf/ltfs.conf.in b/conf/ltfs.conf.in index fbaa4c25..48e47895 100644 --- a/conf/ltfs.conf.in +++ b/conf/ltfs.conf.in @@ -10,20 +10,20 @@ # The PLUGIN-PATH may contain spaces. __PLATFORM_DRIVERS__ -plugin tape file __LIBDIR__/ltfs/libtape-file.so -plugin tape itdtimg __LIBDIR__/ltfs/libtape-itdtimg.so +plugin tape file libtape-file.so +plugin tape itdtimg libtape-itdtimg.so # I/O scheduler plugins # Syntax: plugin iosched PLUGIN-NAME PLUGIN-PATH # The PLUGIN-PATH may contain spaces. -plugin iosched unified __LIBDIR__/ltfs/libiosched-unified.so -plugin iosched fcfs __LIBDIR__/ltfs/libiosched-fcfs.so +plugin iosched unified libiosched-unified.so +plugin iosched fcfs libiosched-fcfs.so # Key Manager Interface plugins # Syntax: plugin kmi PLUGIN-NAME PLUGIN-PATH # The PLUGIN-PATH may contain spaces. -plugin kmi flatfile __LIBDIR__/ltfs/libkmi-flatfile.so -plugin kmi simple __LIBDIR__/ltfs/libkmi-simple.so +plugin kmi flatfile libkmi-flatfile.so +plugin kmi simple libkmi-simple.so # Default plugins # Syntax: default PLUGIN-TYPE PLUGIN-NAME diff --git a/man/CMakeLists.txt b/man/CMakeLists.txt new file mode 100644 index 00000000..8764cdd8 --- /dev/null +++ b/man/CMakeLists.txt @@ -0,0 +1,17 @@ +set(MANPAGES + mkltfs + ltfsck + ltfs + ltfs_ordered_copy + ltfsindextool +) + +add_custom_target(man) +foreach(NAME IN LISTS MANPAGES) + file(REAL_PATH "sgml/${NAME}.sgml" SOURCE) + add_custom_target("man_${NAME}" + docbook2man ${SOURCE} # 2> /dev/null + DEPENDS ${SOURCE} + ) + add_dependencies(man "man_${NAME}") +endforeach() diff --git a/messages/CMakeLists.txt b/messages/CMakeLists.txt new file mode 100644 index 00000000..44af539b --- /dev/null +++ b/messages/CMakeLists.txt @@ -0,0 +1,43 @@ +set(MESSAGES_LIBS + bin_ltfs + bin_ltfsck + bin_ltfsindextool + bin_mkltfs + internal_error + iosched_fcfs + iosched_unified + kmi_flatfile + kmi_simple + libltfs + tape_common + tape_freebsd_cam + tape_generic_file + tape_generic_itdtimg + tape_iokit + tape_linux_lin_tape + tape_linux_sg +) +set(LIBS) +foreach(NAME IN LISTS MESSAGES_LIBS) + file(GLOB SRCS "${NAME}/*.txt") + set(OUT "lib${NAME}.a") + list(APPEND LIBS ${OUT}) + + make_directory("${CMAKE_CURRENT_BINARY_DIR}/res_${NAME}") + add_custom_command(OUTPUT ${OUT} + COMMAND ${ICU_GENRB_EXECUTABLE} -q ${SRCS} 1> /dev/null + COMMAND ls *.res > paths.txt + COMMAND ${ICU_PKGDATA_EXECUTABLE} -m static -p ${NAME} -q paths.txt 1> /dev/null + COMMAND cp ${OUT} .. + DEPENDS ${SRCS} + BYPRODUCTS res_${NAME} + WORKING_DIRECTORY res_${NAME} + ) + + # Define the library as an imported CMake lib + add_library("lib${NAME}" STATIC IMPORTED GLOBAL) + set_target_properties("lib${NAME}" PROPERTIES IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/lib${NAME}.a") + add_dependencies("lib${NAME}" "messages") +endforeach() +# Do this to not rebuild the entire message libraries every run +add_custom_target(messages ALL DEPENDS ${LIBS}) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 00000000..bcef3f13 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,47 @@ +add_executable(ltfs_bin main.c ltfs_fuse.c) +target_link_libraries(ltfs_bin + Threads::Threads + PkgConfig::FUSE + LibXml2::LibXml2 + PkgConfig::UUID + ICU::uc + ltfs +) +set_property(TARGET ltfs_bin PROPERTY OUTPUT_NAME ltfs) +target_include_directories(ltfs_bin BEFORE PUBLIC "." ) + +add_compile_definitions( + LTFS_CONFIG_FILE="${CMAKE_BINARY_DIR}/conf/ltfs.conf" + LTFS_BASE_DIR="${CMAKE_INSTALL_PREFIX}" + PACKAGE_VERSION="${VERSION}" + PACKAGE_NAME="${PROJECT_NAME}" +) + +add_subdirectory(iosched) +add_subdirectory(kmi) +add_subdirectory(libltfs) +add_subdirectory(utils) +add_subdirectory(tape_drivers) +add_subdirectory(tape_drivers/generic/file) +add_subdirectory(tape_drivers/generic/itdtimg) +if(ENABLE_LINTAPE) + add_subdirectory(tape_drivers/linux/lin_tape) +endif() +if(LINUX) + add_subdirectory(tape_drivers/linux/sg) +elseif(APPLE) + add_subdirectory(tape_drivers/osx/iokit) +elseif(BSD) + if (CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") + add_subdirectory(tape_drivers/freebsd/cam) + elseif(CMAKE_SYSTEM_NAME STREQUAL "NetBSD") + add_subdirectory(tape_drivers/netbsd/scsipi-ibmtape) + endif() +endif() + +# Configure the plugins rpath to search in +if(CMAKE_BUILD_TYPE STREQUAL "Release") + set_target_properties(ltfs PROPERTIES BUILD_RPATH "${CMAKE_INSTALL_FULL_LIBDIR}") +else() + set_target_properties(ltfs PROPERTIES BUILD_RPATH "${PLUGINS_PATHS}") +endif() diff --git a/src/iosched/CMakeLists.txt b/src/iosched/CMakeLists.txt new file mode 100644 index 00000000..ced25f5a --- /dev/null +++ b/src/iosched/CMakeLists.txt @@ -0,0 +1,20 @@ +add_library(iosched-fcfs SHARED fcfs.c) +target_link_libraries(iosched-fcfs + PkgConfig::FUSE + ltfs + libiosched_fcfs +) +target_include_directories(iosched-fcfs BEFORE PUBLIC "..") + +add_library(iosched-unified SHARED + unified.c + cache_manager.c +) +target_link_libraries(iosched-unified + PkgConfig::FUSE + ltfs + libiosched_unified +) +target_include_directories(iosched-unified BEFORE PUBLIC "..") + +set(PLUGINS_PATHS "${PLUGINS_PATHS};${CMAKE_CURRENT_BINARY_DIR}" PARENT_SCOPE) diff --git a/src/kmi/CMakeLists.txt b/src/kmi/CMakeLists.txt new file mode 100644 index 00000000..0f8f9950 --- /dev/null +++ b/src/kmi/CMakeLists.txt @@ -0,0 +1,23 @@ +add_library(kmi-simple SHARED + simple.c + key_format_ltfs.c +) +target_link_libraries(kmi-simple + PkgConfig::FUSE + ltfs + libkmi_simple +) +target_include_directories(kmi-simple BEFORE PUBLIC "..") + +add_library(kmi-flatfile SHARED + flatfile.c + key_format_ltfs.c +) +target_link_libraries(kmi-flatfile + PkgConfig::FUSE + ltfs + libkmi_flatfile +) +target_include_directories(kmi-flatfile BEFORE PUBLIC "..") + +set(PLUGINS_PATHS "${PLUGINS_PATHS};${CMAKE_CURRENT_BINARY_DIR}" PARENT_SCOPE) diff --git a/src/libltfs/CMakeLists.txt b/src/libltfs/CMakeLists.txt new file mode 100644 index 00000000..8101bcc0 --- /dev/null +++ b/src/libltfs/CMakeLists.txt @@ -0,0 +1,18 @@ +file(GLOB_RECURSE LIBLTFS_SRCS LIST_DIRECTORIES false "*.c") +add_library(ltfs SHARED ${LIBLTFS_SRCS}) +target_include_directories(ltfs BEFORE PUBLIC "..") + +target_link_libraries(ltfs + Threads::Threads + PkgConfig::FUSE + LibXml2::LibXml2 + PkgConfig::UUID + libbin_ltfs + liblibltfs + libinternal_error + libtape_common +) + +if(ENABLE_SNMP) + target_link_libraries(ltfs NetSNMP) +endif() diff --git a/src/libltfs/arch/time_internal.c b/src/libltfs/arch/time_internal.c index a6bae2ce..5e14ecc1 100644 --- a/src/libltfs/arch/time_internal.c +++ b/src/libltfs/arch/time_internal.c @@ -56,14 +56,15 @@ #include "libltfs/ltfslogging.h" #include "libltfs/arch/time_internal.h" -#ifdef __APPLE__ +// TODO: Fix definition of SIZEOF_TIME_T in cmake +#if defined(__APPLE__) || defined(__CMAKE_BUILD) /* * In OSX environment time_t is always 64-bit width. * It is specified by compile option of Makefile.osx because autoconf architecture is * not used under OSX. */ #define SIZEOF_TIME_T (8) -#else +#elif !defined(__CMAKE_BUILD) #include "config.h" #endif diff --git a/src/libltfs/ltfs.h b/src/libltfs/ltfs.h index ec518f1a..22aaf6cf 100644 --- a/src/libltfs/ltfs.h +++ b/src/libltfs/ltfs.h @@ -184,7 +184,7 @@ enum ltfs_index_type { #define LTFS_NO_BARCODE "NO_BARCODE" -#ifndef __APPLE_MAKEFILE__ +#if !defined(__APPLE_MAKEFILE__) && !defined(__CMAKE_BUILD) #include "config.h" #endif diff --git a/src/tape_drivers/CMakeLists.txt b/src/tape_drivers/CMakeLists.txt new file mode 100644 index 00000000..b9e26515 --- /dev/null +++ b/src/tape_drivers/CMakeLists.txt @@ -0,0 +1,16 @@ +add_library(tape_reed_solomon_crc SHARED + reed_solomon_crc.c +) +target_link_libraries(tape_reed_solomon_crc + PkgConfig::FUSE + ltfs +) + +add_library(tape_crc32c_crc SHARED + crc32c_crc.c +) +target_link_libraries(tape_crc32c_crc + PkgConfig::FUSE + ltfs +) +set(PLUGINS_PATHS "${PLUGINS_PATHS};${CMAKE_CURRENT_BINARY_DIR}" PARENT_SCOPE) diff --git a/src/tape_drivers/freebsd/cam/CMakeLists.txt b/src/tape_drivers/freebsd/cam/CMakeLists.txt new file mode 100644 index 00000000..315a8d12 --- /dev/null +++ b/src/tape_drivers/freebsd/cam/CMakeLists.txt @@ -0,0 +1,17 @@ +add_library(tape-cam SHARED + cam_cmn.c + cam_tc.c + ../../vendor_compat.c + ../../ibm_tape.c + ../../hp_tape.c + ../../quantum_tape.c +) +target_link_libraries(tape-cam + PkgConfig::FUSE + ltfs + libtape_freebsd_cam + tape_reed_solomon_crc + tape_crc32c_crc +) +target_include_directories(tape-cam BEFORE PUBLIC "../..") +set(PLUGINS_PATHS "${PLUGINS_PATHS};${CMAKE_CURRENT_BINARY_DIR}" PARENT_SCOPE) diff --git a/src/tape_drivers/generic/file/CMakeLists.txt b/src/tape_drivers/generic/file/CMakeLists.txt new file mode 100644 index 00000000..ff97b35c --- /dev/null +++ b/src/tape_drivers/generic/file/CMakeLists.txt @@ -0,0 +1,12 @@ +add_library(tape-file SHARED + filedebug_tc.c + filedebug_conf_tc.c + ../../ibm_tape.c +) +target_link_libraries(tape-file + PkgConfig::FUSE + ltfs + libtape_generic_file +) +target_include_directories(tape-file BEFORE PUBLIC "../..") +set(PLUGINS_PATHS "${PLUGINS_PATHS};${CMAKE_CURRENT_BINARY_DIR}" PARENT_SCOPE) diff --git a/src/tape_drivers/generic/itdtimg/CMakeLists.txt b/src/tape_drivers/generic/itdtimg/CMakeLists.txt new file mode 100644 index 00000000..e238fe11 --- /dev/null +++ b/src/tape_drivers/generic/itdtimg/CMakeLists.txt @@ -0,0 +1,13 @@ +add_library(tape-itdtimg SHARED + itdtimg_tc.c + ../../ibm_tape.c +) +target_link_libraries(tape-itdtimg + PkgConfig::FUSE + ltfs + libtape_generic_itdtimg + tape_reed_solomon_crc + tape_crc32c_crc +) +target_include_directories(tape-itdtimg BEFORE PUBLIC "../..") +set(PLUGINS_PATHS "${PLUGINS_PATHS};${CMAKE_CURRENT_BINARY_DIR}" PARENT_SCOPE) diff --git a/src/tape_drivers/linux/lin_tape/CMakeLists.txt b/src/tape_drivers/linux/lin_tape/CMakeLists.txt new file mode 100644 index 00000000..cf3dc2ca --- /dev/null +++ b/src/tape_drivers/linux/lin_tape/CMakeLists.txt @@ -0,0 +1,16 @@ +add_library(tape_lintape SHARED + lin_tape_ibmtape.c + ../../vendor_compat.c + ../../ibm_tape.c + ../../hp_tape.c + ../../quantum_tape.c +) +target_link_libraries(tape_lintape + PkgConfig::FUSE + ltfs + libtape_linux_lin_tape + tape_reed_solomon_crc + tape_crc32c_crc +) +target_include_directories(tape_lintape BEFORE PUBLIC "../..") +set(PLUGINS_PATHS "${PLUGINS_PATHS};${CMAKE_CURRENT_BINARY_DIR}" PARENT_SCOPE) diff --git a/src/tape_drivers/linux/sg/CMakeLists.txt b/src/tape_drivers/linux/sg/CMakeLists.txt new file mode 100644 index 00000000..fadc977c --- /dev/null +++ b/src/tape_drivers/linux/sg/CMakeLists.txt @@ -0,0 +1,18 @@ +add_library(tape_sg SHARED + sg_scsi_tape.c + sg_tape.c + ../../vendor_compat.c + ../../ibm_tape.c + ../../hp_tape.c + ../../quantum_tape.c + ../../open_factor.c +) +target_link_libraries(tape_sg + PkgConfig::FUSE + ltfs + libtape_linux_sg + tape_reed_solomon_crc + tape_crc32c_crc +) +target_include_directories(tape_sg BEFORE PUBLIC "../..") +set(PLUGINS_PATHS "${PLUGINS_PATHS};${CMAKE_CURRENT_BINARY_DIR}" PARENT_SCOPE) diff --git a/src/tape_drivers/netbsd/scsipi-ibmtape/CMakeLists.txt b/src/tape_drivers/netbsd/scsipi-ibmtape/CMakeLists.txt new file mode 100644 index 00000000..9df1dc71 --- /dev/null +++ b/src/tape_drivers/netbsd/scsipi-ibmtape/CMakeLists.txt @@ -0,0 +1,17 @@ +add_library(libtape_sg_ibmtape SHARED + scsipi_scsi_tape.c + scsipi_ibmtape.c + ../../vendor_compat.c + ../../ibm_tape.c + ../../hp_tape.c + ../../quantum_tape.c +) +target_link_libraries(libtape_sg_ibmtape + PkgConfig::FUSE + ltfs + libtape_linux_sg_ibmtape + tape_reed_solomon_crc + tape_crc32c_crc +) +target_include_directories(tape_sg_ibmtape BEFORE PUBLIC "../..") +set(PLUGINS_PATHS "${PLUGINS_PATHS};${CMAKE_CURRENT_BINARY_DIR}" PARENT_SCOPE) diff --git a/src/tape_drivers/osx/iokit/CMakeLists.txt b/src/tape_drivers/osx/iokit/CMakeLists.txt new file mode 100644 index 00000000..f7429156 --- /dev/null +++ b/src/tape_drivers/osx/iokit/CMakeLists.txt @@ -0,0 +1,17 @@ +add_library(tape_iokit SHARED + scsipi_scsi_tape.c + scsipi_ibmtape.c + ../../vendor_compat.c + ../../ibm_tape.c + ../../hp_tape.c + ../../quantum_tape.c +) +target_link_libraries(tape_iokit + PkgConfig::FUSE + ltfs + libtape_iokit + tape_reed_solomon_crc + tape_crc32c_crc +) +target_include_directories(tape_iokit BEFORE PUBLIC "../..") +set(PLUGINS_PATHS "${PLUGINS_PATHS};${CMAKE_CURRENT_BINARY_DIR}" PARENT_SCOPE) diff --git a/src/utils/CMakeLists.txt b/src/utils/CMakeLists.txt new file mode 100644 index 00000000..01380b01 --- /dev/null +++ b/src/utils/CMakeLists.txt @@ -0,0 +1,24 @@ +add_executable(mkltfs mkltfs.c) +target_link_libraries(mkltfs + ICU::uc + ltfs + libbin_mkltfs +) +target_include_directories(mkltfs BEFORE PUBLIC ".") + +add_executable(ltfsck ltfsck.c) +target_link_libraries(ltfsck + ICU::uc + ltfs + libbin_ltfsck +) +target_include_directories(ltfsck BEFORE PUBLIC ".") + +add_executable(ltfsindextool ltfsindextool.c) +target_link_libraries(ltfsindextool + ICU::uc + ltfs + libbin_ltfsindextool + libbin_mkltfs +) +target_include_directories(ltfsindextool BEFORE PUBLIC ".")