CMakeLists.txt 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  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. string(TOLOWER ${BUILD_PLATFORM} PLATFORM_FILE)
  16. add_library(miniffs)
  17. target_sources(miniffs PRIVATE platform/${PLATFORM_FILE}.c miniffs.c)
  18. target_include_directories(miniffs PRIVATE includes/)
  19. target_compile_definitions(miniffs PRIVATE BUILD_PLATFORM_${BUILD_PLATFORM})
  20. if (BUILD_HOST_TOOLS)
  21. set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
  22. add_subdirectory(external/cJSON)
  23. # Offline tools use the file backend so we have to include the lib by hand.
  24. add_executable(mffs)
  25. target_sources(mffs PRIVATE platform/file.c miniffs.c miniffs_tools.c mffs.c)
  26. target_link_libraries(mffs ${CJSON_LIB})
  27. target_include_directories(mffs PRIVATE includes/ external/)
  28. target_compile_definitions(mffs PRIVATE BUILD_PLATFORM_FILE)
  29. target_compile_definitions(mffs PRIVATE BUILD_HOST_TOOLS)
  30. endif()