Merge pull request #49 from sirocyl/patch-1
[lwext4.git] / CMakeLists.txt
index ac708430df3a2d07c72c6c4b5a4ddbfd08846f3f..eec0993b08f57f885d04e0d3083047b99f631357 100644 (file)
-project(lwext4 C)\r
-cmake_minimum_required(VERSION 2.8)\r
-\r
-\r
-#LIBRARY\r
-include_directories(. lwext4)\r
-aux_source_directory(lwext4 LWEXT4_SRC)\r
-add_library(lwext4  ${LWEXT4_SRC})\r
-\r
-\r
-#EXECUTABLE\r
-\r
-if(CMAKE_SYSTEM_PROCESSOR STREQUAL  cortex-m3)\r
-#Library size print\r
-add_custom_target(lib_size ALL DEPENDS lwext4 COMMAND ${SIZE} -B liblwext4.a)\r
-\r
-elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL  cortex-m4)\r
-#Library size print\r
-add_custom_target(lib_size ALL DEPENDS lwext4 COMMAND ${SIZE} -B liblwext4.a)\r
-\r
-#Discoery disco demo\r
-enable_language(ASM)\r
-set (STM32F429_DEMO_ASM\r
-    demos/stm32f429_disco/startup.S\r
-)\r
-\r
-include_directories(demos/stm32f429_disco)\r
-include_directories(demos/stm32f429_disco/cmsis)\r
-include_directories(demos/stm32f429_disco/stm/lcd_utils)\r
-include_directories(demos/stm32f429_disco/stm/stm32f4_spl/inc)\r
-include_directories(demos/stm32f429_disco/stm/stm32f429)\r
-include_directories(demos/stm32f429_disco/stm/usb_dev/Core/inc)\r
-include_directories(demos/stm32f429_disco/stm/usb_host/Core/inc)\r
-include_directories(demos/stm32f429_disco/stm/usb_host/Class/MSC/inc)\r
-include_directories(demos/stm32f429_disco/stm/usb_otg/inc)\r
-include_directories(demos/stm32f429_disco/stm/usb_user)\r
-\r
-aux_source_directory(demos/stm32f429_disco STM32F429_DEMO)\r
-aux_source_directory(demos/stm32f429_disco/cmsis STM32F429_DEMO)\r
-aux_source_directory(demos/stm32f429_disco/stm/lcd_utils STM32F429_DEMO)\r
-aux_source_directory(demos/stm32f429_disco/stm/stm32f4_spl/src STM32F429_DEMO)\r
-aux_source_directory(demos/stm32f429_disco/stm/stm32f429 STM32F429_DEMO)\r
-aux_source_directory(demos/stm32f429_disco/stm/usb_host/Core/src STM32F429_DEMO)\r
-aux_source_directory(demos/stm32f429_disco/stm/usb_host/Class/MSC/src STM32F429_DEMO)\r
-aux_source_directory(demos/stm32f429_disco/stm/usb_otg/src STM32F429_DEMO)\r
-aux_source_directory(demos/stm32f429_disco/stm/usb_user STM32F429_DEMO)\r
-\r
-add_executable(stm324f29_demo ${STM32F429_DEMO} ${STM32F429_DEMO_ASM})\r
-\r
-set_target_properties(stm324f29_demo PROPERTIES COMPILE_FLAGS "-Wno-unused-parameter")\r
-set_target_properties(stm324f29_demo PROPERTIES COMPILE_FLAGS "-Wno-format")\r
-set_target_properties(stm324f29_demo PROPERTIES COMPILE_DEFINITIONS "STM32F429_439xx")\r
-\r
-set_target_properties(stm324f29_demo PROPERTIES LINK_FLAGS "-T${CMAKE_SOURCE_DIR}/demos/stm32f429_disco/stm32f429.ld")\r
-target_link_libraries(stm324f29_demo lwext4)\r
-\r
-add_custom_target(stm32f429_size ALL DEPENDS stm324f29_demo COMMAND ${SIZE} -B stm324f29_demo)\r
-\r
-elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL  bf518)\r
-#Library size print\r
-add_custom_target(lib_size ALL DEPENDS lwext4 COMMAND ${SIZE} -B liblwext4.a)\r
-\r
-else()\r
-#Generic example target\r
-include_directories(blockdev/filedev)\r
-include_directories(blockdev/io_raw)\r
-\r
-aux_source_directory(blockdev/filedev GENERIC_SRC)\r
-aux_source_directory(blockdev/io_raw GENERIC_SRC)\r
-aux_source_directory(demos/generic GENERIC_SRC)\r
-\r
-add_executable(fileimage_demo ${GENERIC_SRC})\r
-target_link_libraries(fileimage_demo lwext4)\r
-add_custom_target(size ALL DEPENDS lwext4 COMMAND size -B liblwext4.a)\r
-endif()\r
-\r
-#DISTRIBUTION\r
-set(CPACK_PACKAGE_VERSION_MAJOR "0")\r
-set(CPACK_PACKAGE_VERSION_MINOR "2")\r
-set(CPACK_PACKAGE_VERSION_PATCH "0")\r
-set(CPACK_SOURCE_GENERATOR "TBZ2")\r
-set(CPACK_SOURCE_PACKAGE_FILE_NAME\r
-  "${CMAKE_PROJECT_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")\r
-set(CPACK_SOURCE_IGNORE_FILES\r
-"/build")\r
-include(CPack)\r
-\r
-add_custom_target(dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source)\r
+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)