aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Mensinger <daniel@mensinger-ka.de>2021-07-04 17:14:28 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2021-07-05 03:04:24 +0300
commit0d0f2cdafd7597ff84baf7a4790f3f016fe2337f (patch)
tree40c722bc84b3033fa3690fc82791f90926d81060
parent50f870e3619e2cea648258bcd72dbf35fbc8143f (diff)
downloadmeson-0d0f2cdafd7597ff84baf7a4790f3f016fe2337f.zip
meson-0d0f2cdafd7597ff84baf7a4790f3f016fe2337f.tar.gz
meson-0d0f2cdafd7597ff84baf7a4790f3f016fe2337f.tar.bz2
cmake: Only use the `cm_` prefix when it is actually required (fixes #8955)
-rw-r--r--mesonbuild/cmake/interpreter.py5
-rw-r--r--test cases/cmake/19 advanced options/test.json2
-rw-r--r--test cases/cmake/2 advanced/meson.build4
-rw-r--r--test cases/cmake/2 advanced/test.json2
-rw-r--r--test cases/cmake/3 advanced no dep/meson.build5
-rw-r--r--test cases/cmake/3 advanced no dep/subprojects/cmMod/CMakeLists.txt10
-rw-r--r--test cases/cmake/3 advanced no dep/test.json8
7 files changed, 22 insertions, 14 deletions
diff --git a/mesonbuild/cmake/interpreter.py b/mesonbuild/cmake/interpreter.py
index 745def1..fe66bec 100644
--- a/mesonbuild/cmake/interpreter.py
+++ b/mesonbuild/cmake/interpreter.py
@@ -26,6 +26,7 @@ from ..mesonlib import MachineChoice, OrderedSet, version_compare, path_is_in_ro
from ..mesondata import mesondata
from ..compilers.compilers import assembler_suffixes, lang_suffixes, header_suffixes, obj_suffixes, lib_suffixes, is_header
from ..programs import ExternalProgram
+from ..coredata import FORBIDDEN_TARGET_NAMES
from enum import Enum
from functools import lru_cache
from pathlib import Path
@@ -120,7 +121,9 @@ transfer_dependencies_from = ['header_only']
_cmake_name_regex = re.compile(r'[^_a-zA-Z0-9]')
def _sanitize_cmake_name(name: str) -> str:
name = _cmake_name_regex.sub('_', name)
- return 'cm_' + name
+ if name in FORBIDDEN_TARGET_NAMES or name.startswith('meson'):
+ name = 'cm_' + name
+ return name
class OutputTargetMap:
rm_so_version = re.compile(r'(\.[0-9]+)+$')
diff --git a/test cases/cmake/19 advanced options/test.json b/test cases/cmake/19 advanced options/test.json
index e2d9c05..71ea812 100644
--- a/test cases/cmake/19 advanced options/test.json
+++ b/test cases/cmake/19 advanced options/test.json
@@ -1,6 +1,6 @@
{
"installed": [
- {"type": "exe", "file": "usr/bin/cm_testEXE"}
+ {"type": "exe", "file": "usr/bin/testEXE"}
],
"tools": {
"cmake": ">=3.11"
diff --git a/test cases/cmake/2 advanced/meson.build b/test cases/cmake/2 advanced/meson.build
index a10db1c..b301bfe 100644
--- a/test cases/cmake/2 advanced/meson.build
+++ b/test cases/cmake/2 advanced/meson.build
@@ -21,3 +21,7 @@ test('test2', exe2)
# Test if we can also extract executables
assert(sub_pro.target_type('testEXE') == 'executable', 'The type must be executable for obvious reasons')
test('test3', sub_pro.target('testEXE'))
+
+# Test that we can add a new target with the same name as the CMake subproject
+exe4 = executable('testEXE', ['main.cpp'], dependencies: [sub_sta])
+test('test4', exe4)
diff --git a/test cases/cmake/2 advanced/test.json b/test cases/cmake/2 advanced/test.json
index e2d9c05..71ea812 100644
--- a/test cases/cmake/2 advanced/test.json
+++ b/test cases/cmake/2 advanced/test.json
@@ -1,6 +1,6 @@
{
"installed": [
- {"type": "exe", "file": "usr/bin/cm_testEXE"}
+ {"type": "exe", "file": "usr/bin/testEXE"}
],
"tools": {
"cmake": ">=3.11"
diff --git a/test cases/cmake/3 advanced no dep/meson.build b/test cases/cmake/3 advanced no dep/meson.build
index 0d1e127..f8f1836 100644
--- a/test cases/cmake/3 advanced no dep/meson.build
+++ b/test cases/cmake/3 advanced no dep/meson.build
@@ -14,5 +14,6 @@ test('test1', exe1)
test('test2', exe2)
# Test if we can also extract executables
-assert(sub_pro.target_type('testEXE') == 'executable', 'The type must be executable for obvious reasons')
-test('test3', sub_pro.target('testEXE'))
+assert(sub_pro.target_type('meson-testEXE') == 'executable', 'The type must be executable for obvious reasons')
+test('test3', sub_pro.target('meson-testEXE'))
+test('test4', sub_pro.target('benchmark'))
diff --git a/test cases/cmake/3 advanced no dep/subprojects/cmMod/CMakeLists.txt b/test cases/cmake/3 advanced no dep/subprojects/cmMod/CMakeLists.txt
index 026d4c1..d738d45 100644
--- a/test cases/cmake/3 advanced no dep/subprojects/cmMod/CMakeLists.txt
+++ b/test cases/cmake/3 advanced no dep/subprojects/cmMod/CMakeLists.txt
@@ -15,12 +15,12 @@ generate_export_header(cmModLib)
set_target_properties(cmModLib PROPERTIES VERSION 1.0.1)
-add_executable(testEXE main.cpp)
-add_executable(testEXE2 main.cpp)
+add_executable(meson-testEXE main.cpp)
+add_executable(benchmark main.cpp)
-target_link_libraries(testEXE cmModLib)
-target_link_libraries(testEXE2 cmModLib)
+target_link_libraries(meson-testEXE cmModLib)
+target_link_libraries(benchmark cmModLib)
target_compile_definitions(cmModLibStatic PUBLIC CMMODLIB_STATIC_DEFINE)
-install(TARGETS testEXE testEXE2 LIBRARY DESTINATION lib RUNTIME DESTINATION bin)
+install(TARGETS meson-testEXE benchmark LIBRARY DESTINATION lib RUNTIME DESTINATION bin)
diff --git a/test cases/cmake/3 advanced no dep/test.json b/test cases/cmake/3 advanced no dep/test.json
index 4b266c3..c27ed82 100644
--- a/test cases/cmake/3 advanced no dep/test.json
+++ b/test cases/cmake/3 advanced no dep/test.json
@@ -1,9 +1,9 @@
{
"installed": [
- {"type": "pdb", "file": "usr/bin/cm_testEXE"},
- {"type": "exe", "file": "usr/bin/cm_testEXE"},
- {"type": "pdb", "file": "usr/bin/cm_testEXE2"},
- {"type": "exe", "file": "usr/bin/cm_testEXE2"}
+ {"type": "pdb", "file": "usr/bin/cm_meson_testEXE"},
+ {"type": "exe", "file": "usr/bin/cm_meson_testEXE"},
+ {"type": "pdb", "file": "usr/bin/cm_benchmark"},
+ {"type": "exe", "file": "usr/bin/cm_benchmark"}
],
"tools": {
"cmake": ">=3.11"