aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2020-03-24 12:09:54 -0700
committerDylan Baker <dylan@pnwbakers.com>2020-04-30 10:38:55 -0700
commitfdd60225301731d5b696479eb091c01a2ea121e0 (patch)
treebabae95f81505683ab0ef3af2cd4359ad72fa52e
parentd8a3c777a62b18d33bbdbca0fd4954399e1ebc04 (diff)
downloadmeson-fdd60225301731d5b696479eb091c01a2ea121e0.zip
meson-fdd60225301731d5b696479eb091c01a2ea121e0.tar.gz
meson-fdd60225301731d5b696479eb091c01a2ea121e0.tar.bz2
interpreter: Add link_language to all build targets
If the feature hadn't been broken in the first place it would have worked on them anyway, so we might as well expose it. I'm loathe to do it because one of the best features of meson in a mixed C/C++ code base is that meson figures out the right linker every time, but there are cases people have where they want to force a linker. We'll let them keep the pieces.
-rw-r--r--mesonbuild/build.py3
-rwxr-xr-xrun_unittests.py3
-rw-r--r--test cases/common/232 link language/lib.cpp5
-rw-r--r--test cases/common/232 link language/meson.build6
4 files changed, 15 insertions, 2 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py
index 4a8e9cc..aff1d5f 100644
--- a/mesonbuild/build.py
+++ b/mesonbuild/build.py
@@ -82,6 +82,7 @@ buildtarget_kwargs = set([
'override_options',
'sources',
'gnu_symbol_visibility',
+ 'link_language',
])
known_build_target_kwargs = (
@@ -92,7 +93,7 @@ known_build_target_kwargs = (
rust_kwargs |
cs_kwargs)
-known_exe_kwargs = known_build_target_kwargs | {'implib', 'export_dynamic', 'link_language', 'pie'}
+known_exe_kwargs = known_build_target_kwargs | {'implib', 'export_dynamic', 'pie'}
known_shlib_kwargs = known_build_target_kwargs | {'version', 'soversion', 'vs_module_defs', 'darwin_versions'}
known_shmod_kwargs = known_build_target_kwargs | {'vs_module_defs'}
known_stlib_kwargs = known_build_target_kwargs | {'pic'}
diff --git a/run_unittests.py b/run_unittests.py
index 35f5f9c..c77c9c0 100755
--- a/run_unittests.py
+++ b/run_unittests.py
@@ -4647,7 +4647,7 @@ recommended as it is not supported on some platforms''')
if self.backend is not Backend.ninja:
raise unittest.SkipTest('This test reads the ninja file')
- testdir = os.path.join(self.common_test_dir, '230 link language')
+ testdir = os.path.join(self.common_test_dir, '232 link language')
self.init(testdir)
build_ninja = os.path.join(self.builddir, 'build.ninja')
@@ -4655,6 +4655,7 @@ recommended as it is not supported on some platforms''')
contents = f.read()
self.assertRegex(contents, r'build main(\.exe)?.*: c_LINKER')
+ self.assertRegex(contents, r'build (lib|cyg)?mylib.*: c_LINKER')
class FailureTests(BasePlatformTests):
diff --git a/test cases/common/232 link language/lib.cpp b/test cases/common/232 link language/lib.cpp
new file mode 100644
index 0000000..ab43828
--- /dev/null
+++ b/test cases/common/232 link language/lib.cpp
@@ -0,0 +1,5 @@
+extern "C" {
+ int makeInt(void) {
+ return 1;
+ }
+}
diff --git a/test cases/common/232 link language/meson.build b/test cases/common/232 link language/meson.build
index fdb3deb..f9af6cd 100644
--- a/test cases/common/232 link language/meson.build
+++ b/test cases/common/232 link language/meson.build
@@ -9,4 +9,10 @@ exe = executable(
link_language : 'c',
)
+lib = library(
+ 'mylib',
+ ['lib.cpp'],
+ link_language : 'c',
+)
+
test('main', exe)