summaryrefslogtreecommitdiff
path: root/mesonbuild/compilers.py
Commit message (Collapse)AuthorAgeFilesLines
* Add a new compiler object method: has_members (#723)Nirbheek Chauhan2016-08-271-7/+12
| | | | | | | | | | | | * Add a new compiler object method: has_members Identical to 'cc.has_member', except that this takes multiple members and all of them must exist else it returns false. This is useful when you want to verify that a structure has all of a given set of fields. Individually checking each member is horrifying. * Fix typo in exceptions for has_member(s)
* Make D compilers return colored output by defaultMatthias Klumpp2016-08-221-0/+18
|
* Don't automatically override the -L flag of D compilersMatthias Klumpp2016-08-221-1/+16
| | | | Works around / resolves #702.
* Merge pull request #685 from ximion/masterJussi Pakkanen2016-08-211-1/+252
|\ | | | | Implement D support
| * interpreter: Rename get_unittest_flag() to unittest_args()Matthias Klumpp2016-08-211-2/+2
| |
| * Simplify D compiler argument translationMatthias Klumpp2016-08-211-66/+32
| |
| * Allow build definitions to retrieve the unittest flag of a D compilerMatthias Klumpp2016-08-201-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | D allows programmers to define their tests alongside the actual code in a unittest scope[1]. When compiled with a special flag, the compiler will build a binary containing the tests instead of the actual application. This is a strightforward and easy way to run tests and works well with Mesons test() command. Since using just one flag name to enable unittest mode would be too boring, compiler developers invented multiple ones. Adding this helper method makes it easy for people writing Meson build descriptions for D projects to enable unittestmode. [1]: https://dlang.org/spec/unittest.html
| * Implement D supportMatthias Klumpp2016-08-191-1/+280
| | | | | | | | | | | | | | | | | | | | | | This patch adds support for the D programming language[1] to Meson. The following compilers are supported: * LDC * GDC * DMD [1]: http://dlang.org/
* | No fpic on Windows C++. Closes #690.Jussi Pakkanen2016-08-201-0/+5
|/
* compilers: Always return a copy of the exelistNirbheek Chauhan2016-08-121-7/+7
| | | | The consumer might append to it, which will mess up the original object
* Add option for as-needed link option.Jussi Pakkanen2016-08-021-0/+14
|
* Merge pull request #417 from nirbheek/dll-pathsJussi Pakkanen2016-07-131-0/+35
|\ | | | | Fix filenames and paths used in DLL shared library generation
| * Overhaul versioning and naming of librariesNirbheek Chauhan2016-07-011-0/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit contains several changes to the naming and versioning of shared and static libraries. The details are documented at: https://github.com/mesonbuild/meson/pull/417 Here's a brief summary: * The results of binary and compiler detection via environment functions are now cached so that they can be called repeatedly without performance penalty. This is necessary because every build.SharedLibrary object has to know whether the compiler is MSVC or not (output filenames depend on that), and so the compiler detection has to be called for each object instantiation. * Linux shared libraries don't always have a library version. Sometimes only soversions are specified (and vice-versa), so support both. * Don't use versioned filenames when generating DLLs, DLLs are never versioned using the suffix in the way that .so libraries are. Hence, they don't use "aliases". Only Linux shared libraries use those. * OS X dylibs do not use filename aliases at all. They only use the soversion in the dylib name (libfoo.X.dylib), and that's it. If there's no soversion specified, the dylib is called libfoo.dylib. Further versioning in dylibs is supposed to be done with the -current_version argument to clang, but this is TBD. https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/DynamicLibraryDesignGuidelines.html#//apple_ref/doc/uid/TP40002013-SW23 * Install DLLs into bindir and import libraries into libdir * Static libraries are now always called libfoo.a, even with MSVC * .lib import libraries are always generated when building with MSVC * .dll.a import libraries are always generated when building with MinGW/GCC or MinGW/clang * TODO: Use dlltool if available to generate .dll.a when .lib is generated and vice-versa. * Library and executable suffix/prefixes are now always correctly overriden by the values of the 'name_prefix' and 'name_suffix' keyword arguments.
* | Gcc versions older than 4.9 do not support color output.Jussi Pakkanen2016-07-011-2/+6
| |
* | Enable colored output with GCC. Ninja redirects stdout/stderr so by default ↵Jussi Pakkanen2016-07-011-2/+24
|/ | | | GCC thinks it is not talking to a terminal.
* GnuCPPCompiler: allow usage of GNU extensions (#619)Zhe Wang2016-06-271-1/+2
| | | | | | * GnuCPPCompiler: allow usage of GNU extensions * Add myself to authors.txt
* Don't pass pdb flags while linking inside compiler tests (#614)Nirbheek Chauhan2016-06-241-7/+22
| | | | | | | | | | | | This causes intermittent build failures in the MSVC CI because of a race with the default anti-virus that ships with Windows while writing the .pdb file: https://ci.appveyor.com/project/jpakkane/meson/build/1.0.58 There's a separate fix for that in the works that will fix this in the general case, but for compiler tests we don't need to generate the pdb file at all. So, just fetch the CRT flag (/MDd) if needed instead. This has the side-effect of making compiler tests that use self.links and self.run faster.
* Thank you ever so much Git.Jussi Pakkanen2016-06-241-1/+1
|
* Added minsize build type that optimizes for binary size.Jussi Pakkanen2016-06-231-8/+23
|
* Print full mesonlog on failed tests when run under CI.Jussi Pakkanen2016-06-231-6/+11
|
* compilers: Copy extra_args whenever we modify itNirbheek Chauhan2016-06-211-11/+13
| | | | Otherwise the changes ripple upstream and modify extra_args in the callee
* Do not use [] as a function default argument as the variable persists over ↵Jussi Pakkanen2016-06-211-12/+36
| | | | multiple invocations.
* find_library: Also accept extra_dirs as a single string argumentNirbheek Chauhan2016-06-211-0/+2
|
* Use cross-info c_args, c_link_args, etc for all compiler checksNirbheek Chauhan2016-06-151-53/+63
| | | | | | | | | | | | This allows the user to specify custom arguments to the compiler to be used while performing cross-compiler checks. For example, passing a GCC specs file as c_link_args so that a "prefix" filled with libraries that are to be compiled against can be found with cc.find_library, or an `-mcpu` c_arg that is required for compilation. Also ensure that unix_link_flags_to_native() and unix_compile_flags_to_native() always return a copy of the original arguments and not a reference to the original arguments. We never want to modify the original arguments.
* compilers: Fix usage of cross tools args in sanity checksNirbheek Chauhan2016-06-151-4/+4
| | | | | The cross-extra-flags were being overwritten and ignored. Also, we don't link while doing a cross-compiled sanity check even with ObjC++
* compiler: Use cross tools args in sanity check.Martin Hostettler2016-06-131-18/+50
|
* Add special casing for VS which ignores unknown arguments.Jussi Pakkanen2016-06-111-0/+21
|
* Added functionality to pick the first supported argument from a list. Closes ↵Jussi Pakkanen2016-06-091-2/+2
| | | | #583.
* Add a has_arg method to compiler to check whether it supports a given argument.Jussi Pakkanen2016-06-091-0/+8
|
* compilers: Add the buildtype args for checks that perform linking (#543)Nirbheek Chauhan2016-05-301-1/+8
| | | | | This is required for checking for compiler checks that involve linking to a static library with MSVC. Without this, MSVC errors out since no CRT is specified.
* Can haz next revision of C++ standard.Jussi Pakkanen2016-05-301-2/+2
|
* Pch disabling works now.Jussi Pakkanen2016-05-301-1/+1
|
* set working dir for sanity check compilationNicolas Schneider2016-05-261-1/+1
|
* compilers: Fix header stub change that broke has_function checks on Windows ↵Nirbheek Chauhan2016-05-261-1/+2
| | | | | | | (#559) Fixes https://github.com/mesonbuild/meson/issues/558
* Merge pull request #542 from mesonbuild/ownstdlibJussi Pakkanen2016-05-251-0/+6
|\ | | | | Build transparently with a custom standard library
| * Can specify a stdlib subproject that is used implicitly on all targets with ↵Jussi Pakkanen2016-05-211-0/+6
| | | | | | | | said language.
* | Merge pull request #540 from centricular/sanity_check_msvc_fixJussi Pakkanen2016-05-251-91/+28
|\ \ | | | | | | Fix the MSVC sanity check to use the generic C/C++ sanity check
| * | compilers: Remove duplication in sanity check implementationsNirbheek Chauhan2016-05-221-90/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Consolidate the C/C++ compiler sanity checks since the test code is almost exactly the same, and then use that for the MSVC C/C++ compilers as well. All these sanity checks had diverged because of the code duplication. This also fixes an intermittent sanity check failure that I was seeing with MSVC. Note: The ObjC/C++ compilers can also probably use the same implementation.
| * | compilers: Remove spurious wait while running sanity checkNirbheek Chauhan2016-05-181-1/+0
| | | | | | | | | | | | Popen.communicate() already waits for the process to complete.
* | | Merge pull request #547 from centricular/limits-h_needed_for_stubsJussi Pakkanen2016-05-251-0/+3
|\ \ \ | | | | | | | | compilers: Always include limits.h to make the stub machinery work
| * | | compilers: Always include limits.h to make the stub machinery workNirbheek Chauhan2016-05-241-0/+3
| |/ / | | | | | | | | | | | | | | | | | | limits.h is a requirement of the C language and is available with all compilers and platforms from the last two decades. If limits.h is not available, the compiler only supports an ancient dialect of C and lots of other things will break too.
* | | Option for GCC STL debug mode.Jussi Pakkanen2016-05-211-1/+6
|/ /
* | cc.has_function: Don't forget to check for stubs in the fallback testNirbheek Chauhan2016-05-161-3/+5
| | | | | | | | | | | | The fallback test was making the stub check on Linux/glibc completely useless. Fixes #535
* | has_function: Also detect function implementations inside headersNirbheek Chauhan2016-05-041-2/+14
| | | | | | | | | | | | This also detects when the header has re-defined the symbol to something else that is then provided by libc, which is also a case we want to support.
* | compilers: Remove outdated MSVC implementation of cc.find_libraryNirbheek Chauhan2016-04-191-13/+0
| | | | | | | | | | | | With the change to cc.links to translate unix link flags, this is no longer needed and is wrong because it hasn't kept-up with the improved default cc.find_library implementation.
* | compilers: Convert args to cc.{links,run} from unix to nativeNirbheek Chauhan2016-04-191-2/+3
| | | | | | | | | | This allows build files to pass -L and -l flags and have them converted automatically as needed.
* | Fix symbol-exists check for cross_sizeof and add the same check to ↵Nirbheek Chauhan2016-04-151-1/+9
| | | | | | | | | | | | | | cross_alignment The previous check was failing while checking pointer sizes such as void* due to a syntax error.
* | Fix off-by-one in cross_sizeof and cross_alignment on MSVCNirbheek Chauhan2016-04-151-0/+8
|/
* compilers: Fix cross_sizeof when the type doesn't exist (#514)Nirbheek Chauhan2016-04-141-1/+11
| | | compilers: Fix cross_sizeof when the type doesn't exist
* Merge pull request #490 from centricular/has_function_linkJussi Pakkanen2016-04-131-10/+61
|\ | | | | Use the linker to check if a specific function is provided by the toolchain or runtime