Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 460b2d1

Browse files
committedOct 28, 2024··
feat: add tools.build:asmflags configuration setting for cmake toolchain
1 parent d1f6e8a commit 460b2d1

File tree

5 files changed

+22
-2
lines changed

5 files changed

+22
-2
lines changed
 

‎conan/tools/cmake/toolchain/blocks.py

+14-1
Original file line numberDiff line numberDiff line change
@@ -233,11 +233,12 @@ def context(self):
233233

234234
class ArchitectureBlock(Block):
235235
template = textwrap.dedent("""\
236-
# Define C++ flags, C flags and linker flags from 'settings.arch'
236+
# Define C++ flags, C flags, ASM flags and linker flags from 'settings.arch'
237237
238238
message(STATUS "Conan toolchain: Defining architecture flag: {{ arch_flag }}")
239239
string(APPEND CONAN_CXX_FLAGS " {{ arch_flag }}")
240240
string(APPEND CONAN_C_FLAGS " {{ arch_flag }}")
241+
string(APPEND CONAN_ASM_FLAGS " {{ arch_flag }}")
241242
string(APPEND CONAN_SHARED_LINKER_FLAGS " {{ arch_flag }}")
242243
string(APPEND CONAN_EXE_LINKER_FLAGS " {{ arch_flag }}")
243244
""")
@@ -343,6 +344,7 @@ class ParallelBlock(Block):
343344
344345
string(APPEND CONAN_CXX_FLAGS " /MP{{ parallel }}")
345346
string(APPEND CONAN_C_FLAGS " /MP{{ parallel }}")
347+
string(APPEND CONAN_ASM_FLAGS " /MP{{ parallel }}")
346348
""")
347349

348350
def context(self):
@@ -729,6 +731,9 @@ class ExtraFlagsBlock(Block):
729731
{% if cflags %}
730732
string(APPEND CONAN_C_FLAGS{{suffix}} "{% for cflag in cflags %} {{ cflag }}{% endfor %}")
731733
{% endif %}
734+
{% if asmflags %}
735+
string(APPEND CONAN_ASM_FLAGS{{suffix}} "{% for asmflag in asmflags %} {{ asmflag }}{% endfor %}")
736+
{% endif %}
732737
{% if sharedlinkflags %}
733738
string(APPEND CONAN_SHARED_LINKER_FLAGS{{suffix}} "{% for sharedlinkflag in sharedlinkflags %} {{ sharedlinkflag }}{% endfor %}")
734739
{% endif %}
@@ -783,6 +788,7 @@ def context(self):
783788
# Now, it's time to get all the flags defined by the user
784789
cxxflags = self._toolchain.extra_cxxflags + self._conanfile.conf.get("tools.build:cxxflags", default=[], check_type=list)
785790
cflags = self._toolchain.extra_cflags + self._conanfile.conf.get("tools.build:cflags", default=[], check_type=list)
791+
asmflags = self._toolchain.extra_asmflags + self._conanfile.conf.get("tools.build:asmflags", default=[], check_type=list)
786792
sharedlinkflags = self._toolchain.extra_sharedlinkflags + self._conanfile.conf.get("tools.build:sharedlinkflags", default=[], check_type=list)
787793
exelinkflags = self._toolchain.extra_exelinkflags + self._conanfile.conf.get("tools.build:exelinkflags", default=[], check_type=list)
788794
defines = self._conanfile.conf.get("tools.build:defines", default=[], check_type=list)
@@ -805,6 +811,7 @@ def context(self):
805811
"suffix": suffix,
806812
"cxxflags": cxxflags,
807813
"cflags": cflags,
814+
"asmflags": asmflags,
808815
"sharedlinkflags": sharedlinkflags,
809816
"exelinkflags": exelinkflags,
810817
"defines": [define.replace('"', '\\"') for define in defines]
@@ -823,6 +830,9 @@ class CMakeFlagsInitBlock(Block):
823830
if(DEFINED CONAN_C_FLAGS_${config})
824831
string(APPEND CMAKE_C_FLAGS_${config}_INIT " ${CONAN_C_FLAGS_${config}}")
825832
endif()
833+
if(DEFINED CONAN_ASM_FLAGS_${config})
834+
string(APPEND CMAKE_ASM_FLAGS_${config}_INIT " ${CONAN_ASM_FLAGS_${config}}")
835+
endif()
826836
if(DEFINED CONAN_SHARED_LINKER_FLAGS_${config})
827837
string(APPEND CMAKE_SHARED_LINKER_FLAGS_${config}_INIT " ${CONAN_SHARED_LINKER_FLAGS_${config}}")
828838
endif()
@@ -837,6 +847,9 @@ class CMakeFlagsInitBlock(Block):
837847
if(DEFINED CONAN_C_FLAGS)
838848
string(APPEND CMAKE_C_FLAGS_INIT " ${CONAN_C_FLAGS}")
839849
endif()
850+
if(DEFINED CONAN_ASM_FLAGS)
851+
string(APPEND CMAKE_ASM_FLAGS_INIT " ${CONAN_ASM_FLAGS}")
852+
endif()
840853
if(DEFINED CONAN_SHARED_LINKER_FLAGS)
841854
string(APPEND CMAKE_SHARED_LINKER_FLAGS_INIT " ${CONAN_SHARED_LINKER_FLAGS}")
842855
endif()

‎conan/tools/cmake/toolchain/toolchain.py

+1
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ def __init__(self, conanfile, generator=None):
9191

9292
self.extra_cxxflags = []
9393
self.extra_cflags = []
94+
self.extra_asmflags = []
9495
self.extra_sharedlinkflags = []
9596
self.extra_exelinkflags = []
9697

‎conans/model/conf.py

+1
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@
122122
"tools.build:compiler_executables": "Defines a Python dict-like with the compilers path to be used. Allowed keys {'c', 'cpp', 'cuda', 'objc', 'objcxx', 'rc', 'fortran', 'asm', 'hip', 'ispc'}",
123123
"tools.build:cxxflags": "List of extra CXX flags used by different toolchains like CMakeToolchain, AutotoolsToolchain and MesonToolchain",
124124
"tools.build:cflags": "List of extra C flags used by different toolchains like CMakeToolchain, AutotoolsToolchain and MesonToolchain",
125+
"tools.build:asmflags": "List of extra assembly flags used by different toolchains like CMakeToolchain, AutotoolsToolchain and MesonToolchain",
125126
"tools.build:defines": "List of extra definition flags used by different toolchains like CMakeToolchain, AutotoolsToolchain and MesonToolchain",
126127
"tools.build:sharedlinkflags": "List of extra flags used by CMakeToolchain for CMAKE_SHARED_LINKER_FLAGS_INIT variable",
127128
"tools.build:exelinkflags": "List of extra flags used by CMakeToolchain for CMAKE_EXE_LINKER_FLAGS_INIT variable",

‎test/integration/configuration/conf/test_conf.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ def test_composition_conan_conf_different_data_types_by_cli_arg(client):
170170
"""
171171
Testing if you want to introduce a list/dict via cli
172172
173-
>> conan install . -c "tools.build.flags:ccflags+=['-Werror']"
173+
>> conan install . -c "tools.build:cflags+=['-Werror']"
174174
>> conan install . -c "tools.microsoft.msbuildtoolchain:compile_options={'ExceptionHandling': 'Async'}"
175175
176176
"""

‎test/integration/toolchains/cmake/test_cmaketoolchain.py

+5
Original file line numberDiff line numberDiff line change
@@ -498,6 +498,7 @@ def test_extra_flags_via_conf():
498498
[conf]
499499
tools.build:cxxflags=["--flag1", "--flag2"]
500500
tools.build:cflags+=["--flag3", "--flag4"]
501+
tools.build:asmflags+=["--flag3", "--flag4"]
501502
tools.build:sharedlinkflags=+["--flag5", "--flag6"]
502503
tools.build:exelinkflags=["--flag7", "--flag8"]
503504
tools.build:defines=["D1", "D2"]
@@ -513,6 +514,7 @@ def test_extra_flags_via_conf():
513514
toolchain = client.load("conan_toolchain.cmake")
514515
assert 'string(APPEND CONAN_CXX_FLAGS " --flag1 --flag2")' in toolchain
515516
assert 'string(APPEND CONAN_C_FLAGS " --flag3 --flag4")' in toolchain
517+
assert 'string(APPEND CONAN_ASM_FLAGS " --flag3 --flag4")' in toolchain
516518
assert 'string(APPEND CONAN_SHARED_LINKER_FLAGS " --flag5 --flag6")' in toolchain
517519
assert 'string(APPEND CONAN_EXE_LINKER_FLAGS " --flag7 --flag8")' in toolchain
518520
assert 'add_compile_definitions( "D1" "D2")' in toolchain
@@ -1327,6 +1329,7 @@ def generate(self):
13271329
tc = CMakeToolchain(self)
13281330
tc.extra_cxxflags = ["extra_cxxflags"]
13291331
tc.extra_cflags = ["extra_cflags"]
1332+
tc.extra_asmflags = ["extra_asmflags"]
13301333
tc.extra_sharedlinkflags = ["extra_sharedlinkflags"]
13311334
tc.extra_exelinkflags = ["extra_exelinkflags"]
13321335
tc.generate()
@@ -1336,6 +1339,7 @@ def generate(self):
13361339
[conf]
13371340
tools.build:cxxflags+=['cxxflags']
13381341
tools.build:cflags+=['cflags']
1342+
tools.build:asmflags+=['asmflags']
13391343
tools.build:sharedlinkflags+=['sharedlinkflags']
13401344
tools.build:exelinkflags+=['exelinkflags']
13411345
""")
@@ -1345,6 +1349,7 @@ def generate(self):
13451349

13461350
assert 'string(APPEND CONAN_CXX_FLAGS " extra_cxxflags cxxflags")' in toolchain
13471351
assert 'string(APPEND CONAN_C_FLAGS " extra_cflags cflags")' in toolchain
1352+
assert 'string(APPEND CONAN_ASM_FLAGS " extra_asmflags asmflags")' in toolchain
13481353
assert 'string(APPEND CONAN_SHARED_LINKER_FLAGS " extra_sharedlinkflags sharedlinkflags")' in toolchain
13491354
assert 'string(APPEND CONAN_EXE_LINKER_FLAGS " extra_exelinkflags exelinkflags")' in toolchain
13501355

0 commit comments

Comments
 (0)
Please sign in to comment.