57 lines
1.6 KiB
CMake
57 lines
1.6 KiB
CMake
cmake_minimum_required(VERSION 3.10)
|
|
project(SimpleFS CXX)
|
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED True)
|
|
|
|
# Set include directory
|
|
include_directories(include)
|
|
|
|
# mkfs.simplefs executable
|
|
add_executable(mkfs.simplefs
|
|
tools/mkfs.cpp
|
|
src/disk_io.cpp
|
|
src/utils.cpp
|
|
)
|
|
target_link_libraries(mkfs.simplefs PRIVATE m)
|
|
|
|
# fsck.simplefs executable
|
|
add_executable(fsck.simplefs
|
|
tools/fsck.cpp
|
|
src/disk_io.cpp
|
|
src/utils.cpp
|
|
)
|
|
target_link_libraries(fsck.simplefs PRIVATE m)
|
|
|
|
|
|
# SimpleFS FUSE daemon
|
|
find_package(PkgConfig REQUIRED)
|
|
pkg_check_modules(FUSE REQUIRED fuse)
|
|
include_directories(${FUSE_INCLUDE_DIRS})
|
|
link_directories(${FUSE_LIBRARY_DIRS})
|
|
add_executable(simplefs
|
|
src/main.cpp
|
|
src/fuse_ops.cpp
|
|
src/disk_io.cpp
|
|
src/metadata.cpp
|
|
src/utils.cpp
|
|
)
|
|
target_link_libraries(simplefs PRIVATE ${FUSE_LIBRARIES})
|
|
# Add required FUSE definitions specifically for simplefs target
|
|
target_compile_definitions(simplefs PRIVATE _FILE_OFFSET_BITS=64 FUSE_USE_VERSION=29)
|
|
|
|
|
|
# Enable warnings
|
|
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG)
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wpedantic -g")
|
|
endif()
|
|
|
|
# Remove global add_definitions for FUSE if they were here, now target-specific
|
|
|
|
message(STATUS "Project SimpleFS configured (mkfs.simplefs only)")
|
|
message(STATUS "CXX Standard: ${CMAKE_CXX_STANDARD}")
|
|
message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
|
|
message(STATUS "Compiler: ${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_VERSION}")
|
|
message(STATUS "Source directory: ${CMAKE_SOURCE_DIR}")
|
|
message(STATUS "Binary directory: ${CMAKE_BINARY_DIR}")
|