Update license file (github badge)
[lwext4.git] / CMakeLists.txt
index 95380db190df1f49e1a0b09dd10fbe16104a4b4a..68a9cb0d2c6aa1e30072c7f4adff11e437207e19 100644 (file)
@@ -2,57 +2,98 @@ project(lwext4 C)
 cmake_minimum_required(VERSION 2.8)
 
 
-include_directories(lwext4)
+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)
-    add_subdirectory(blockdev)
-    add_subdirectory(demos/generic)
-elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL  cortex-m4)
     #...
+elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL  cortex-m4)
+    add_definitions(-DCONFIG_UNALIGNED_ACCESS=1)
 elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL  bf518)
-    add_definitions(-DCONFIG_HAVE_OWN_OFLAGS=1)
     #...
 elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL  avrxmega7)
-    add_definitions(-DCONFIG_HAVE_OWN_OFLAGS=1)
-    #...
+    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)
-    add_definitions(-DCONFIG_HAVE_OWN_OFLAGS=1)
     #...
+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
-    set(BLOCKDEV_TYPE  linux)
-    add_definitions(-DCONFIG_EXTENT_FULL=1)
+    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)
-    add_subdirectory(demos/generic)
 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(lwext4)
+add_subdirectory(src)
 #Detect all possible warnings for lwext4 target
-set_target_properties(lwext4 PROPERTIES COMPILE_FLAGS "-Wall -Wextra -pedantic")
+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()
 
+#Config file generation
+file(
+    COPY include
+    DESTINATION .
+)
 
 #DISTRIBUTION
-set(CPACK_PACKAGE_VERSION_MAJOR "0")
-set(CPACK_PACKAGE_VERSION_MINOR "8")
-set(CPACK_PACKAGE_VERSION_PATCH "0")
+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}")
@@ -60,4 +101,5 @@ set(CPACK_SOURCE_IGNORE_FILES
 "/build" ".git")
 include(CPack)
 
+
 add_custom_target(dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source)