@@ -80,36 +80,44 @@ def _fill_crossfile_from_toolchain_test(ctx):
80
80
cxx_linker_static = "/cxx_linker_static" ,
81
81
cxx_linker_executable = "ws/cxx_linker_executable" ,
82
82
)
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
- )
91
83
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" ]),
109
88
}
110
89
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 ])
113
121
114
122
return unittest .end (env )
115
123
0 commit comments