CMakeLists.txt 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. cmake_minimum_required(VERSION 3.10)
  2. project(MiniFFS C)
  3. set(CMAKE_C_STANDARD 99)
  4. set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/external/cmake ${CMAKE_MODULE_PATH})
  5. # Generate version from Git Tag
  6. include(GetGitRevisionDescription)
  7. git_describe(VERSION --tags --dirty=-dirty)
  8. #parse the version information into pieces.
  9. message("-- Building version ${VERSION}")
  10. add_compile_definitions(VERSION="${VERSION}")
  11. set(VALID_BUILD_PLATFORM MEMORY FILE)
  12. set(BUILD_PLATFORM MEMORY CACHE STRING "Platform to build for")
  13. set_property(CACHE BUILD_PLATFORM PROPERTY STRINGS ${VALID_BUILD_PLATFORM})
  14. option(BUILD_HOST_TOOLS "Build offline tools" ON)
  15. option(RUN_TESTS "Run the test suite to verify everything is ok!" ON)
  16. string(TOLOWER ${BUILD_PLATFORM} PLATFORM_FILE)
  17. add_library(miniffs STATIC)
  18. target_sources(miniffs PRIVATE platform/${PLATFORM_FILE}.c miniffs.c)
  19. target_include_directories(miniffs PUBLIC includes/)
  20. target_compile_definitions(miniffs PUBLIC BUILD_PLATFORM_${BUILD_PLATFORM})
  21. if (BUILD_HOST_TOOLS)
  22. set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
  23. add_subdirectory(external/cJSON)
  24. # Offline tools use the file backend so we have to include the lib by hand.
  25. add_executable(mffs)
  26. target_sources(mffs PRIVATE platform/file.c miniffs.c miniffs_tools.c mffs.c)
  27. target_link_libraries(mffs ${CJSON_LIB})
  28. target_include_directories(mffs PRIVATE includes/ external/)
  29. target_compile_definitions(mffs PRIVATE BUILD_PLATFORM_FILE)
  30. target_compile_definitions(mffs PRIVATE BUILD_HOST_TOOLS)
  31. endif()
  32. if(RUN_TESTS)
  33. enable_testing()
  34. include(GoogleTest)
  35. add_subdirectory("${PROJECT_SOURCE_DIR}/external/googletest" "external/googletest")
  36. add_subdirectory(test)
  37. endif()