meson/mesonbuild/compilers/__init__.py

259 lines
6.1 KiB
Python
Raw Normal View History

# Copyright 2017 The Meson development team
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
2017-06-23 07:42:41 +08:00
# Public symbols for compilers sub-package when using 'from . import compilers'
__all__ = [
2018-12-30 20:37:41 +08:00
'Compiler',
'RunResult',
2017-06-23 07:42:41 +08:00
'all_languages',
2017-06-23 07:42:41 +08:00
'base_options',
'clib_langs',
'clink_langs',
2017-06-23 07:42:41 +08:00
'c_suffixes',
'cpp_suffixes',
'get_base_compile_args',
'get_base_link_args',
'is_assembly',
'is_header',
'is_library',
'is_llvm_ir',
'is_object',
'is_source',
'is_known_suffix',
2017-06-23 07:42:41 +08:00
'lang_suffixes',
'LANGUAGES_USING_LDFLAGS',
'sort_clink',
'SUFFIX_TO_LANG',
2017-06-23 07:42:41 +08:00
'compiler_from_language',
'detect_compiler_for',
'detect_static_linker',
'detect_c_compiler',
'detect_cpp_compiler',
'detect_cuda_compiler',
'detect_fortran_compiler',
'detect_objc_compiler',
'detect_objcpp_compiler',
'detect_java_compiler',
'detect_cs_compiler',
'detect_vala_compiler',
'detect_rust_compiler',
'detect_d_compiler',
'detect_swift_compiler',
'AppleClangCCompiler',
'AppleClangCPPCompiler',
'AppleClangObjCCompiler',
'AppleClangObjCPPCompiler',
2018-05-13 22:36:58 +08:00
'ArmCCompiler',
'ArmCPPCompiler',
'ArmclangCCompiler',
'ArmclangCPPCompiler',
2017-06-23 07:42:41 +08:00
'CCompiler',
'ClangCCompiler',
'ClangCompiler',
'ClangCPPCompiler',
'ClangObjCCompiler',
'ClangObjCPPCompiler',
'ClangClCCompiler',
'ClangClCPPCompiler',
2017-06-23 07:42:41 +08:00
'CPPCompiler',
'DCompiler',
'DmdDCompiler',
'FortranCompiler',
'G95FortranCompiler',
'GnuCCompiler',
'ElbrusCCompiler',
2019-10-20 18:01:54 +08:00
'EmscriptenCCompiler',
2017-06-23 07:42:41 +08:00
'GnuCompiler',
'GnuLikeCompiler',
2017-06-23 07:42:41 +08:00
'GnuCPPCompiler',
'ElbrusCPPCompiler',
2019-10-20 18:01:54 +08:00
'EmscriptenCPPCompiler',
2017-06-23 07:42:41 +08:00
'GnuDCompiler',
'GnuFortranCompiler',
'ElbrusFortranCompiler',
2019-01-17 01:26:47 +08:00
'FlangFortranCompiler',
2017-06-23 07:42:41 +08:00
'GnuObjCCompiler',
'GnuObjCPPCompiler',
'IntelGnuLikeCompiler',
2019-05-01 06:53:50 +08:00
'IntelVisualStudioLikeCompiler',
2017-06-23 07:42:41 +08:00
'IntelCCompiler',
'IntelCPPCompiler',
2019-05-01 06:53:50 +08:00
'IntelClCCompiler',
'IntelClCPPCompiler',
2017-06-23 07:42:41 +08:00
'IntelFortranCompiler',
2019-05-01 06:53:50 +08:00
'IntelClFortranCompiler',
2017-06-23 07:42:41 +08:00
'JavaCompiler',
'LLVMDCompiler',
'MonoCompiler',
2019-01-29 04:34:57 +08:00
'CudaCompiler',
'VisualStudioCsCompiler',
2017-06-23 07:42:41 +08:00
'NAGFortranCompiler',
'ObjCCompiler',
'ObjCPPCompiler',
'Open64FortranCompiler',
'PathScaleFortranCompiler',
2020-07-13 12:16:52 +08:00
'NvidiaHPC_CCompiler',
'NvidiaHPC_CPPCompiler',
'NvidiaHPC_FortranCompiler',
2019-01-22 02:09:36 +08:00
'PGICCompiler',
'PGICPPCompiler',
2017-06-23 07:42:41 +08:00
'PGIFortranCompiler',
'RustCompiler',
'ClippyRustCompiler',
'CcrxCCompiler',
'CcrxCPPCompiler',
'Xc16CCompiler',
Add support for the CompCert C Compiler * Add preliminary support for the CompCert C Compiler The intention is to use this with the picolibc, so some GCC flags are automatically filtered. Since CompCert uses GCC is for linking, those GCC-linker flags which are used by picolibc, are automatically prefixed with '-WUl', so that they're passed to GCC. Squashed commit of the following: commit 4e0ad66dca9de301d2e41e74aea4142afbd1da7d Author: Sebastian Meyer <meyer@absint.com> Date: Mon Aug 31 14:20:39 2020 +0200 remove '-fall' from default arguments, also filter -ftls-model=.* commit 41afa3ccc62ae72824eb319cb8b34b7e6693cb67 Author: Sebastian Meyer <meyer@absint.com> Date: Mon Aug 31 14:13:55 2020 +0200 use regex for filtering ccomp args commit d68d242d0ad22f8bf53923ce849da9b86b696a75 Author: Sebastian Meyer <meyer@absint.com> Date: Mon Aug 31 13:54:36 2020 +0200 filter some gcc arguments commit 982a01756266bddbbd211c54e8dbfa2f43dec38f Author: Sebastian Meyer <meyer@absint.com> Date: Fri Aug 28 15:03:14 2020 +0200 fix ccomp meson configuration commit dce0bea00b1caa094b1ed0c6c77cf6c12f0f58d9 Author: Sebastian Meyer <meyer@absint.com> Date: Thu Aug 27 13:02:19 2020 +0200 add CompCert to meson (does not fully work, yet) * remove unused import and s/cls/self/ fixes the two obvious LGTM warnings * CompCert: Do not ignore unsupported GCC flags Some are safe to ignore, however, as per https://github.com/mesonbuild/meson/pull/7674, they should not be ignored by meson itself. Instead the meson.build should take care to select only those which are actually supported by the compiler. * remove unused variable * Only add arguments once. * Apply suggestions from code review Co-authored-by: Dylan Baker <dylan@pnwbakers.com> * Remove erroneous ' ' from '-o {}'.format() As noticed by @dcbaker * added release note snippet for compcert * properly split parameters As suggested by @dcbaker, these parameters should be properly split into multiple strings. Co-authored-by: Dylan Baker <dylan@pnwbakers.com> * Update add_compcert_compiler.md Added a sentence about the state of the implementation (experimental); use proper markdown * properly separate arguments Co-authored-by: Dylan Baker <dylan@pnwbakers.com>
2020-09-16 02:51:21 +08:00
'CompCertCCompiler',
'C2000CCompiler',
'C2000CPPCompiler',
'TICCompiler',
'TICPPCompiler',
2017-06-23 07:42:41 +08:00
'SunFortranCompiler',
'SwiftCompiler',
'ValaCompiler',
'VisualStudioLikeCompiler',
2017-06-23 07:42:41 +08:00
'VisualStudioCCompiler',
'VisualStudioCPPCompiler',
2021-04-28 01:19:57 +08:00
'CythonCompiler',
2017-06-23 07:42:41 +08:00
]
# Bring symbols from each module into compilers sub-package namespace
from .compilers import (
2018-12-30 20:37:41 +08:00
Compiler,
RunResult,
all_languages,
2017-06-23 07:42:41 +08:00
base_options,
clib_langs,
clink_langs,
2017-06-23 07:42:41 +08:00
c_suffixes,
cpp_suffixes,
get_base_compile_args,
get_base_link_args,
is_header,
is_source,
is_assembly,
is_llvm_ir,
is_object,
is_library,
is_known_suffix,
2017-06-23 07:42:41 +08:00
lang_suffixes,
LANGUAGES_USING_LDFLAGS,
sort_clink,
SUFFIX_TO_LANG,
2017-06-23 07:42:41 +08:00
)
from .detect import (
compiler_from_language,
detect_compiler_for,
detect_static_linker,
detect_c_compiler,
detect_cpp_compiler,
detect_cuda_compiler,
detect_objc_compiler,
detect_objcpp_compiler,
detect_fortran_compiler,
detect_java_compiler,
detect_cs_compiler,
detect_vala_compiler,
detect_rust_compiler,
detect_d_compiler,
detect_swift_compiler,
)
2017-06-23 07:42:41 +08:00
from .c import (
CCompiler,
AppleClangCCompiler,
ArmCCompiler,
ArmclangCCompiler,
2017-06-23 07:42:41 +08:00
ClangCCompiler,
ClangClCCompiler,
2017-06-23 07:42:41 +08:00
GnuCCompiler,
ElbrusCCompiler,
EmscriptenCCompiler,
2017-06-23 07:42:41 +08:00
IntelCCompiler,
2019-05-01 06:53:50 +08:00
IntelClCCompiler,
2020-07-13 12:16:52 +08:00
NvidiaHPC_CCompiler,
2019-01-22 02:09:36 +08:00
PGICCompiler,
CcrxCCompiler,
Xc16CCompiler,
Add support for the CompCert C Compiler * Add preliminary support for the CompCert C Compiler The intention is to use this with the picolibc, so some GCC flags are automatically filtered. Since CompCert uses GCC is for linking, those GCC-linker flags which are used by picolibc, are automatically prefixed with '-WUl', so that they're passed to GCC. Squashed commit of the following: commit 4e0ad66dca9de301d2e41e74aea4142afbd1da7d Author: Sebastian Meyer <meyer@absint.com> Date: Mon Aug 31 14:20:39 2020 +0200 remove '-fall' from default arguments, also filter -ftls-model=.* commit 41afa3ccc62ae72824eb319cb8b34b7e6693cb67 Author: Sebastian Meyer <meyer@absint.com> Date: Mon Aug 31 14:13:55 2020 +0200 use regex for filtering ccomp args commit d68d242d0ad22f8bf53923ce849da9b86b696a75 Author: Sebastian Meyer <meyer@absint.com> Date: Mon Aug 31 13:54:36 2020 +0200 filter some gcc arguments commit 982a01756266bddbbd211c54e8dbfa2f43dec38f Author: Sebastian Meyer <meyer@absint.com> Date: Fri Aug 28 15:03:14 2020 +0200 fix ccomp meson configuration commit dce0bea00b1caa094b1ed0c6c77cf6c12f0f58d9 Author: Sebastian Meyer <meyer@absint.com> Date: Thu Aug 27 13:02:19 2020 +0200 add CompCert to meson (does not fully work, yet) * remove unused import and s/cls/self/ fixes the two obvious LGTM warnings * CompCert: Do not ignore unsupported GCC flags Some are safe to ignore, however, as per https://github.com/mesonbuild/meson/pull/7674, they should not be ignored by meson itself. Instead the meson.build should take care to select only those which are actually supported by the compiler. * remove unused variable * Only add arguments once. * Apply suggestions from code review Co-authored-by: Dylan Baker <dylan@pnwbakers.com> * Remove erroneous ' ' from '-o {}'.format() As noticed by @dcbaker * added release note snippet for compcert * properly split parameters As suggested by @dcbaker, these parameters should be properly split into multiple strings. Co-authored-by: Dylan Baker <dylan@pnwbakers.com> * Update add_compcert_compiler.md Added a sentence about the state of the implementation (experimental); use proper markdown * properly separate arguments Co-authored-by: Dylan Baker <dylan@pnwbakers.com>
2020-09-16 02:51:21 +08:00
CompCertCCompiler,
C2000CCompiler,
TICCompiler,
2017-06-23 07:42:41 +08:00
VisualStudioCCompiler,
)
from .cpp import (
CPPCompiler,
AppleClangCPPCompiler,
ArmCPPCompiler,
ArmclangCPPCompiler,
2017-06-23 07:42:41 +08:00
ClangCPPCompiler,
ClangClCPPCompiler,
2017-06-23 07:42:41 +08:00
GnuCPPCompiler,
ElbrusCPPCompiler,
EmscriptenCPPCompiler,
2017-06-23 07:42:41 +08:00
IntelCPPCompiler,
2019-05-01 06:53:50 +08:00
IntelClCPPCompiler,
2020-07-13 12:16:52 +08:00
NvidiaHPC_CPPCompiler,
2019-01-22 02:09:36 +08:00
PGICPPCompiler,
CcrxCPPCompiler,
C2000CPPCompiler,
TICPPCompiler,
2017-06-23 07:42:41 +08:00
VisualStudioCPPCompiler,
)
from .cs import MonoCompiler, VisualStudioCsCompiler
2017-06-23 07:42:41 +08:00
from .d import (
DCompiler,
DmdDCompiler,
GnuDCompiler,
LLVMDCompiler,
)
2018-06-10 05:42:50 +08:00
from .cuda import CudaCompiler
2017-06-23 07:42:41 +08:00
from .fortran import (
FortranCompiler,
G95FortranCompiler,
GnuFortranCompiler,
ElbrusFortranCompiler,
2019-01-17 01:26:47 +08:00
FlangFortranCompiler,
2017-06-23 07:42:41 +08:00
IntelFortranCompiler,
2019-05-01 06:53:50 +08:00
IntelClFortranCompiler,
2017-06-23 07:42:41 +08:00
NAGFortranCompiler,
Open64FortranCompiler,
PathScaleFortranCompiler,
2020-07-13 12:16:52 +08:00
NvidiaHPC_FortranCompiler,
2017-06-23 07:42:41 +08:00
PGIFortranCompiler,
SunFortranCompiler,
)
from .java import JavaCompiler
from .objc import (
ObjCCompiler,
AppleClangObjCCompiler,
2017-06-23 07:42:41 +08:00
ClangObjCCompiler,
GnuObjCCompiler,
)
from .objcpp import (
ObjCPPCompiler,
AppleClangObjCPPCompiler,
2017-06-23 07:42:41 +08:00
ClangObjCPPCompiler,
GnuObjCPPCompiler,
)
from .rust import RustCompiler, ClippyRustCompiler
2017-06-23 07:42:41 +08:00
from .swift import SwiftCompiler
from .vala import ValaCompiler
from .mixins.visualstudio import VisualStudioLikeCompiler
from .mixins.gnu import GnuCompiler, GnuLikeCompiler
from .mixins.intel import IntelGnuLikeCompiler, IntelVisualStudioLikeCompiler
2019-07-03 06:14:48 +08:00
from .mixins.clang import ClangCompiler
2021-04-28 01:19:57 +08:00
from .cython import CythonCompiler