Moved targets with same name into subdirs to make all tests pass.

pull/684/head
Jussi Pakkanen 8 years ago
parent 36870ace0f
commit a9da6c5132
  1. 21
      mesonbuild/backend/ninjabackend.py
  2. 15
      mesonbuild/compilers.py
  3. 8
      test cases/common/86 same basename/meson.build
  4. 1
      test cases/common/86 same basename/sharedsub/meson.build
  5. 3
      test cases/common/86 same basename/staticsub/meson.build

@ -1433,19 +1433,6 @@ rule FORTRAN_DEP_HACK
return []
return compiler.get_no_stdinc_args()
def get_pdb_name_suffix(self, target):
if isinstance(target, build.Executable):
suffix = '__exe'
elif isinstance(target, build.SharedLibrary):
suffix = '__dll'
elif isinstance(target, build.StaticLibrary):
suffix = '__lib'
else:
raise MesonException('Tried to build PDB for a non-buildtarget. Please file a bug.')
return suffix
def get_compile_debugfile_args(self, compiler, target, objfile):
if compiler.id != 'msvc':
return []
@ -1473,16 +1460,14 @@ rule FORTRAN_DEP_HACK
#
# If you feel that the above is completely wrong and all of this is
# actually doable, please send patches.
suffix = self.get_pdb_name_suffix(target)
if target.has_pch():
tfilename = self.get_target_filename_abs(target)
return compiler.get_compile_debugfile_args(tfilename, suffix)
return compiler.get_compile_debugfile_args(tfilename)
else:
return compiler.get_compile_debugfile_args(objfile, suffix)
return compiler.get_compile_debugfile_args(objfile)
def get_link_debugfile_args(self, linker, target, outname):
suffix = self.get_pdb_name_suffix(target)
return linker.get_link_debugfile_args(outname, suffix)
return linker.get_link_debugfile_args(outname)
def generate_single_compile(self, target, outfile, src, is_generated=False, header_deps=[], order_deps=[]):
if(isinstance(src, str) and src.endswith('.h')):

@ -354,10 +354,10 @@ class Compiler():
# Some compilers (msvc) write debug info to a separate file.
# These args specify where it should be written.
def get_compile_debugfile_args(self, rel_obj, fname_suffix):
def get_compile_debugfile_args(self, rel_obj):
return []
def get_link_debugfile_args(self, rel_obj, fname_suffix):
def get_link_debugfile_args(self, rel_obj):
return []
class CCompiler(Compiler):
@ -1607,15 +1607,13 @@ class VisualStudioCCompiler(CCompiler):
raise MesonException('Compiling test app failed.')
return not(warning_text in stde or warning_text in stdo)
def get_compile_debugfile_args(self, rel_obj, name_suffix):
def get_compile_debugfile_args(self, rel_obj):
pdbarr = rel_obj.split('.')[:-1]
pdbarr[-1] += name_suffix
pdbarr += ['pdb']
return ['/Fd' + '.'.join(pdbarr)]
def get_link_debugfile_args(self, targetfile, name_suffix):
def get_link_debugfile_args(self, targetfile):
pdbarr = targetfile.split('.')[:-1]
pdbarr[-1] += name_suffix
pdbarr += ['pdb']
return ['/DEBUG', '/PDB:' + '.'.join(pdbarr)]
@ -2295,9 +2293,8 @@ class VisualStudioLinker():
def unix_compile_flags_to_native(self, args):
return args[:]
def get_link_debugfile_args(self, targetfile, name_suffix):
def get_link_debugfile_args(self, targetfile):
pdbarr = targetfile.split('.')[:-1]
pdbarr[-1] += name_suffix
pdbarr += ['pdb']
return ['/DEBUG', '/PDB:' + '.'.join(pdbarr)]
@ -2350,5 +2347,5 @@ class ArLinker():
def unix_compile_flags_to_native(self, args):
return args[:]
def get_link_debugfile_args(self, targetfile, suffix):
def get_link_debugfile_args(self, targetfile):
return []

@ -1,13 +1,11 @@
project('same basename', 'c')
subdir('sharedsub')
subdir('staticsub')
# Use the same source file to check that each top level target
# has its own unique working directory. If they don't
# then the .o files will clobber each other.
shlib = shared_library('name', 'lib.c', c_args : '-DSHAR')
# On Windows a static lib is now libfoo.a, so it does not conflict with foo.lib
# from the shared library above
stlib = static_library('name', 'lib.c', c_args : '-DSTAT')
exe1 = executable('name', 'exe1.c', link_with : stlib)
exe2 = executable('name2', 'exe2.c', link_with : shlib)

@ -0,0 +1 @@
shlib = shared_library('name', '../lib.c', c_args : '-DSHAR')

@ -0,0 +1,3 @@
# On Windows a static lib is now libfoo.a, so it does not conflict with foo.lib
# from the shared library above
stlib = static_library('name', '../lib.c', c_args : '-DSTAT')
Loading…
Cancel
Save