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()