Fix "const const" warning
[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     if (WIN32)
40       set(BLOCKDEV_TYPE  windows)
41     else()
42       set(BLOCKDEV_TYPE  linux)
43     endif()
44     set (INSTALL_LIB 1)
45     add_definitions(-DCONFIG_HAVE_OWN_OFLAGS=0)
46     add_definitions(-DCONFIG_HAVE_OWN_ERRNO=0)
47     add_definitions(-DCONFIG_HAVE_OWN_ASSERT=0)
48     add_definitions(-DCONFIG_BLOCK_DEV_CACHE_SIZE=16)
49     add_subdirectory(fs_test)
50 endif()
51
52 macro(output_configure)
53     get_property(
54         definitions
55         DIRECTORY
56         PROPERTY COMPILE_DEFINITIONS
57     )
58     file(WRITE
59          ${PROJECT_BINARY_DIR}/include/generated/ext4_config.h
60          "")
61     foreach(item ${definitions})
62         string(REGEX MATCH "^CONFIG_" match_res ${item})
63         if(match_res)
64             string(REGEX REPLACE "=(.+)$" "" replace_res ${item})
65             string(CONFIGURE
66                    "#define ${replace_res} ${CMAKE_MATCH_1}"
67                    output_str)
68             file(APPEND
69                  ${PROJECT_BINARY_DIR}/include/generated/ext4_config.h
70                  "${output_str}\n")
71         endif()
72     endforeach()
73 endmacro()
74 output_configure()
75
76 add_subdirectory(blockdev)
77
78 #Library build
79 add_subdirectory(src)
80 #Detect all possible warnings for lwext4 target
81 if (NOT CMAKE_COMPILER_IS_GNUCC)
82     set_target_properties(lwext4 PROPERTIES COMPILE_FLAGS "")
83 else()
84     set_target_properties(lwext4 PROPERTIES COMPILE_FLAGS "-Wall -Wextra -pedantic")
85 endif()
86
87 #Config file generation
88 file(
89     COPY include
90     DESTINATION .
91 )
92
93 #DISTRIBUTION
94 set(CPACK_PACKAGE_VERSION_MAJOR "${VERSION_MAJOR}")
95 set(CPACK_PACKAGE_VERSION_MINOR "${VERSION_MINOR}")
96 set(CPACK_PACKAGE_VERSION_PATCH "${VERSION_PATCH}")
97 set(CPACK_SOURCE_GENERATOR "TBZ2")
98 set(CPACK_SOURCE_PACKAGE_FILE_NAME
99   "${CMAKE_PROJECT_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
100 set(CPACK_SOURCE_IGNORE_FILES
101 "/build" ".git")
102 include(CPack)
103
104
105 add_custom_target(dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source)