|
2 | 2 |
|
3 | 3 | import std; |
4 | 4 | import mcpp.manifest; |
| 5 | +import mcpp.platform; |
5 | 6 |
|
6 | 7 | TEST(Manifest, MinimalValid) { |
7 | 8 | constexpr auto src = R"( |
@@ -219,27 +220,51 @@ package = { |
219 | 220 | cflags = { "-DLINUX=1" }, |
220 | 221 | deps = { ["compat.x11"] = "1.8.13" }, |
221 | 222 | }, |
| 223 | + macosx = { |
| 224 | + sources = { "*/src/cocoa.m" }, |
| 225 | + include_dirs = { "*/src/macos" }, |
| 226 | + cflags = { "-DMACOS=1" }, |
| 227 | + deps = { ["compat.cocoa"] = "1.0.0" }, |
| 228 | + }, |
222 | 229 | windows = { |
223 | | - sources = { "*/src/win32.c" }, |
224 | | - cflags = { "-DWINDOWS=1" }, |
| 230 | + sources = { "*/src/win32.c" }, |
| 231 | + include_dirs = { "*/src/win32" }, |
| 232 | + cflags = { "-DWINDOWS=1" }, |
| 233 | + deps = { ["compat.win32"] = "1.0.0" }, |
225 | 234 | }, |
226 | 235 | }, |
227 | 236 | } |
228 | 237 | )"; |
229 | 238 | auto m = mcpp::manifest::synthesize_from_xpkg_lua(src, "tinyc", "1.0.0"); |
230 | 239 | ASSERT_TRUE(m.has_value()) << m.error().format(); |
231 | 240 |
|
| 241 | + std::string expectedSource = "*/src/linux.c"; |
| 242 | + std::string expectedInclude = "*/src/linux"; |
| 243 | + std::string expectedCflag = "-DLINUX=1"; |
| 244 | + std::string expectedDep = "compat.x11"; |
| 245 | + if constexpr (mcpp::platform::is_macos) { |
| 246 | + expectedSource = "*/src/cocoa.m"; |
| 247 | + expectedInclude = "*/src/macos"; |
| 248 | + expectedCflag = "-DMACOS=1"; |
| 249 | + expectedDep = "compat.cocoa"; |
| 250 | + } else if constexpr (mcpp::platform::is_windows) { |
| 251 | + expectedSource = "*/src/win32.c"; |
| 252 | + expectedInclude = "*/src/win32"; |
| 253 | + expectedCflag = "-DWINDOWS=1"; |
| 254 | + expectedDep = "compat.win32"; |
| 255 | + } |
| 256 | + |
232 | 257 | ASSERT_EQ(m->modules.sources.size(), 2u); |
233 | 258 | EXPECT_EQ(m->modules.sources[0], "*/src/common.c"); |
234 | | - EXPECT_EQ(m->modules.sources[1], "*/src/linux.c"); |
| 259 | + EXPECT_EQ(m->modules.sources[1], expectedSource); |
235 | 260 | ASSERT_EQ(m->buildConfig.includeDirs.size(), 2u); |
236 | 261 | EXPECT_EQ(m->buildConfig.includeDirs[0], "*/include"); |
237 | | - EXPECT_EQ(m->buildConfig.includeDirs[1], "*/src/linux"); |
| 262 | + EXPECT_EQ(m->buildConfig.includeDirs[1], expectedInclude); |
238 | 263 | ASSERT_EQ(m->buildConfig.cflags.size(), 2u); |
239 | 264 | EXPECT_EQ(m->buildConfig.cflags[0], "-DCOMMON=1"); |
240 | | - EXPECT_EQ(m->buildConfig.cflags[1], "-DLINUX=1"); |
| 265 | + EXPECT_EQ(m->buildConfig.cflags[1], expectedCflag); |
241 | 266 | EXPECT_EQ(m->dependencies.count("compat.base"), 1u); |
242 | | - EXPECT_EQ(m->dependencies.count("compat.x11"), 1u); |
| 267 | + EXPECT_EQ(m->dependencies.count(expectedDep), 1u); |
243 | 268 | } |
244 | 269 |
|
245 | 270 | TEST(SynthesizeFromXpkgLua, GeneratedFiles) { |
|
0 commit comments