ext4_journal: handle trans_id wrapping around cases
[lwext4.git] / CMakeLists.txt
1 project(lwext4 C)
2 cmake_minimum_required(VERSION 2.8)
3
4
5 include_directories(${PROJECT_BINARY_DIR}/include)
6 include_directories(blockdev/filedev)
7 include_directories(blockdev/filedev_win)
8
9 set(BLOCKDEV_TYPE  none)
10
11 add_definitions(-DCONFIG_USE_DEFAULT_CONFIG=0)
12 add_definitions(-DVERSION="${VERSION}")
13
14 #Examples
15 if    (CMAKE_SYSTEM_PROCESSOR STREQUAL  cortex-m0)
16     #...
17 elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL  cortex-m3)
18     add_definitions(-DCONFIG_UNALIGNED_ACCESS=1)
19 elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL  arm-sim)
20     #...
21 elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL  cortex-m4)
22     add_definitions(-DCONFIG_UNALIGNED_ACCESS=1)
23 elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL  bf518)
24     #...
25 elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL  avrxmega7)
26     add_definitions(-DCONFIG_HAVE_OWN_ERRNO=1)
27 elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL  msp430g2210)
28     add_definitions(-DCONFIG_DEBUG_PRINTF=0)
29     add_definitions(-DCONFIG_DEBUG_ASSERT=0)
30     #...
31 elseif(LIB_ONLY)
32     add_definitions(-DCONFIG_DEBUG_PRINTF=0)
33     add_definitions(-DCONFIG_DEBUG_ASSERT=0)
34     add_definitions(-DCONFIG_HAVE_OWN_OFLAGS=1)
35     add_definitions(-DCONFIG_HAVE_OWN_ERRNO=0)
36     add_definitions(-DCONFIG_BLOCK_DEV_CACHE_SIZE=16)
37 else()
38     #Generic example target
39     set(BLOCKDEV_TYPE  linux)
40     set (INSTALL_LIB 1)
41     add_definitions(-DCONFIG_HAVE_OWN_OFLAGS=0)
42     add_definitions(-DCONFIG_HAVE_OWN_ERRNO=0)
43     add_definitions(-DCONFIG_HAVE_OWN_ASSERT=0)
44     add_definitions(-DCONFIG_BLOCK_DEV_CACHE_SIZE=16)
45     add_subdirectory(fs_test)
46 endif()
47
48 macro(output_configure)
49     get_property(
50         definitions
51         DIRECTORY
52         PROPERTY COMPILE_DEFINITIONS
53     )
54     file(WRITE
55          ${PROJECT_BINARY_DIR}/include/generated/ext4_config.h
56          "")
57     foreach(item ${definitions})
58         string(REGEX MATCH "^CONFIG_" match_res ${item})
59         if(match_res)
60             string(REGEX REPLACE "=(.+)$" "" replace_res ${item})
61             string(CONFIGURE
62                    "#define ${replace_res} ${CMAKE_MATCH_1}"
63                    output_str)
64             file(APPEND
65                  ${PROJECT_BINARY_DIR}/include/generated/ext4_config.h
66                  "${output_str}\n")
67         endif()
68     endforeach()
69 endmacro()
70 output_configure()
71
72 add_subdirectory(blockdev)
73
74 #Library build
75 add_subdirectory(src)
76 #Detect all possible warnings for lwext4 target
77 if (NOT CMAKE_COMPILER_IS_GNUCC)
78     set_target_properties(lwext4 PROPERTIES COMPILE_FLAGS "")
79 else()
80     set_target_properties(lwext4 PROPERTIES COMPILE_FLAGS "-Wall -Wextra -pedantic")
81 endif()
82
83 #Config file generation
84 file(
85     COPY include
86     DESTINATION .
87 )
88
89 #DISTRIBUTION
90 set(CPACK_PACKAGE_VERSION_MAJOR "${VERSION_MAJOR}")
91 set(CPACK_PACKAGE_VERSION_MINOR "${VERSION_MINOR}")
92 set(CPACK_PACKAGE_VERSION_PATCH "${VERSION_PATCH}")
93 set(CPACK_SOURCE_GENERATOR "TBZ2")
94 set(CPACK_SOURCE_PACKAGE_FILE_NAME
95   "${CMAKE_PROJECT_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
96 set(CPACK_SOURCE_IGNORE_FILES
97 "/build" ".git")
98 include(CPack)
99
100
101 add_custom_target(dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source)