[CMAKE] Some options are only supported by GCC, don't use them for clang
[reactos.git] / drivers / filesystems / ext2 / CMakeLists.txt
1
2 include_directories(${REACTOS_SOURCE_DIR}/sdk/include/reactos/drivers
3 inc)
4
5 list(APPEND SOURCE
6 src/init.c
7 src/ext3/generic.c
8 src/ext3/htree.c
9 src/ext3/indirect.c
10 src/ext3/recover.c
11 src/ext4/ext4_bh.c
12 src/ext4/ext4_extents.c
13 src/ext4/ext4_jbd2.c
14 src/ext4/ext4_xattr.c
15 src/ext4/extents.c
16 src/jbd/recovery.c
17 src/jbd/replay.c
18 src/jbd/revoke.c
19 src/nls/nls_ascii.c
20 src/nls/nls_base.c
21 src/nls/nls_cp437.c
22 src/nls/nls_cp737.c
23 src/nls/nls_cp775.c
24 src/nls/nls_cp850.c
25 src/nls/nls_cp852.c
26 src/nls/nls_cp855.c
27 src/nls/nls_cp857.c
28 src/nls/nls_cp860.c
29 src/nls/nls_cp861.c
30 src/nls/nls_cp862.c
31 src/nls/nls_cp863.c
32 src/nls/nls_cp864.c
33 src/nls/nls_cp865.c
34 src/nls/nls_cp866.c
35 src/nls/nls_cp869.c
36 src/nls/nls_cp874.c
37 src/nls/nls_cp932.c
38 src/nls/nls_cp936.c
39 src/nls/nls_cp949.c
40 src/nls/nls_cp950.c
41 src/nls/nls_cp1250.c
42 src/nls/nls_cp1251.c
43 src/nls/nls_cp1255.c
44 src/nls/nls_euc-jp.c
45 src/nls/nls_iso8859-1.c
46 src/nls/nls_iso8859-2.c
47 src/nls/nls_iso8859-3.c
48 src/nls/nls_iso8859-4.c
49 src/nls/nls_iso8859-5.c
50 src/nls/nls_iso8859-6.c
51 src/nls/nls_iso8859-7.c
52 src/nls/nls_iso8859-9.c
53 src/nls/nls_iso8859-13.c
54 src/nls/nls_iso8859-14.c
55 src/nls/nls_iso8859-15.c
56 src/nls/nls_koi8-r.c
57 src/nls/nls_koi8-ru.c
58 src/nls/nls_koi8-u.c
59 src/nls/nls_utf8.c
60 src/access.c
61 src/block.c
62 src/cleanup.c
63 src/close.c
64 src/cmcb.c
65 src/create.c
66 src/debug.c
67 src/devctl.c
68 src/dirctl.c
69 src/dispatch.c
70 src/ea.c
71 src/except.c
72 src/fastio.c
73 src/fileinfo.c
74 src/flush.c
75 src/fsctl.c
76 src/linux.c
77 src/lock.c
78 src/memory.c
79 src/misc.c
80 src/nls.c
81 src/pnp.c
82 src/rbtree.c
83 src/read.c
84 src/shutdown.c
85 src/volinfo.c
86 src/write.c
87 inc/ext2fs.h)
88
89 add_library(ext2fs MODULE ${SOURCE} ext2fs.rc)
90
91 if(USE_CLANG_CL)
92 set_property(SOURCE src/create.c src/fileinfo.c src/memory.c src/read.c APPEND_STRING PROPERTY COMPILE_FLAGS " /fallback")
93 endif()
94
95 if(MSVC)
96 # Disable warnings: "unreferenced local variable", "initialized, but not used variable", "benign include"
97 if (NOT CLANG)
98 remove_target_compile_option(ext2fs "/we4101")
99 remove_target_compile_option(ext2fs "/we4189")
100 target_compile_options(ext2fs PRIVATE /wd4189 /wd4142 /wd4101)
101 endif()
102 else()
103 target_compile_options(ext2fs PRIVATE
104 -Wno-pointer-sign -Wno-unused-function
105 -Wno-unused-variable -Wno-missing-braces)
106 endif()
107
108 if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
109 target_compile_options(ext2fs PRIVATE -Wno-unused-but-set-variable)
110 endif()
111
112 if(CLANG)
113 target_compile_options(ext2fs PRIVATE
114 -Wno-unused-value -Wno-parentheses-equality
115 -Wno-incompatible-pointer-types-discards-qualifiers
116 "-Wno-#pragma-messages;-Wno-cast-calling-convention")
117 endif()
118
119 target_link_libraries(ext2fs memcmp ${PSEH_LIB})
120 add_definitions(-D__KERNEL__ -D_CRT_NO_POSIX_ERROR_CODES)
121 set_module_type(ext2fs kernelmodedriver)
122 add_importlibs(ext2fs ntoskrnl hal)
123
124 set_property(TARGET ext2fs PROPERTY C_STANDARD 90)
125
126 if(NOT USE_CLANG_CL)
127 # The fallback we have above prevents cl and clang-cl from using the same PCH
128 add_pch(ext2fs inc/ext2fs.h SOURCE)
129 endif()
130
131 add_cd_file(TARGET ext2fs DESTINATION reactos/system32/drivers FOR all)