@@ -80,36 +80,44 @@ def _fill_crossfile_from_toolchain_test(ctx):
8080 cxx_linker_static = "/cxx_linker_static" ,
8181 cxx_linker_executable = "ws/cxx_linker_executable" ,
8282 )
83- flags = CxxFlagsInfo (
84- cc = ["-cc-flag" , "-gcc_toolchain" , "cc-toolchain" ],
85- cxx = ["--quoted=\" abc def\" " , "--sysroot=/abc/sysroot" , "--gcc_toolchain" , "cxx-toolchain" ],
86- cxx_linker_shared = ["shared1" , "shared2" ],
87- cxx_linker_static = ["static" ],
88- cxx_linker_executable = ["executable" ],
89- assemble = ["assemble" ],
90- )
9183
92- res = export_for_test .fill_crossfile_from_toolchain ("ws" , tools , flags )
93-
94- expected = {
95- "CMAKE_AR" : "/cxx_linker_static" ,
96- "CMAKE_ASM_FLAGS_INIT" : "assemble" ,
97- "CMAKE_CXX_COMPILER" : "$${EXT_BUILD_ROOT//\\ \\ //}$$/external/cxx-value" ,
98- "CMAKE_CXX_COMPILER_EXTERNAL_TOOLCHAIN" : "cxx-toolchain" ,
99- # Quoted args are escaped when crossfile is written to a script in create_cmake_script
100- "CMAKE_CXX_FLAGS_INIT" : "--quoted=\" abc def\" --sysroot=/abc/sysroot --gcc_toolchain cxx-toolchain" ,
101- "CMAKE_CXX_LINK_EXECUTABLE" : "$${EXT_BUILD_ROOT//\\ \\ //}$$/ws/cxx_linker_executable <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>" ,
102- "CMAKE_C_COMPILER" : "/some-cc-value" ,
103- "CMAKE_C_COMPILER_EXTERNAL_TOOLCHAIN" : "cc-toolchain" ,
104- "CMAKE_C_FLAGS_INIT" : "-cc-flag -gcc_toolchain cc-toolchain" ,
105- "CMAKE_EXE_LINKER_FLAGS_INIT" : "executable" ,
106- "CMAKE_MODULE_LINKER_FLAGS_INIT" : "shared1 shared2" ,
107- "CMAKE_SHARED_LINKER_FLAGS_INIT" : "shared1 shared2" ,
108- "CMAKE_SYSROOT" : "/abc/sysroot" ,
84+ cases = {
85+ # format: target_os: (input_flags, expected_flags)
86+ "macos" : (["-shared" , "-dynamiclib" , "-bundle" ], ["-bundle" ]),
87+ "unknown" : (["shared1" , "shared2" ], ["shared1" , "shared2" ]),
10988 }
11089
111- for key in expected :
112- asserts .equals (env , expected [key ], res [key ])
90+ for target_os , inputs in cases .items ():
91+ flags = CxxFlagsInfo (
92+ cc = ["-cc-flag" , "-gcc_toolchain" , "cc-toolchain" ],
93+ cxx = ["--quoted=\" abc def\" " , "--sysroot=/abc/sysroot" , "--gcc_toolchain" , "cxx-toolchain" ],
94+ cxx_linker_shared = inputs [0 ],
95+ cxx_linker_static = ["static" ],
96+ cxx_linker_executable = ["executable" ],
97+ assemble = ["assemble" ],
98+ )
99+
100+ res = export_for_test .fill_crossfile_from_toolchain ("ws" , tools , flags , target_os )
101+
102+ expected = {
103+ "CMAKE_AR" : "/cxx_linker_static" ,
104+ "CMAKE_ASM_FLAGS_INIT" : "assemble" ,
105+ "CMAKE_CXX_COMPILER" : "$${EXT_BUILD_ROOT//\\ \\ //}$$/external/cxx-value" ,
106+ "CMAKE_CXX_COMPILER_EXTERNAL_TOOLCHAIN" : "cxx-toolchain" ,
107+ # Quoted args are escaped when crossfile is written to a script in create_cmake_script
108+ "CMAKE_CXX_FLAGS_INIT" : "--quoted=\" abc def\" --sysroot=/abc/sysroot --gcc_toolchain cxx-toolchain" ,
109+ "CMAKE_CXX_LINK_EXECUTABLE" : "$${EXT_BUILD_ROOT//\\ \\ //}$$/ws/cxx_linker_executable <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>" ,
110+ "CMAKE_C_COMPILER" : "/some-cc-value" ,
111+ "CMAKE_C_COMPILER_EXTERNAL_TOOLCHAIN" : "cc-toolchain" ,
112+ "CMAKE_C_FLAGS_INIT" : "-cc-flag -gcc_toolchain cc-toolchain" ,
113+ "CMAKE_EXE_LINKER_FLAGS_INIT" : "executable" ,
114+ "CMAKE_MODULE_LINKER_FLAGS_INIT" : " " .join (inputs [1 ]),
115+ "CMAKE_SHARED_LINKER_FLAGS_INIT" : " " .join (inputs [0 ]),
116+ "CMAKE_SYSROOT" : "/abc/sysroot" ,
117+ }
118+
119+ for key in expected :
120+ asserts .equals (env , expected [key ], res [key ])
113121
114122 return unittest .end (env )
115123
0 commit comments