aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/compilers/objc.py
AgeCommit message (Collapse)AuthorFilesLines
2024-05-23Refactor option classes to their own file.Jussi Pakkanen1-1/+2
2024-03-15Improve error messages for invalid option valuesCharles Brunet1-9/+8
By adding the option name to UserOption object, it is now possible to display the name of the affected option when the given option value is not valid. Fixes #12635
2024-03-15compilers: No need to pass exe_wrapper everywhereXavier Claessens1-7/+3
Places where compiler needs it already have access to Environment object and can use it directly. This fixes mypy complaining that not all compilers have self.exe_wrapper in run() method that got moved to base class.
2023-12-13Use SPDX-License-Identifier consistentlyDylan Baker1-11/+1
This replaces all of the Apache blurbs at the start of each file with an `# SPDX-License-Identifier: Apache-2.0` string. It also fixes existing uses to be consistent in capitalization, and to be placed above any copyright notices. This removes nearly 3000 lines of boilerplate from the project (only python files), which no developer cares to look at. SPDX is in common use, particularly in the Linux kernel, and is the recommended format for Meson's own `project(license: )` field
2023-06-26linkers: delay implementations import until detect is runEli Schwartz1-1/+1
This saves on a 1500-line import at startup and may be skipped entirely if no compiled languages are used. In exchange, we move the implementation to a new file that is imported instead. Followup to commit ab20eb5bbc21ae855bcd211131132d2778602bcf.
2022-11-27Add warning_level=everythingDavid Robillard1-3/+7
Adds a new maximum warning level that is roughly equivalent to "all warnings". This adds a way to use `/Wall` with MSVC (without the previous broken warning), `-Weverything` with clang, and almost all general warnings in GCC with strictness roughly equivalent to clang's `-Weverything`. The GCC case must be implemented by meson since GCC doesn't provide a similar option. To avoid maintenance headaches for meson, this warning level is defined objectively: all warnings are included except those that require specific values or are specific to particular language revisions. This warning level is mainly intended for new code, and it is expected (nearly guaranteed) that projects will need to add some suppressions to build cleanly with it. More commonly, it's just a handy way to occasionally take a look at what warnings are present with some compiler, in case anything interesting shows up you might want to enable in general. Since the warnings enabled at this level are inherently unstable with respect to compiler versions, it is intended for use by developers and not to be set as the default.
2022-10-25Compilers: Keep ccache and exelist separatedXavier Claessens1-6/+6
Only combine them in the Compiler base class, this will make easier to run compiler without ccache.
2022-07-03move various unused typing-only imports into type-checking blocksEli Schwartz1-1/+3
2022-03-22OptionOverrideProxy: Make it immutable to avoid copiesXavier Claessens1-1/+1
It is always used as an immutable view so there is no point in doing copies. However, mypy insist it must implement the same APIs as Dict[OptionKey, UserOption[Any]] so keep faking it.
2021-09-10objc/objcpp compiler: accept all gnu stds corresponding to c/c++ stdsEli Schwartz1-1/+1
The clang compiler now reimplements and re-checks the c_std and cpp_std options in order to use them for objc as well, but it didn't consistently support the same options. First it completely excluded all the gnu ones, and then it added a handful of them but not for C++. Be fully consistent -- or at least as consistent as we can be, given a minimally working fix. (The C/C++ compiler mixin actually gates different stds depending on detected clang version, we do not do that here.) Fixes regression in c54dd63547b030e3d9feee694ec6f49c434f0df8 Fixes incomplete fix from #8766 (which didn't fix objcpp at all) Fixes #9237
2021-05-15Add gnuXX stds to Objective C.Jussi Pakkanen1-1/+1
2021-05-11Make objective C use C standard version. Closes #5495.Jussi Pakkanen1-1/+19
2021-05-02Clean up unused importsRalf Gommers1-2/+1
2021-05-02Use sanity_check_impl for objc/objppRalf Gommers1-23/+2
This gets rid of compile warnings, and simplifies the code. Note that `work_dir` in sanity_check_impl was incorrect, it was used both to prepend to file names and as cwd=work_dir argument to Popen. This is fixed here. Closes gh-7344
2021-03-19split program related classes and functions out of dependenciesDylan Baker1-1/+1
Dependencies is already a large and complicated package without adding programs to the list. This also allows us to untangle a bit of spaghetti that we have.
2021-01-04use OptionKey for compiler_optionsDylan Baker1-1/+1
2020-09-24compilers/objc: Add type annotationsDylan Baker1-14/+27
2020-09-24compilers: make is_cross part of the base Compiler classDylan Baker1-2/+2
Every class needs to set this, so it should be part of the base. For classes that require is_cross, the positional argument remains in their signature. For those that don't, they just allow the base class to set their value to it's default of False.
2020-08-22compilers: Add Apple subclasses for ObjC and ObjC++Dylan Baker1-0/+5
These are needed because in some cases we need to be able to know if we're using vanilla clang or Apple's clang.
2020-05-22compilers: add fetching of define list for clangYevhenii Kolesnikov1-1/+1
Simmilar to gcc, the list of pre-processor defines can be fetched with `-dM -E` option. The way cpu_family is determined on linux relies on this list. Fixes incorrect value of cpu_family on linux, when crosscompiling: ``` CC="clang -m32" meson ./build ``` Signed-off-by: Yevhenii Kolesnikov <yevhenii.kolesnikov@globallogic.com> Co-authored-by: Dylan Baker <dylan@pnwbakers.com>
2020-03-29compilers: Fix accidental coredata mutationsOle André Vadla RavnÄs1-1/+2
2020-01-08types: import typing as T (fixes #6333)Daniel Mensinger1-3/+3
2019-12-12compilers: Make get_display_language a class or static methodDylan Baker1-1/+2
Currently this is done at the instance level, but we need it at the class level to allow compiler "lang" args to be gotten early enough. This patch also removes a couple of instance of branch/leaf classes providing their own implementation that is identical to the Compiler version.
2019-12-12compilers: move language attribute to the class levelDylan Baker1-1/+3
We know that if a compiler class inherits CCompiler it's language will be C, so doing this at the class level makes more sense.
2019-11-18Use strict function prototypesMichael Hirsch, Ph.D1-1/+1
2019-10-07compilers: replace CompilerType with MachineInfoDylan Baker1-8/+20
Now that the linkers are split out of the compilers this enum is only used to know what platform we're compiling for. Which is what the MachineInfo class is for
2019-09-08fix objc freestanding sanitycheckNguyen, Giang (G. Yakiro)1-1/+1
2019-08-14compilers/objc[pp]: Pass extra keyword arguments to Compiler constructorDylan Baker1-6/+6
2019-07-15compilers: Put clang mixin in a moduleDylan Baker1-1/+2
2019-07-15compilers: split gnu and gnulike compilers out of compilersDylan Baker1-1/+2
I debated a bit whether both classes really belong in the same module, and decided that they do because the share a number of helpers.
2019-07-15compilers: Move clike into a mixins directoryDylan Baker1-1/+1
The compilers module is rather large and confusing, with spaghetti dependencies going every which way. I'm planning to start breaking out the internal representations into a mixins submodule, for things that shouldn't be required outside of the compilers module itself.
2019-07-14Do not fail on passing `-Werror=unused-parameter` from environmentDavid Seifert1-1/+1
2019-06-23compilers: Fix bitcode and other options for objc codeNirbheek Chauhan1-1/+0
We were setting the base options for the Objective-C compiler manually, due to which options such as b_bitcode and b_ndebug were not getting set at all. The base options here are the same as for C code with the Clang compiler, so just use the same inherited list. Also expand the bitcode test to ObjC and ObjC++ so this doesn't happen again.
2019-06-09Purge `is_cross` and friends without changing user interfacesJohn Ericson1-12/+8
In most cases instead pass `for_machine`, the name of the relevant machines (what compilers target, what targets run on, etc). This allows us to use the cross code path in the native case, deduplicating the code. As one can see, environment got bigger as more information is kept structured there, while ninjabackend got a smaller. Overall a few amount of lines were added, but the hope is what's added is a lot simpler than what's removed.
2019-05-03compilers: Split C-Like functionality into a mixin classesDylan Baker1-5/+7
Currently C++ inherits C, which can lead to diamond problems. By pulling the code out into a standalone mixin class that the C, C++, ObjC, and Objc++ compilers can inherit and override as necessary we remove one source of diamonding. I've chosen to split this out into it's own file as the CLikeCompiler class is over 1000 lines by itself. This also breaks the VisualStudio derived classes inheriting from each other, to avoid the same C -> CPP inheritance problems. This is all one giant patch because there just isn't a clean way to separate this. I've done the same for Fortran since it effectively inherits the CCompiler (I say effectively because was it actually did was gross beyond explanation), it's probably not correct, but it seems to work for now. There really is a lot of layering violation going on in the Compilers, and a really good scrubbing would do this code a lot of good.
2019-03-27Sanity check with external argsJohn Ericson1-2/+8
Previously cross, but not native, external args were used. Then in d451a4bd97f827bb492fd0c0e357cb20b6056ed9 the cross special cases were removed, so external args are never used. This commit switches that so they are always used. Sanity checking works just the same as compiler checks like has header / has library.
2019-02-19Add warning level zerojml17951-2/+4
2019-02-15Remove get_cross_extra_flagsJohn Ericson1-1/+1
This is no longer needed, we just remove conditionals around it.
2018-09-16Use enum instead of `int` for compiler variantsDavid Seifert1-6/+10
* Enums are strongly typed and make the whole `gcc_type`/`clang_type`/`icc_type` distinction redundant. * Enums also allow extending via member functions, which makes the code more generalisable.
2017-06-26Add 'Compiler.get_display_language'Guillaume Poirier-Morency1-0/+3
Use this when we print language-related information to the console and via the Ninja backend.
2017-06-23Split out languages from compilers.pyAlistair Thomas1-0/+64