Skip to content

Commit 70b0ff9

Browse files
committed
config: Move mbed config cmake file
The `MbedProgramFiles` contains list of files related to an Mbed program. When a new Mbed program gets created then `MbedProgramFiles` is instantiated. However, location of mbed config cmake file `mbed_config.cmake` is not known at this stage. Therefore, move `mbed_config.cmake` to config component where it'll be first used.
1 parent ce889dc commit 70b0ff9

File tree

6 files changed

+29
-30
lines changed

6 files changed

+29
-30
lines changed

news/20210210161209.major

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
config: move mbed config cmake `mbed_config.cmake` file from root to build directory.

src/mbed_tools/build/config.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
from mbed_tools.build._internal.write_files import write_file
1616
from mbed_tools.build.exceptions import MbedBuildError
1717

18+
CMAKE_CONFIG_FILE = "mbed_config.cmake"
19+
1820

1921
def generate_config(target_name: str, toolchain: str, program: MbedProgram) -> pathlib.Path:
2022
"""Generate an Mbed config file at the program root by parsing the mbed config system.
@@ -33,7 +35,7 @@ def generate_config(target_name: str, toolchain: str, program: MbedProgram) -> p
3335
cmake_file_contents = render_mbed_config_cmake_template(
3436
target_name=target_name, config=config, toolchain_name=toolchain,
3537
)
36-
cmake_config_file_path = program.files.cmake_config_file
38+
cmake_config_file_path = program.files.cmake_build_dir / CMAKE_CONFIG_FILE
3739
write_file(cmake_config_file_path, cmake_file_contents)
3840
return cmake_config_file_path
3941

src/mbed_tools/cli/configure.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
"--mbed-os-path", type=click.Path(), default=None, help="Path to local Mbed OS directory.",
3434
)
3535
def configure(toolchain: str, mbed_target: str, program_path: str, mbed_os_path: str) -> None:
36-
"""Exports a mbed_config.cmake file to a .mbedbuild directory in the program root.
36+
"""Exports a mbed_config.cmake file to build directory in the program root.
3737
3838
The parameters set in the CMake file will be dependent on the combination of
3939
toolchain and Mbed target provided and these can then control which parts of

src/mbed_tools/project/_internal/project_data.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
# Mbed program file names and constants.
2222
APP_CONFIG_FILE_NAME = "mbed_app.json"
2323
BUILD_DIR = "cmake_build"
24-
CMAKE_CONFIG_FILE_PATH = Path(".mbedbuild", "mbed_config.cmake")
2524
CMAKELISTS_FILE_NAME = "CMakeLists.txt"
2625
MAIN_CPP_FILE_NAME = "main.cpp"
2726
MBED_OS_REFERENCE_FILE_NAME = "mbed-os.lib"
@@ -51,14 +50,12 @@ class MbedProgramFiles:
5150
app_config_file: Path to mbed_app.json file. This can be `None` if the program doesn't set any custom config.
5251
mbed_os_ref: Library reference file for MbedOS. All programs require this file.
5352
cmakelists_file: A top-level CMakeLists.txt containing build definitions for the application.
54-
cmake_config_file: Path to the CMake configuration script.
5553
cmake_build_dir: The CMake build tree.
5654
"""
5755

5856
app_config_file: Optional[Path]
5957
mbed_os_ref: Path
6058
cmakelists_file: Path
61-
cmake_config_file: Path
6259
cmake_build_dir: Path
6360
custom_targets_json: Path
6461

@@ -79,7 +76,6 @@ def from_new(cls, root_path: Path) -> "MbedProgramFiles":
7976
cmakelists_file = root_path / CMAKELISTS_FILE_NAME
8077
main_cpp = root_path / MAIN_CPP_FILE_NAME
8178
gitignore = root_path / ".gitignore"
82-
cmake_config = root_path / CMAKE_CONFIG_FILE_PATH
8379
cmake_build_dir = root_path / BUILD_DIR
8480
custom_targets_json = root_path / CUSTOM_TARGETS_JSON_FILE_NAME
8581

@@ -95,7 +91,6 @@ def from_new(cls, root_path: Path) -> "MbedProgramFiles":
9591
app_config_file=app_config,
9692
mbed_os_ref=mbed_os_ref,
9793
cmakelists_file=cmakelists_file,
98-
cmake_config_file=cmake_config,
9994
cmake_build_dir=cmake_build_dir,
10095
custom_targets_json=custom_targets_json,
10196
)
@@ -126,7 +121,6 @@ def from_existing(cls, root_path: Path, build_subdir: Path) -> "MbedProgramFiles
126121
app_config_file=app_config,
127122
mbed_os_ref=mbed_os_file,
128123
cmakelists_file=cmakelists_file,
129-
cmake_config_file=root_path / CMAKE_CONFIG_FILE_PATH,
130124
cmake_build_dir=cmake_build_dir,
131125
custom_targets_json=custom_targets_json,
132126
)

tests/build/test_generate_config.py

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
from mbed_tools.project import MbedProgram
1010
from mbed_tools.build import generate_config
11+
from mbed_tools.build.config import CMAKE_CONFIG_FILE
1112
from mbed_tools.lib.exceptions import ToolsError
1213

1314

@@ -84,7 +85,7 @@ def test_target_and_toolchain_collected(program):
8485

8586
generate_config(target, toolchain, program)
8687

87-
config_text = program.files.cmake_config_file.read_text()
88+
config_text = (program.files.cmake_build_dir / CMAKE_CONFIG_FILE).read_text()
8889

8990
assert target in config_text
9091
assert toolchain in config_text
@@ -97,7 +98,7 @@ def test_custom_targets_data_found(program):
9798

9899
generate_config(target, toolchain, program)
99100

100-
config_text = program.files.cmake_config_file.read_text()
101+
config_text = (program.files.cmake_build_dir / CMAKE_CONFIG_FILE).read_text()
101102

102103
assert target in config_text
103104

@@ -125,7 +126,7 @@ def test_config_param_from_lib_processed_with_default_name_mangling(program):
125126

126127
generate_config("K64F", "GCC_ARM", program)
127128

128-
config_text = program.files.cmake_config_file.read_text()
129+
config_text = (program.files.cmake_build_dir / CMAKE_CONFIG_FILE).read_text()
129130

130131
assert "MBED_CONF_PLATFORM_STDIO_CONVERT_NEWLINES" in config_text
131132

@@ -145,7 +146,7 @@ def test_config_param_from_lib_processed_with_user_set_name(program):
145146

146147
generate_config("K64F", "GCC_ARM", program)
147148

148-
config_text = program.files.cmake_config_file.read_text()
149+
config_text = (program.files.cmake_build_dir / CMAKE_CONFIG_FILE).read_text()
149150

150151
assert "ENABLE_NEWLINES" in config_text
151152

@@ -163,15 +164,15 @@ def test_config_param_from_app_processed_with_default_name_mangling(program):
163164

164165
generate_config("K64F", "GCC_ARM", program)
165166

166-
config_text = program.files.cmake_config_file.read_text()
167+
config_text = (program.files.cmake_build_dir / CMAKE_CONFIG_FILE).read_text()
167168

168169
assert "MBED_CONF_APP_STDIO_CONVERT_NEWLINES" in config_text
169170

170171

171172
def test_config_param_from_target_processed_with_default_name_mangling(program):
172173
generate_config("K64F", "GCC_ARM", program)
173174

174-
config_text = program.files.cmake_config_file.read_text()
175+
config_text = (program.files.cmake_build_dir / CMAKE_CONFIG_FILE).read_text()
175176

176177
assert "MBED_CONF_TARGET_XIP_ENABLE=0" in config_text
177178

@@ -186,7 +187,7 @@ def test_macros_from_lib_collected(macros, program):
186187

187188
generate_config("K64F", "GCC_ARM", program)
188189

189-
config_text = program.files.cmake_config_file.read_text()
190+
config_text = (program.files.cmake_build_dir / CMAKE_CONFIG_FILE).read_text()
190191

191192
for macro in macros:
192193
assert macro in config_text
@@ -202,7 +203,7 @@ def test_macros_from_app_collected(macros, program):
202203

203204
generate_config("K64F", "GCC_ARM", program)
204205

205-
config_text = program.files.cmake_config_file.read_text()
206+
config_text = (program.files.cmake_build_dir / CMAKE_CONFIG_FILE).read_text()
206207

207208
for macro in macros:
208209
assert macro in config_text
@@ -211,7 +212,7 @@ def test_macros_from_app_collected(macros, program):
211212
def test_macros_from_target_collected(program):
212213
generate_config("K64F", "GCC_ARM", program)
213214

214-
config_text = program.files.cmake_config_file.read_text()
215+
config_text = (program.files.cmake_build_dir / CMAKE_CONFIG_FILE).read_text()
215216

216217
for macro in TARGET_DATA["macros"]:
217218
assert macro in config_text
@@ -220,7 +221,7 @@ def test_macros_from_target_collected(program):
220221
def test_target_labels_collected_as_defines(program):
221222
generate_config("K64F", "GCC_ARM", program)
222223

223-
config_text = program.files.cmake_config_file.read_text()
224+
config_text = (program.files.cmake_build_dir / CMAKE_CONFIG_FILE).read_text()
224225

225226
for label in TARGET_DATA["labels"] + TARGET_DATA["extra_labels"]:
226227
assert f"TARGET_{label}" in config_text
@@ -247,7 +248,7 @@ def test_overrides_lib_config_param_from_app(matching_target_and_filter, program
247248
create_mbed_app_json(program.root, target_overrides={target_filter: {"platform.stdio-baud-rate": 115200}})
248249
generate_config(target, "GCC_ARM", program)
249250

250-
config_text = program.files.cmake_config_file.read_text()
251+
config_text = (program.files.cmake_build_dir / CMAKE_CONFIG_FILE).read_text()
251252

252253
assert "MBED_CONF_PLATFORM_STDIO_BAUD_RATE=115200" in config_text
253254

@@ -258,7 +259,7 @@ def test_overrides_target_config_param_from_app(matching_target_and_filter, prog
258259

259260
generate_config(target, "GCC_ARM", program)
260261

261-
config_text = program.files.cmake_config_file.read_text()
262+
config_text = (program.files.cmake_build_dir / CMAKE_CONFIG_FILE).read_text()
262263

263264
assert "MBED_CONF_TARGET_XIP_ENABLE=1" in config_text
264265

@@ -284,7 +285,7 @@ def test_overrides_target_non_config_params_from_app(
284285

285286
generate_config(target, "GCC_ARM", program)
286287

287-
config_text = program.files.cmake_config_file.read_text()
288+
config_text = (program.files.cmake_build_dir / CMAKE_CONFIG_FILE).read_text()
288289

289290
assert expected_output in config_text
290291

@@ -299,7 +300,7 @@ def test_overrides_target_config_param_from_lib(matching_target_and_filter, prog
299300

300301
generate_config(target, "GCC_ARM", program)
301302

302-
config_text = program.files.cmake_config_file.read_text()
303+
config_text = (program.files.cmake_build_dir / CMAKE_CONFIG_FILE).read_text()
303304

304305
assert "MBED_CONF_TARGET_XIP_ENABLE=1" in config_text
305306

@@ -315,7 +316,7 @@ def test_overrides_lib_config_param_from_same_lib(matching_target_and_filter, pr
315316

316317
generate_config(target, "GCC_ARM", program)
317318

318-
config_text = program.files.cmake_config_file.read_text()
319+
config_text = (program.files.cmake_build_dir / CMAKE_CONFIG_FILE).read_text()
319320

320321
assert "MBED_CONF_PLATFORM_STDIO_BAUD_RATE=115200" in config_text
321322

@@ -354,7 +355,7 @@ def test_target_list_params_can_be_added_to(
354355

355356
generate_config(target, "GCC_ARM", program)
356357

357-
config_text = program.files.cmake_config_file.read_text()
358+
config_text = (program.files.cmake_build_dir / CMAKE_CONFIG_FILE).read_text()
358359

359360
for expected in expected_output:
360361
assert expected in config_text
@@ -379,7 +380,7 @@ def test_target_list_params_can_be_removed(
379380

380381
generate_config(target, "GCC_ARM", program)
381382

382-
config_text = program.files.cmake_config_file.read_text()
383+
config_text = (program.files.cmake_build_dir / CMAKE_CONFIG_FILE).read_text()
383384

384385
assert expected_output not in config_text
385386

@@ -407,7 +408,7 @@ def test_settings_from_multiple_libs_included(matching_target_and_filter, progra
407408

408409
generate_config(target, "GCC_ARM", program)
409410

410-
config_text = program.files.cmake_config_file.read_text()
411+
config_text = (program.files.cmake_build_dir / CMAKE_CONFIG_FILE).read_text()
411412

412413
assert "MBED_CONF_PLATFORM_STDIO_BAUD_RATE=9600" in config_text
413414
assert "MBED_LFS_READ_SIZE=64" in config_text
@@ -427,7 +428,7 @@ def test_requires_config_option(program):
427428

428429
generate_config("K64F", "GCC_ARM", program)
429430

430-
config_text = program.files.cmake_config_file.read_text()
431+
config_text = (program.files.cmake_build_dir / CMAKE_CONFIG_FILE).read_text()
431432

432433
assert "MBED_CONF_PLATFORM_STDIO_BAUD_RATE=9600" in config_text
433434
assert "MBED_LFS_READ_SIZE=64" not in config_text
@@ -451,7 +452,7 @@ def test_target_requires_config_option(program):
451452

452453
generate_config("K64F", "GCC_ARM", program)
453454

454-
config_text = program.files.cmake_config_file.read_text()
455+
config_text = (program.files.cmake_build_dir / CMAKE_CONFIG_FILE).read_text()
455456

456457
assert "MBED_CONF_PLATFORM_STDIO_BAUD_RATE=9600" in config_text
457458
assert "MBED_LFS_READ_SIZE=64" not in config_text

tests/cli/test_build.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
from click.testing import CliRunner
1313

1414
from mbed_tools.cli.build import build
15-
from mbed_tools.project._internal.project_data import BUILD_DIR, CMAKE_CONFIG_FILE_PATH
15+
from mbed_tools.project._internal.project_data import BUILD_DIR
16+
from mbed_tools.build.config import CMAKE_CONFIG_FILE
1617

1718

1819
DEFAULT_BUILD_ARGS = ["-t", "GCC_ARM", "-m", "K64F"]
@@ -28,7 +29,7 @@ def mock_project_directory(
2829
root.mkdir()
2930
program.root = root
3031
program.files.cmake_build_dir = root / BUILD_DIR / build_subdir
31-
program.files.cmake_config_file = root / CMAKE_CONFIG_FILE_PATH
32+
program.files.cmake_config_file = root / CMAKE_CONFIG_FILE
3233
if mbed_config_exists:
3334
program.files.cmake_config_file.parent.mkdir(exist_ok=True)
3435
program.files.cmake_config_file.touch(exist_ok=True)

0 commit comments

Comments
 (0)