X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=CMakeLists.txt;h=eec0993b08f57f885d04e0d3083047b99f631357;hb=HEAD;hp=64094a79d62565e16c9b3e52114e01f28992c985;hpb=ac78a04a195dfaec8f98d1a39753256d08210382;p=lwext4.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 64094a7..eec0993 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,75 +1,100 @@ -project(lwext4 C) -cmake_minimum_required(VERSION 2.8) - - -#LIBRARY -include_directories(. lwext4) -aux_source_directory(lwext4 LWEXT4_SRC) -add_library(lwext4 ${LWEXT4_SRC}) - - -#EXECUTABLE - -if(CMAKE_SYSTEM_PROCESSOR STREQUAL cortex-m3) -#Library size print -add_custom_target(lib_size ALL DEPENDS lwext4 COMMAND ${SIZE} -B liblwext4.a) - -elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL cortex-m4) -#Library size print -add_custom_target(lib_size ALL DEPENDS lwext4 COMMAND ${SIZE} -B liblwext4.a) - -#Discoery disco demo -enable_language(ASM) -set (STM32F429_DEMO_ASM - demos/stm32f429_disco/startup.S -) - -include_directories(demos/stm32f429_disco) -include_directories(demos/stm32f429_disco/cmsis) -include_directories(demos/stm32f429_disco/stm/lcd_utils) -include_directories(demos/stm32f429_disco/stm/stm32f4_spl/inc) -include_directories(demos/stm32f429_disco/stm/stm32f429) - -aux_source_directory(demos/stm32f429_disco STM32F429_DEMO) -aux_source_directory(demos/stm32f429_disco/cmsis STM32F429_DEMO) -aux_source_directory(demos/stm32f429_disco/stm/lcd_utils STM32F429_DEMO) -aux_source_directory(demos/stm32f429_disco/stm/stm32f4_spl/src STM32F429_DEMO) -aux_source_directory(demos/stm32f429_disco/stm/stm32f429 STM32F429_DEMO) - -add_executable(stm324f29_demo ${STM32F429_DEMO} ${STM32F429_DEMO_ASM}) -set_target_properties(stm324f29_demo PROPERTIES COMPILE_DEFINITIONS "STM32F429_439xx") -set_target_properties(stm324f29_demo PROPERTIES LINK_FLAGS "-T${CMAKE_SOURCE_DIR}/demos/stm32f429_disco/stm32f429.ld") -target_link_libraries(stm324f29_demo lwext4) - -add_custom_target(stm32f429_size ALL DEPENDS stm324f29_demo COMMAND ${SIZE} -B stm324f29_demo) - -elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL bf518) -#Library size print -add_custom_target(lib_size ALL DEPENDS lwext4 COMMAND ${SIZE} -B liblwext4.a) - -else() -#Generic example target -include_directories(blockdev/filedev) -include_directories(blockdev/io_raw) - -aux_source_directory(blockdev/filedev GENERIC_SRC) -aux_source_directory(blockdev/io_raw GENERIC_SRC) -aux_source_directory(demos/generic GENERIC_SRC) - -add_executable(fileimage_demo ${GENERIC_SRC}) -target_link_libraries(fileimage_demo lwext4) -add_custom_target(size ALL DEPENDS lwext4 COMMAND size -B liblwext4.a) -endif() - -#DISTRIBUTION -set(CPACK_PACKAGE_VERSION_MAJOR "0") -set(CPACK_PACKAGE_VERSION_MINOR "2") -set(CPACK_PACKAGE_VERSION_PATCH "0") -set(CPACK_SOURCE_GENERATOR "TBZ2") -set(CPACK_SOURCE_PACKAGE_FILE_NAME - "${CMAKE_PROJECT_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") -set(CPACK_SOURCE_IGNORE_FILES -"/build") -include(CPack) - -add_custom_target(dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source) +project(lwext4 C) +cmake_minimum_required(VERSION 3.4) + + +include_directories(include) +include_directories(${PROJECT_BINARY_DIR}/include) +include_directories(blockdev/filedev) +include_directories(blockdev/filedev_win) + +set(BLOCKDEV_TYPE none) + +add_definitions(-DCONFIG_USE_DEFAULT_CONFIG=0) +add_definitions(-DVERSION="${VERSION}") + +#Examples +if (CMAKE_SYSTEM_PROCESSOR STREQUAL cortex-m0) + #... +elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL cortex-m3) + add_definitions(-DCONFIG_UNALIGNED_ACCESS=1) +elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL arm-sim) + #... +elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL cortex-m4) + add_definitions(-DCONFIG_UNALIGNED_ACCESS=1) +elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL bf518) + #... +elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL avrxmega7) + add_definitions(-DCONFIG_HAVE_OWN_ERRNO=1) +elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL msp430g2210) + add_definitions(-DCONFIG_DEBUG_PRINTF=0) + add_definitions(-DCONFIG_DEBUG_ASSERT=0) + #... +elseif(LIB_ONLY) + add_definitions(-DCONFIG_DEBUG_PRINTF=0) + add_definitions(-DCONFIG_DEBUG_ASSERT=0) + add_definitions(-DCONFIG_HAVE_OWN_OFLAGS=1) + add_definitions(-DCONFIG_HAVE_OWN_ERRNO=0) + add_definitions(-DCONFIG_BLOCK_DEV_CACHE_SIZE=16) +else() + #Generic example target + if (WIN32) + set(BLOCKDEV_TYPE windows) + else() + set(BLOCKDEV_TYPE linux) + endif() + set (INSTALL_LIB 1) + add_definitions(-DCONFIG_HAVE_OWN_OFLAGS=0) + add_definitions(-DCONFIG_HAVE_OWN_ERRNO=0) + add_definitions(-DCONFIG_HAVE_OWN_ASSERT=0) + add_definitions(-DCONFIG_BLOCK_DEV_CACHE_SIZE=16) + add_subdirectory(fs_test) +endif() + +macro(output_configure) + get_property( + definitions + DIRECTORY + PROPERTY COMPILE_DEFINITIONS + ) + file(WRITE + ${PROJECT_BINARY_DIR}/include/generated/ext4_config.h + "") + foreach(item ${definitions}) + string(REGEX MATCH "^CONFIG_" match_res ${item}) + if(match_res) + string(REGEX REPLACE "=(.+)$" "" replace_res ${item}) + string(CONFIGURE + "#define ${replace_res} ${CMAKE_MATCH_1}" + output_str) + file(APPEND + ${PROJECT_BINARY_DIR}/include/generated/ext4_config.h + "${output_str}\n") + endif() + endforeach() +endmacro() +output_configure() + +add_subdirectory(blockdev) + +#Library build +add_subdirectory(src) +#Detect all possible warnings for lwext4 target +if (NOT CMAKE_COMPILER_IS_GNUCC) + set_target_properties(lwext4 PROPERTIES COMPILE_FLAGS "") +else() + set_target_properties(lwext4 PROPERTIES COMPILE_FLAGS "-Wall -Wextra -pedantic") +endif() + +#DISTRIBUTION +set(CPACK_PACKAGE_VERSION_MAJOR "${VERSION_MAJOR}") +set(CPACK_PACKAGE_VERSION_MINOR "${VERSION_MINOR}") +set(CPACK_PACKAGE_VERSION_PATCH "${VERSION_PATCH}") +set(CPACK_SOURCE_GENERATOR "TBZ2") +set(CPACK_SOURCE_PACKAGE_FILE_NAME + "${CMAKE_PROJECT_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") +set(CPACK_SOURCE_IGNORE_FILES +"/build" ".git") +include(CPack) + + +add_custom_target(dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source)