@@ -42,7 +42,8 @@ def __dir__() -> list[str]:
4242
4343def _make_editable (
4444 * ,
45- builder : Builder ,
45+ build_options : Sequence [str ] = (),
46+ install_options : Sequence [str ] = (),
4647 libdir : Path ,
4748 mapping : dict [str , str ],
4849 name : str ,
@@ -53,19 +54,14 @@ def _make_editable(
5354 modules = mapping_to_modules (mapping , libdir )
5455 installed = libdir_to_installed (libdir )
5556
56- options = []
57- if not builder .config .single_config and builder .config .build_type :
58- options += ["--config" , builder .config .build_type ]
59- ext_build_opts = ["-v" ] if builder .settings .cmake .verbose else []
60-
6157 editable_txt = editable_redirect (
6258 modules = modules ,
6359 installed = installed ,
6460 reload_dir = reload_dir ,
6561 rebuild = settings .editable .rebuild ,
6662 verbose = settings .editable .verbose ,
67- build_options = options + ext_build_opts ,
68- install_options = options ,
63+ build_options = build_options ,
64+ install_options = install_options ,
6965 )
7066
7167 wheel .writestr (
@@ -143,11 +139,21 @@ def _build_wheel_impl(
143139 if exit_after_config :
144140 state = "sdist"
145141
146- cmake = CMake .default_search (minimum_version = settings .cmake .minimum_version )
142+ if settings .wheel .cmake :
143+ cmake = CMake .default_search (minimum_version = settings .cmake .minimum_version )
144+ cmake_msg = [f"using [blue]CMake { cmake .version } [/blue]" ]
145+ else :
146+ cmake = None
147+ cmake_msg = []
148+
149+ if settings .wheel .platlib is None :
150+ targetlib = "platlib" if settings .wheel .cmake else "purelib"
151+ else :
152+ targetlib = "platlib" if settings .wheel .platlib else "purelib"
147153
148154 rich_print (
149155 f"[green]***[/green] [bold][green]scikit-build-core { __version__ } [/green]" ,
150- f"using [blue]CMake { cmake . version } [/blue]" ,
156+ * cmake_msg ,
151157 f"[red]({ state } )[/red]" ,
152158 )
153159
@@ -177,7 +183,7 @@ def _build_wheel_impl(
177183 logger .info ("Build directory: {}" , build_dir .resolve ())
178184
179185 wheel_dirs = {
180- "platlib" : wheel_dir / "platlib" ,
186+ targetlib : wheel_dir / targetlib ,
181187 "data" : wheel_dir / "data" ,
182188 "headers" : wheel_dir / "headers" ,
183189 "scripts" : wheel_dir / "scripts" ,
@@ -199,7 +205,7 @@ def _build_wheel_impl(
199205 raise AssertionError (msg )
200206 install_dir = wheel_dir / settings .wheel .install_dir [1 :]
201207 else :
202- install_dir = wheel_dirs ["platlib" ] / settings .wheel .install_dir
208+ install_dir = wheel_dirs [targetlib ] / settings .wheel .install_dir
203209
204210 license_files = {
205211 x : x .read_bytes ()
@@ -217,18 +223,6 @@ def _build_wheel_impl(
217223 gen .path .write_text (contents )
218224 settings .sdist .include .append (str (gen .path ))
219225
220- config = CMaker (
221- cmake ,
222- source_dir = settings .cmake .source_dir ,
223- build_dir = build_dir ,
224- build_type = settings .cmake .build_type ,
225- )
226-
227- builder = Builder (
228- settings = settings ,
229- config = config ,
230- )
231-
232226 if wheel_directory is None and not exit_after_config :
233227 if metadata_directory is None :
234228 msg = "metadata_directory must be specified if wheel_directory is None"
@@ -262,38 +256,60 @@ def _build_wheel_impl(
262256 path .parent .mkdir (parents = True , exist_ok = True )
263257 path .write_text (contents , encoding = "utf-8" )
264258
265- rich_print ("[green]***[/green] [bold]Configuring CMake..." )
266- defines : dict [str , str ] = {}
267- cache_entries : dict [str , str | Path ] = {
268- f"SKBUILD_{ k .upper ()} _DIR" : v for k , v in wheel_dirs .items ()
269- }
270- cache_entries ["SKBUILD_STATE" ] = state
271- builder .configure (
272- defines = defines ,
273- cache_entries = cache_entries ,
274- name = metadata .name ,
275- version = metadata .version ,
276- )
259+ build_options = []
260+ install_options = []
277261
278- if exit_after_config :
279- return WheelImplReturn ("" )
262+ if cmake is not None :
263+ config = CMaker (
264+ cmake ,
265+ source_dir = settings .cmake .source_dir ,
266+ build_dir = build_dir ,
267+ build_type = settings .cmake .build_type ,
268+ )
280269
281- assert wheel_directory is not None
270+ builder = Builder (
271+ settings = settings ,
272+ config = config ,
273+ )
282274
283- default_gen = (
284- "MSVC"
285- if sysconfig .get_platform ().startswith ("win" )
286- else "Default Generator"
287- )
288- generator = builder .get_generator () or default_gen
289- rich_print (
290- f"[green]***[/green] [bold]Building project with [blue]{ generator } [/blue]..."
291- )
292- build_args : list [str ] = []
293- builder .build (build_args = build_args )
275+ rich_print ("[green]***[/green] [bold]Configuring CMake..." )
276+ defines : dict [str , str ] = {}
277+ cache_entries : dict [str , str | Path ] = {
278+ f"SKBUILD_{ k .upper ()} _DIR" : v for k , v in wheel_dirs .items ()
279+ }
280+ cache_entries ["SKBUILD_STATE" ] = state
281+ builder .configure (
282+ defines = defines ,
283+ cache_entries = cache_entries ,
284+ name = metadata .name ,
285+ version = metadata .version ,
286+ )
287+
288+ if exit_after_config :
289+ return WheelImplReturn ("" )
294290
295- rich_print ("[green]***[/green] [bold]Installing project into wheel..." )
296- builder .install (install_dir )
291+ default_gen = (
292+ "MSVC"
293+ if sysconfig .get_platform ().startswith ("win" )
294+ else "Default Generator"
295+ )
296+ generator = builder .get_generator () or default_gen
297+ rich_print (
298+ f"[green]***[/green] [bold]Building project with [blue]{ generator } [/blue]..."
299+ )
300+ build_args : list [str ] = []
301+ builder .build (build_args = build_args )
302+
303+ rich_print ("[green]***[/green] [bold]Installing project into wheel..." )
304+ builder .install (install_dir )
305+
306+ if not builder .config .single_config and builder .config .build_type :
307+ build_options += ["--config" , builder .config .build_type ]
308+ install_options += ["--config" , builder .config .build_type ]
309+ if builder .settings .cmake .verbose :
310+ build_options .append ("-v" )
311+
312+ assert wheel_directory is not None
297313
298314 rich_print (f"[green]***[/green] [bold]Making { state } ..." )
299315 packages = _get_packages (
@@ -302,7 +318,7 @@ def _build_wheel_impl(
302318 )
303319 mapping = packages_to_file_mapping (
304320 packages = packages ,
305- platlib_dir = wheel_dirs ["platlib" ],
321+ platlib_dir = wheel_dirs [targetlib ],
306322 include = settings .sdist .include ,
307323 exclude = settings .sdist .exclude ,
308324 )
@@ -326,10 +342,11 @@ def _build_wheel_impl(
326342 reload_dir = build_dir .resolve () if settings .build_dir else None
327343
328344 _make_editable (
329- libdir = wheel_dirs ["platlib" ],
345+ build_options = build_options ,
346+ install_options = install_options ,
347+ libdir = wheel_dirs [targetlib ],
330348 mapping = mapping ,
331349 reload_dir = reload_dir ,
332- builder = builder ,
333350 settings = settings ,
334351 wheel = wheel ,
335352 name = normalized_name ,
0 commit comments