49 lines
1.7 KiB
CMake
49 lines
1.7 KiB
CMake
cmake_minimum_required(VERSION 3.10)
|
|
project(MiniFFS C)
|
|
|
|
set(CMAKE_C_STANDARD 99)
|
|
|
|
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/external/cmake ${CMAKE_MODULE_PATH})
|
|
|
|
# Generate version from Git Tag
|
|
include(GetGitRevisionDescription)
|
|
git_describe(VERSION --tags --dirty=-dirty)
|
|
|
|
#parse the version information into pieces.
|
|
message("-- Building version ${VERSION}")
|
|
add_compile_definitions(VERSION="${VERSION}")
|
|
|
|
|
|
set(VALID_BUILD_PLATFORM MEMORY FILE)
|
|
set(BUILD_PLATFORM MEMORY CACHE STRING "Platform to build for")
|
|
set_property(CACHE BUILD_PLATFORM PROPERTY STRINGS ${VALID_BUILD_PLATFORM})
|
|
|
|
option(BUILD_HOST_TOOLS "Build offline tools" ON)
|
|
option(RUN_TESTS "Run the test suite to verify everything is ok!" ON)
|
|
|
|
string(TOLOWER ${BUILD_PLATFORM} PLATFORM_FILE)
|
|
|
|
add_library(miniffs STATIC)
|
|
target_sources(miniffs PRIVATE platform/${PLATFORM_FILE}.c miniffs.c)
|
|
target_include_directories(miniffs PUBLIC includes/)
|
|
target_compile_definitions(miniffs PUBLIC BUILD_PLATFORM_${BUILD_PLATFORM})
|
|
|
|
if (BUILD_HOST_TOOLS)
|
|
set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
|
|
add_subdirectory(external/cJSON)
|
|
|
|
# Offline tools use the file backend so we have to include the lib by hand.
|
|
add_executable(mffs)
|
|
target_sources(mffs PRIVATE platform/file.c miniffs.c miniffs_tools.c mffs.c)
|
|
target_link_libraries(mffs ${CJSON_LIB})
|
|
target_include_directories(mffs PRIVATE includes/ external/)
|
|
target_compile_definitions(mffs PRIVATE BUILD_PLATFORM_FILE)
|
|
target_compile_definitions(mffs PRIVATE BUILD_HOST_TOOLS)
|
|
endif()
|
|
|
|
if(RUN_TESTS)
|
|
enable_testing()
|
|
include(GoogleTest)
|
|
add_subdirectory("${PROJECT_SOURCE_DIR}/external/googletest" "external/googletest")
|
|
add_subdirectory(test)
|
|
endif() |