Initial commit
This commit is contained in:
56
CMakeLists.txt
Normal file
56
CMakeLists.txt
Normal file
@@ -0,0 +1,56 @@
|
||||
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}")
|
||||
Reference in New Issue
Block a user