aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2014-04-16 21:00:25 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2014-04-16 21:00:25 +0300
commit6579af34f3e0b4b93c2269f24613aefc48e419b7 (patch)
treee42234b49230ee80440ba927a25e88ee03daae7b
parentb626d017a2ceac9066bca0368be492ec7e4590d9 (diff)
downloadmeson-6579af34f3e0b4b93c2269f24613aefc48e419b7.zip
meson-6579af34f3e0b4b93c2269f24613aefc48e419b7.tar.gz
meson-6579af34f3e0b4b93c2269f24613aefc48e419b7.tar.bz2
Added build type specific link flags.
-rw-r--r--environment.py31
-rw-r--r--ninjabackend.py1
2 files changed, 32 insertions, 0 deletions
diff --git a/environment.py b/environment.py
index 1e24a41..9f88154 100644
--- a/environment.py
+++ b/environment.py
@@ -41,6 +41,16 @@ gnulike_buildtype_flags = {'plain' : [],
'release' : ['-O3'],
}
+gnulike_buildtype_linker_flags = {'plain' : [],
+ 'debug' : [],
+ 'debugoptimized' : [],
+ 'release' : ['-Wl,-O1']}
+
+msvc_buildtype_linker_flags = {'plain' : [],
+ 'debug' : [],
+ 'debugoptimized' : [],
+ 'release' : []}
+
class CCompiler():
def __init__(self, exelist, version, is_cross, exe_wrapper=None):
if type(exelist) == type(''):
@@ -666,6 +676,9 @@ class GnuCCompiler(CCompiler):
def get_buildtype_flags(self, buildtype):
return gnulike_buildtype_flags[buildtype]
+ def get_buildtype_linker_flags(self, buildtype):
+ return gnulike_buildtype_linker_flags[buildtype]
+
def get_pch_suffix(self):
return 'gch'
@@ -693,6 +706,9 @@ class GnuObjCCompiler(ObjCCompiler):
def get_buildtype_flags(self, buildtype):
return gnulike_buildtype_flags[buildtype]
+ def get_buildtype_linker_flags(self, buildtype):
+ return gnulike_buildtype_linker_flags[buildtype]
+
def get_pch_suffix(self):
return 'gch'
@@ -718,6 +734,9 @@ class GnuObjCPPCompiler(ObjCPPCompiler):
def get_buildtype_flags(self, buildtype):
return gnulike_buildtype_flags[buildtype]
+ def get_buildtype_linker_flags(self, buildtype):
+ return gnulike_buildtype_linker_flags[buildtype]
+
def get_pch_suffix(self):
return 'gch'
@@ -752,6 +771,9 @@ class ClangCCompiler(CCompiler):
def get_buildtype_flags(self, buildtype):
return gnulike_buildtype_flags[buildtype]
+ def get_buildtype_linker_flags(self, buildtype):
+ return gnulike_buildtype_linker_flags[buildtype]
+
def get_pch_suffix(self):
return 'pch'
@@ -782,6 +804,9 @@ class GnuCPPCompiler(CPPCompiler):
def get_buildtype_flags(self, buildtype):
return gnulike_buildtype_flags[buildtype]
+ def get_buildtype_linker_flags(self, buildtype):
+ return gnulike_buildtype_linker_flags[buildtype]
+
def get_pch_suffix(self):
return 'gch'
@@ -806,6 +831,9 @@ class ClangCPPCompiler(CPPCompiler):
def get_buildtype_flags(self, buildtype):
return gnulike_buildtype_flags[buildtype]
+ def get_buildtype_linker_flags(self, buildtype):
+ return gnulike_buildtype_linker_flags[buildtype]
+
def get_pch_suffix(self):
return 'pch'
@@ -858,6 +886,9 @@ class ArLinker():
def get_output_flags(self, target):
return [target]
+ def get_buildtype_linker_flags(self, buildtype):
+ return []
+
def get_linker_always_flags(self):
return []
diff --git a/ninjabackend.py b/ninjabackend.py
index 2a850be..02c849f 100644
--- a/ninjabackend.py
+++ b/ninjabackend.py
@@ -729,6 +729,7 @@ class NinjaBackend(backends.Backend):
abspath = os.path.join(self.environment.get_build_dir(), target.subdir)
commands = []
commands += linker.get_linker_always_flags()
+ commands += linker.get_buildtype_linker_flags(self.environment.coredata.buildtype)
if isinstance(target, build.Executable):
commands += linker.get_std_exe_link_flags()
elif isinstance(target, build.SharedLibrary):