pkgsrc/lang/Makefile

355 lines
6.3 KiB
Makefile
Raw Normal View History

# $NetBSD: Makefile,v 1.699 2023/10/06 19:15:19 adam Exp $
#
COMMENT= Programming languages
2004-08-18 23:14:58 +02:00
SUBDIR+= Cg-compiler
2013-07-17 22:08:26 +02:00
SUBDIR+= LuaJIT2
SUBDIR+= R-cpp11
2018-05-09 02:32:52 +02:00
SUBDIR+= R-sourcetools
2001-03-20 12:59:00 +01:00
SUBDIR+= STk
2001-05-15 23:22:27 +02:00
SUBDIR+= a60
2012-08-08 22:26:07 +02:00
SUBDIR+= abcl
2020-01-13 02:41:42 +01:00
SUBDIR+= adoptopenjdk11-bin
2011-10-11 14:45:11 +02:00
SUBDIR+= algol68g
SUBDIR+= asn1c
2022-04-14 19:36:20 +02:00
SUBDIR+= ats2
SUBDIR+= awka
SUBDIR+= baci
2010-12-18 13:47:31 +01:00
SUBDIR+= boomerang
SUBDIR+= brandybasic
SUBDIR+= bwbasic
SUBDIR+= caml-light
2007-12-01 13:57:31 +01:00
SUBDIR+= camlp5
2019-07-08 08:47:34 +02:00
SUBDIR+= cbmbasic
2004-03-07 18:18:58 +01:00
SUBDIR+= ccsh
2004-07-23 04:05:45 +02:00
SUBDIR+= cdl3
2020-05-09 21:07:43 +02:00
SUBDIR+= chibi-scheme
2002-08-20 16:54:00 +02:00
SUBDIR+= chicken
2018-12-21 13:35:59 +01:00
SUBDIR+= chicken5
SUBDIR+= chicken5-boot
SUBDIR+= cim
2009-11-17 00:28:05 +01:00
SUBDIR+= clang
SUBDIR+= clang-tools-extra
2003-06-24 15:37:28 +02:00
SUBDIR+= classpath
2004-03-28 22:35:22 +02:00
SUBDIR+= classpath-gui
SUBDIR+= clisp
2012-05-04 13:52:17 +02:00
SUBDIR+= clojure
SUBDIR+= compiler-rt
2003-03-22 21:23:04 +01:00
SUBDIR+= coq
2008-11-28 02:18:21 +01:00
SUBDIR+= cparser
2021-09-16 21:19:40 +02:00
SUBDIR+= csmith
2001-02-24 16:48:21 +01:00
SUBDIR+= cu-prolog
2022-02-23 17:58:43 +01:00
SUBDIR+= dhall
2016-05-05 06:00:09 +02:00
SUBDIR+= duktape
2004-05-17 20:40:51 +02:00
SUBDIR+= eag
2008-08-12 21:59:29 +02:00
SUBDIR+= ecl
2001-06-09 12:42:09 +02:00
SUBDIR+= eieio
SUBDIR+= elisp-manual
SUBDIR+= elixir
SUBDIR+= elk
2008-10-26 08:56:08 +01:00
SUBDIR+= embryo
2003-04-30 01:48:32 +02:00
SUBDIR+= erlang
2006-03-29 23:42:20 +02:00
SUBDIR+= erlang-doc
SUBDIR+= erlang-luerl
2006-03-29 23:42:20 +02:00
SUBDIR+= erlang-man
2021-01-27 17:14:16 +01:00
SUBDIR+= erlang21
2020-11-19 20:24:08 +01:00
SUBDIR+= execline
SUBDIR+= f2c
SUBDIR+= fennel
2010-12-01 22:59:28 +01:00
SUBDIR+= ficl
SUBDIR+= flang
2003-09-11 19:22:26 +02:00
SUBDIR+= focal
SUBDIR+= fort77
2018-01-27 12:00:51 +01:00
SUBDIR+= forth-retro
2006-11-21 14:47:24 +01:00
SUBDIR+= g95
SUBDIR+= gambc
2001-05-31 13:30:06 +02:00
SUBDIR+= gauche
SUBDIR+= gawk
2012-07-08 21:32:41 +02:00
SUBDIR+= gcc-aux
SUBDIR+= gcc10
SUBDIR+= gcc10-aux
2023-04-07 00:10:15 +02:00
SUBDIR+= gcc10-libjit
2020-09-02 18:15:05 +02:00
SUBDIR+= gcc10-libs
gcc12: added version 12.1.0 GCC 12 Caveats An ABI incompatibility between C and C++ when passing or returning by value certain aggregates containing zero width bit-fields has been discovered on various targets. As mentioned in PR102024, since the PR42217 fix in GCC 4.5 the C++ front-end has been removing zero width bit-fields from the internal representation of the aggregates after the layout of those aggregates, but the C front-end kept them, so passing e.g. struct S { float a; int : 0; float b; } or struct T { float c; int : 0; } by value could differ between C and C++. Starting with GCC 12 the C++ front-end no longer removes those bit-fields from the internal representation and per clarified psABI some targets have been changed, so that they either ignore those bit-fields in the argument passing by value decisions in both C and C++, or they always take them into account. x86-64, ARM and AArch64 will always ignore them (so there is a C ABI incompatibility between GCC 11 and earlier with GCC 12 or later), PowerPC64 ELFv2 and S/390 always take them into account (so there is a C++ ABI incompatibility, GCC 4.4 and earlier compatible with GCC 12 or later, incompatible with GCC 4.5 through GCC 11). RISC-V has changed the handling of these already starting with GCC 10. As the ABI requires, MIPS takes them into account handling function return values so there is a C++ ABI incompatibility with GCC 4.5 through 11. For function arguments on MIPS, refer to the MIPS specific entry. GCC 12 on the above targets will report such incompatibilities as warnings or other diagnostics unless -Wno-psabi is used. C: Computed gotos require a pointer type now. C++: Two non-standard std::pair constructors have been deprecated. These allowed the use of an rvalue and a literal 0 to construct a pair containing a move-only type and a pointer. The nullptr keyword should be used to initialize the pointer member instead of a literal 0, as this is portable to other C++ implementations. The configuration option --enable-libstdcxx-allocator no longer supports the bitmap, mt, and pool arguments. Those configurations had been broken for some time. Fortran: OpenMP code using the omp_lib.h include file can no longer be compiled with -std=f95 but now requires at least -std=f2003. Alternatively, use the omp_lib module, which still supports -std=f95 and is recommended to be used instead in general. OpenMP offloading to Intel MIC has been deprecated and will be removed in a future release. The cr16 target with the cr16-*-* configuration has been obsoleted and will be removed in a future release. The hppa[12]*-*-hpux10* and hppa[12]*-*-hpux11* configurations targeting 32-bit PA-RISC with HP-UX have been obsoleted and will be removed in a future release. The m32c*-*-rtems* configuration has been obsoleted and will be removed in a future release. The support for the m32r-*-linux*, m32rle-*-linux*, m68k*-*-openbsd* and vax-*-openbsd* configurations has been removed. STABS: Support for emitting the STABS debugging format is deprecated and will be removed in the next release. All ports now default to emit DWARF (version 2 or later) debugging info or are obsoleted. The optimization level -Ofast now implies -fno-semantic-interposition. General Improvements Vectorization is enabled at -O2 which is now equivalent to the original -O2 -ftree-vectorize -fvect-cost-model=very-cheap. Note that default vectorizer cost model has been changed which used to behave as -fvect-cost-model=cheap were specified. GCC now supports the ShadowCallStack sanitizer, which can be enabled using the command-line option -fsanitize=shadow-call-stack. This sanitizer currently only works on AArch64 targets and it requires an environment in which all code has been compiled with -ffixed-r18. Its primary initial user is the Linux kernel.
2022-06-16 17:43:54 +02:00
SUBDIR+= gcc12
2023-04-07 08:49:26 +02:00
SUBDIR+= gcc12-libjit
gcc12: added version 12.1.0 GCC 12 Caveats An ABI incompatibility between C and C++ when passing or returning by value certain aggregates containing zero width bit-fields has been discovered on various targets. As mentioned in PR102024, since the PR42217 fix in GCC 4.5 the C++ front-end has been removing zero width bit-fields from the internal representation of the aggregates after the layout of those aggregates, but the C front-end kept them, so passing e.g. struct S { float a; int : 0; float b; } or struct T { float c; int : 0; } by value could differ between C and C++. Starting with GCC 12 the C++ front-end no longer removes those bit-fields from the internal representation and per clarified psABI some targets have been changed, so that they either ignore those bit-fields in the argument passing by value decisions in both C and C++, or they always take them into account. x86-64, ARM and AArch64 will always ignore them (so there is a C ABI incompatibility between GCC 11 and earlier with GCC 12 or later), PowerPC64 ELFv2 and S/390 always take them into account (so there is a C++ ABI incompatibility, GCC 4.4 and earlier compatible with GCC 12 or later, incompatible with GCC 4.5 through GCC 11). RISC-V has changed the handling of these already starting with GCC 10. As the ABI requires, MIPS takes them into account handling function return values so there is a C++ ABI incompatibility with GCC 4.5 through 11. For function arguments on MIPS, refer to the MIPS specific entry. GCC 12 on the above targets will report such incompatibilities as warnings or other diagnostics unless -Wno-psabi is used. C: Computed gotos require a pointer type now. C++: Two non-standard std::pair constructors have been deprecated. These allowed the use of an rvalue and a literal 0 to construct a pair containing a move-only type and a pointer. The nullptr keyword should be used to initialize the pointer member instead of a literal 0, as this is portable to other C++ implementations. The configuration option --enable-libstdcxx-allocator no longer supports the bitmap, mt, and pool arguments. Those configurations had been broken for some time. Fortran: OpenMP code using the omp_lib.h include file can no longer be compiled with -std=f95 but now requires at least -std=f2003. Alternatively, use the omp_lib module, which still supports -std=f95 and is recommended to be used instead in general. OpenMP offloading to Intel MIC has been deprecated and will be removed in a future release. The cr16 target with the cr16-*-* configuration has been obsoleted and will be removed in a future release. The hppa[12]*-*-hpux10* and hppa[12]*-*-hpux11* configurations targeting 32-bit PA-RISC with HP-UX have been obsoleted and will be removed in a future release. The m32c*-*-rtems* configuration has been obsoleted and will be removed in a future release. The support for the m32r-*-linux*, m32rle-*-linux*, m68k*-*-openbsd* and vax-*-openbsd* configurations has been removed. STABS: Support for emitting the STABS debugging format is deprecated and will be removed in the next release. All ports now default to emit DWARF (version 2 or later) debugging info or are obsoleted. The optimization level -Ofast now implies -fno-semantic-interposition. General Improvements Vectorization is enabled at -O2 which is now equivalent to the original -O2 -ftree-vectorize -fvect-cost-model=very-cheap. Note that default vectorizer cost model has been changed which used to behave as -fvect-cost-model=cheap were specified. GCC now supports the ShadowCallStack sanitizer, which can be enabled using the command-line option -fsanitize=shadow-call-stack. This sanitizer currently only works on AArch64 targets and it requires an environment in which all code has been compiled with -ffixed-r18. Its primary initial user is the Linux kernel.
2022-06-16 17:43:54 +02:00
SUBDIR+= gcc12-libs
2023-05-03 22:04:23 +02:00
SUBDIR+= gcc13
SUBDIR+= gcc13-libjit
SUBDIR+= gcc13-libs
SUBDIR+= gcc2
2015-06-15 11:47:34 +02:00
SUBDIR+= gcc5-aux
add packages gcc6, gcc6-libs (GCC 6.2.0), based on wip/gcc6snapshot XXX add logic to mk/compiler/gcc.mk Changes from GCC5 series: Caveats The default mode for C++ is now -std=gnu++14 instead of -std=gnu++98. Support for a number of older systems and recently unmaintained or untested target ports of GCC has been declared obsolete in GCC 6. Unless there is activity to revive them, the next release of GCC will have their sources permanently removed. The following ports for individual systems on particular architectures have been obsoleted: SH5 / SH64 (sh64-*-*) as announced here. The AVR port requires binutils version 2.26.1 or later for the fix for PR71151 to work. General Optimizer Improvements UndefinedBehaviorSanitizer gained a new sanitization option, -fsanitize=bounds-strict, which enables strict checking of array bounds. In particular, it enables -fsanitize=bounds as well as instrumentation of flexible array member-like arrays. Type-based alias analysis now disambiguates accesses to different pointers. This improves precision of the alias oracle by about 20-30% on higher-level C++ programs. Programs doing invalid type punning of pointer types may now need -fno-strict-aliasing to work correctly. Alias analysis now correctly supports weakref and alias attributes. This makes it possible to access both a variable and its alias in one translation unit which is common with link-time optimization. Value range propagation now assumes that the this pointer of C++ member functions is non-null. This eliminates common null pointer checks but also breaks some non-conforming code-bases (such as Qt-5, Chromium, KDevelop). As a temporary work-around -fno-delete-null-pointer-checks can be used. Wrong code can be identified by using -fsanitize=undefined. Link-time optimization improvements: warning and error attributes are now correctly preserved by declaration linking and thus -D_FORTIFY_SOURCE=2 is now supported with -flto. Type merging was fixed to handle C and Fortran interoperability rules as defined by the Fortran 2008 language standard. As an exception, CHARACTER(KIND=C_CHAR) is not inter-operable with char in all cases because it is an array while char is scalar. INTEGER(KIND=C_SIGNED_CHAR) should be used instead. In general, this inter-operability cannot be implemented, for example, on targets where function passing conventions of arrays differs from scalars. More type information is now preserved at link time reducing the loss of accuracy of the type based alias analysis compared to builds without link-time optimization. Invalid type punning on global variables and declarations is now reported with -Wodr-type-mismatch. The size of LTO object files was reduced by about 11% (measured by compiling Firefox 46.0). Link-time parallelization (enabled using -flto=n) was significantly improved by decreasing the size of streamed data when partitioning programs. The size of streamed IL while compiling Firefox 46.0 was reduced by 66%. The linker plugin was extended to pass information about type of binary produced to GCC back end (that can be also manually controlled by -flinker-output). This makes it possible to properly configure the code generator and support incremental linking. Incremental linking of LTO objects by gcc -r is now supported on plugin-enabled setups. There are two ways to perform incremental linking: Linking by ld -r will result in an object file with all sections from individual object files mechanically merged. This delays the actual link time optimization to final linking step and thus permits whole program optimization. Linking final binary with such object files is however slower. Linking by gcc -r will lead to link time optimization and produce final binary into the object file. Linking such object file is fast but avoids any benefits from whole program optimization. GCC 7 will support incremental link-time optimization with gcc -r. Inter-procedural optimization improvements: Basic jump threading is now performed before profile construction and inline analysis, resulting in more realistic size and time estimates that drive the heuristics of the of inliner and function cloning passes. Function cloning now more aggressively eliminates unused function parameters. New Languages and Language specific improvements Compared to GCC 5, the GCC 6 release series includes a much improved implementation of the OpenACC 2.0a specification. Highlights are: In addition to single-threaded host-fallback execution, offloading is supported for nvptx (Nvidia GPUs) on x86_64 and PowerPC 64-bit little-endian GNU/Linux host systems. For nvptx offloading, with the OpenACC parallel construct, the execution model allows for an arbitrary number of gangs, up to 32 workers, and 32 vectors. Initial support for parallelized execution of OpenACC kernels constructs: Parallelization of a kernels region is switched on by -fopenacc combined with -O2 or higher. Code is offloaded onto multiple gangs, but executes with just one worker, and a vector length of 1. Directives inside a kernels region are not supported. Loops with reductions can be parallelized. Only kernels regions with one loop nest are parallelized. Only the outer-most loop of a loop nest can be parallelized. Loop nests containing sibling loops are not parallelized. Typically, using the OpenACC parallel construct gives much better performance, compared to the initial support of the OpenACC kernels construct. The device_type clause is not supported. The bind and nohost clauses are not supported. The host_data directive is not supported in Fortran. Nested parallelism (cf. CUDA dynamic parallelism) is not supported. Usage of OpenACC constructs inside multithreaded contexts (such as created by OpenMP, or pthread programming) is not supported. If a call to the acc_on_device function has a compile-time constant argument, the function call evaluates to a compile-time constant value only for C and C++ but not for Fortran. See the OpenACC and Offloading wiki pages for further information. C family Version 4.5 of the OpenMP specification is now supported in the C and C++ compilers. The C and C++ compilers now support attributes on enumerators. For instance, it is now possible to mark enumerators as deprecated: enum { newval, oldval __attribute__ ((deprecated ("too old"))) }; Source locations for the C and C++ compilers are now tracked as ranges, rather than just points, making it easier to identify the subexpression of interest within a complicated expression. For example: test.cc: In function 'int test(int, int, foo, int, int)': test.cc:5:16: error: no match for 'operator*' (operand types are 'int' and 'foo') return p + q * r * s + t; ~~^~~ In addition, there is now initial support for precise diagnostic locations within strings: format-strings.c:3:14: warning: field width specifier '*' expects a matching 'int' argument [-Wformat=] printf("%*d"); ^ Diagnostics can now contain "fix-it hints", which are displayed in context underneath the relevant source code. For example: fixits.c: In function 'bad_deref': fixits.c:11:13: error: 'ptr' is a pointer; did you mean to use '->'? return ptr.x; ^ -> The C and C++ compilers now offer suggestions for misspelled field names: spellcheck-fields.cc:52:13: error: 'struct s' has no member named 'colour'; did you mean 'color'? return ptr->colour; ^~~~~~ New command-line options have been added for the C and C++ compilers: -Wshift-negative-value warns about left shifting a negative value. -Wshift-overflow warns about left shift overflows. This warning is enabled by default. -Wshift-overflow=2 also warns about left-shifting 1 into the sign bit. -Wtautological-compare warns if a self-comparison always evaluates to true or false. This warning is enabled by -Wall. -Wnull-dereference warns if the compiler detects paths that trigger erroneous or undefined behavior due to dereferencing a null pointer. This option is only active when -fdelete-null-pointer-checks is active, which is enabled by optimizations in most targets. The precision of the warnings depends on the optimization options used. -Wduplicated-cond warns about duplicated conditions in an if-else-if chain. -Wmisleading-indentation warns about places where the indentation of the code gives a misleading idea of the block structure of the code to a human reader. For example, given CVE-2014-1266: sslKeyExchange.c: In function 'SSLVerifySignedServerKeyExchange': sslKeyExchange.c:629:3: warning: this 'if' clause does not guard... [-Wmisleading-indentation] if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0) ^~ sslKeyExchange.c:631:5: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'if' goto fail; ^~~~ This warning is enabled by -Wall. The C and C++ compilers now emit saner error messages if merge-conflict markers are present in a source file. test.c:3:1: error: version control conflict marker in file <<<<<<< HEAD ^~~~~~~ C It is possible to disable warnings when an initialized field of a structure or a union with side effects is being overridden when using designated initializers via a new warning option -Woverride-init-side-effects. A new type attribute scalar_storage_order applying to structures and unions has been introduced. It specifies the storage order (aka endianness) in memory of scalar fields in structures or unions. C++ The default mode has been changed to -std=gnu++14. C++ Concepts are now supported when compiling with -fconcepts. -flifetime-dse is more aggressive in dead-store elimination in situations where a memory store to a location precedes a constructor to that memory location. G++ now supports C++17 fold expressions, u8 character literals, extended static_assert, and nested namespace definitions. G++ now allows constant evaluation for all non-type template arguments. G++ now supports C++ Transactional Memory when compiling with -fgnu-tm. Runtime Library (libstdc++) Extensions to the C++ Library to support mathematical special functions (ISO/IEC 29124:2010), thanks to Edward Smith-Rowland. Experimental support for C++17, including the following new features: std::uncaught_exceptions function (this is also available for -std=gnu++NN modes); new member functions try_emplace and insert_or_assign for unique_key maps; non-member functions std::size, std::empty, and std::data for accessing containers and arrays; std::invoke; std::shared_mutex; std::void_t and std::bool_constant metaprogramming utilities. Thanks to Ville Voutilainen for contributing many of the C++17 features. An experimental implementation of the File System TS. Experimental support for most features of the second version of the Library Fundamentals TS. This includes polymorphic memory resources and array support in shared_ptr, thanks to Fan You. Some assertions checked by Debug Mode can now also be enabled by _GLIBCXX_ASSERTIONS. The subset of checks enabled by the new macro have less run-time overhead than the full _GLIBCXX_DEBUG checks and don't affect the library ABI, so can be enabled per-translation unit. Timed mutex types are supported on more targets, including Darwin. Improved std::locale support for DragonFly and FreeBSD, thanks to John Marino and Andreas Tobler. Fortran Fortran 2008 SUBMODULE support. Fortran 2015 EVENT_TYPE, EVENT_POST, EVENT_WAIT, and EVENT_QUERY support. Improved support for Fortran 2003 deferred-length character variables. Improved support for OpenMP and OpenACC. The MATMUL intrinsic is now inlined for straightforward cases if front-end optimization is active. The maximum size for inlining can be set to n with the -finline-matmul-limit=n option and turned off with -finline-matmul-limit=0. The -Wconversion-extra option will warn about REAL constants which have excess precision for their kind. The -Winteger-division option has been added, which warns about divisions of integer constants which are truncated. This option is included in -Wall by default. libgccjit The driver code is now run in-process within libgccjit, providing a small speed-up of the compilation process. The API has gained entrypoints for timing how long was spent in different parts of code, creating switch statements, allowing unreachable basic blocks in a function, and adding arbitrary command-line options to a compilation. New Targets and Target Specific Improvements AArch64 A number of AArch64-specific options have been added. The most important ones are summarised in this section but for usage instructions please refer to the documentation. The new command-line options -march=native, -mcpu=native and -mtune=native are now available on native AArch64 GNU/Linux systems. Specifying these options causes GCC to auto-detect the host CPU and choose the optimal setting for that system. -fpic is now supported when generating code for the small code model (-mcmodel=small). The size of the global offset table (GOT) is limited to 28KiB under the LP64 SysV ABI, and 15KiB under the ILP32 SysV ABI. The AArch64 port now supports target attributes and pragmas. Please refer to the documentation for details of available attributes and pragmas as well as usage instructions. Link-time optimization across translation units with different target-specific options is now supported. The option -mtls-size= is now supported. It can be used to specify the bit size of TLS offsets, allowing GCC to generate better TLS instruction sequences. The option -fno-plt is now fully functional. The ARMv8.1-A architecture and the Large System Extensions are now supported. They can be used by specifying the -march=armv8.1-a option. Additionally, the +lse option extension can be used in a similar fashion to other option extensions. The Large System Extensions introduce new instructions that are used in the implementation of atomic operations. The ACLE half-precision floating-point type __fp16 is now supported in the C and C++ languages. The ARM Cortex-A35 processor is now supported via the -mcpu=cortex-a35 and -mtune=cortex-a35 options as well as the equivalent target attributes and pragmas. The Qualcomm QDF24xx processor is now supported via the -mcpu=qdf24xx and -mtune=qdf24xx options as well as the equivalent target attributes and pragmas. Code generation for the ARM Cortex-A57 processor is improved. Among general code generation improvements, a better algorithm is added for allocating registers to floating-point multiply-accumulate instructions offering increased performance when compiling with -mcpu=cortex-a57 or -mtune=cortex-a57. Code generation for the ARM Cortex-A53 processor is improved. A more accurate instruction scheduling model for the processor is now used, and a number of compiler tuning parameters have been set to offer increased performance when compiling with -mcpu=cortex-a53 or -mtune=cortex-a53. Code generation for the Samsung Exynos M1 processor is improved. A more accurate instruction scheduling model for the processor is now used, and a number of compiler tuning parameters have been set to offer increased performance when compiling with -mcpu=exynos-m1 or -mtune=exynos-m1. Improvements in the generation of conditional branches and literal pools were made to allow the compiler to compile functions of a large size. Constant pools are now placed into separate rodata sections. The new option -mpc-relative-literal-loads is introduced to generate per-function literal pools, limiting the maximum size of functions to 1MiB. Several correctness issues with generation of Advanced SIMD instructions for big-endian targets have been fixed resulting in improved code generation for ACLE intrinsics with -mbig-endian. ARM Support for revisions of the ARM architecture prior to ARMv4t has been deprecated and will be removed in a future GCC release. The -mcpu and -mtune values that are deprecated are: arm2, arm250, arm3, arm6, arm60, arm600, arm610, arm620, arm7, arm7d, arm7di, arm70, arm700, arm700i, arm710, arm720, arm710c, arm7100, arm7500, arm7500fe, arm7m, arm7dm, arm7dmi, arm8, arm810, strongarm, strongarm110, strongarm1100, strongarm1110, fa526, fa626. The value arm7tdmi is still supported. The values of -march that are deprecated are: armv2,armv2a,armv3,armv3m,armv4. The ARM port now supports target attributes and pragmas. Please refer to the documentation for details of available attributes and pragmas as well as usage instructions. Support has been added for the following processors (GCC identifiers in parentheses): ARM Cortex-A32 (cortex-a32), ARM Cortex-A35 (cortex-a35). The GCC identifiers can be used as arguments to the -mcpu or -mtune options, for example: -mcpu=cortex-a32 or -mtune=cortex-a35. Heterogeneous Systems Architecture GCC can now generate HSAIL (Heterogeneous System Architecture Intermediate Language) for simple OpenMP device constructs if configured with --enable-offload-targets=hsa. A new libgomp plugin then runs the HSA GPU kernels implementing these constructs on HSA capable GPUs via a standard HSA run time. If the HSA compilation back end determines it cannot output HSAIL for a particular input, it gives a warning by default. These warnings can be suppressed with -Wno-hsa. To give a few examples, the HSA back end does not implement compilation of code using function pointers, automatic allocation of variable sized arrays, functions with variadic arguments as well as a number of other less common programming constructs. When compilation for HSA is enabled, the compiler attempts to compile composite OpenMP constructs #pragma omp target teams distribute parallel for into parallel HSA GPU kernels. IA-32/x86-64 GCC now supports the Intel CPU named Skylake with AVX-512 extensions through -march=skylake-avx512. The switch enables the following ISA extensions: AVX-512F, AVX512VL, AVX-512CD, AVX-512BW, AVX-512DQ. Support for new AMD instructions monitorx and mwaitx has been added. This includes new intrinsic and built-in support. It is enabled through option -mmwaitx. The instructions monitorx and mwaitx implement the same functionality as the old monitor and mwait instructions. In addition mwaitx adds a configurable timer. The timer value is received as third argument and stored in register %ebx. x86-64 targets now allow stack realignment from a word-aligned stack pointer using the command-line option -mstackrealign or __attribute__ ((force_align_arg_pointer)). This allows functions compiled with a vector-aligned stack to be invoked from objects that keep only word-alignment. Support for address spaces __seg_fs, __seg_gs, and __seg_tls. These can be used to access data via the %fs and %gs segments without having to resort to inline assembly. Please refer to the documentation for usage instructions. Support for AMD Zen (family 17h) processors is now available through the -march=znver1 and -mtune=znver1 options. MeP Support for the MeP (mep-elf) architecture has been deprecated and will be removed in a future GCC release. MSP430 The MSP430 compiler now has the ability to automatically distribute code and data between low memory (addresses below 64K) and high memory. This only applies to parts that actually have both memory regions and only if the linker script for the part has been specifically set up to support this feature. A new attribute of either can be applied to both functions and data, and this tells the compiler to place the object into low memory if there is room and into high memory otherwise. Two other new attributes - lower and upper - can be used to explicitly state that an object should be placed in the specified memory region. If there is not enough left in that region the compilation will fail. Two new command-line options - -mcode-region=[lower|upper|either] and -mdata-region=[lower|upper|either] - can be used to tell the compiler what to do with objects that do not have one of these new attributes. PowerPC / PowerPC64 / RS6000 PowerPC64 now supports IEEE 128-bit floating-point using the __float128 data type. In GCC 6, this is not enabled by default, but you can enable it with -mfloat128. The IEEE 128-bit floating-point support requires the use of the VSX instruction set. IEEE 128-bit floating-point values are passed and returned as a single vector value. The software emulator for IEEE 128-bit floating-point support is only built on PowerPC GNU/Linux systems where the default CPU is at least power7. On future ISA 3.0 systems (POWER 9 and later), you will be able to use the -mfloat128-hardware option to use the ISA 3.0 instructions that support IEEE 128-bit floating-point. An additional type (__ibm128) has been added to refer to the IBM extended double type that normally implements long double. This will allow for a future transition to implementing long double with IEEE 128-bit floating-point. Basic support has been added for POWER9 hardware that will use the recently published OpenPOWER ISA 3.0 instructions. The following new switches are available: -mcpu=power9: Implement all of the ISA 3.0 instructions supported by the compiler. -mtune=power9: In the future, apply tuning for POWER9 systems. Currently, POWER8 tunings are used. -mmodulo: Generate code using the ISA 3.0 integer instructions (modulus, count trailing zeros, array index support, integer multiply/add). -mpower9-fusion: Generate code to suitably fuse instruction sequences for a POWER9 system. -mpower9-dform: Generate code to use the new D-form (register+offset) memory instructions for the vector registers. -mpower9-vector: Generate code using the new ISA 3.0 vector (VSX or Altivec) instructions. -mpower9-minmax: Reserved for future development. -mtoc-fusion: Keep TOC entries together to provide more fusion opportunities. New constraints have been added to support IEEE 128-bit floating-point and ISA 3.0 instructions: wb: Altivec register if -mpower9-dform is enabled. we: VSX register if -mpower9-vector is enabled for 64-bit code generation. wo: VSX register if -mpower9-vector is enabled. wp: Reserved for future use if long double is implemented with IEEE 128-bit floating-point instead of IBM extended double. wq: VSX register if -mfloat128 is enabled. wF: Memory operand suitable for POWER9 fusion load/store. wG: Memory operand suitable for TOC fusion memory references. wL: Integer constant identifying the element number mfvsrld accesses within a vector. Support has been added for __builtin_cpu_is() and __builtin_cpu_supports(), allowing for very fast access to AT_PLATFORM, AT_HWCAP, and AT_HWCAP2 values. This requires use of glibc 2.23 or later. All hardware transactional memory builtins now correctly behave as memory barriers. Programmers can use #ifdef __TM_FENCE__ to determine whether their "old" compiler treats the builtins as barriers. Split-stack support has been added for gccgo on PowerPC64 for both big- and little-endian (but not for 32-bit). The gold linker from at least binutils 2.25.1 must be available in the PATH when configuring and building gccgo to enable split stack. (The requirement for binutils 2.25.1 applies to PowerPC64 only.) The split-stack feature allows a small initial stack size to be allocated for each goroutine, which increases as needed. GCC on PowerPC now supports the standard lround function. A new configuration option ---with-advance-toolchain=at was added for PowerPC 64-bit GNU/Linux systems to use the header files, library files, and the dynamic linker from a specific Advance Toolchain release instead of the default versions that are provided by the GNU/Linux distribution. In general, this option is intended for the developers of GCC, and it is not intended for general use. The "q", "S", "T", and "t" asm-constraints have been removed. The "b", "B", "m", "M", and "W" format modifiers have been removed. S/390, System z, IBM z Systems Support for the IBM z13 processor has been added. When using the -march=z13 option, the compiler will generate code making use of the new instructions and registers introduced with the vector extension facility. The -mtune=z13 option enables z13 specific instruction scheduling without making use of new instructions. Compiling code with -march=z13 reduces the default alignment of vector types bigger than 8 bytes to 8. This is an ABI change and care must be taken when linking modules compiled with different arch levels which interchange variables containing vector type values. For newly compiled code the GNU linker will emit a warning. The -mzvector option enables a C/C++ language extension. This extension provides a new keyword vector which can be used to define vector type variables. (Note: This is not available when enforcing strict standard compliance e.g. with -std=c99. Either enable GNU extensions with e.g. -std=gnu99 or use __vector instead of vector.) Additionally a set of overloaded builtins is provided which is partially compatible to the PowerPC Altivec builtins. In order to make use of these builtins the vecintrin.h header file needs to be included. The new command line options -march=native, and -mtune=native are now available on native IBM z Systems. Specifying these options will cause GCC to auto-detect the host CPU and rewrite these options to the optimal setting for that system. If GCC is unable to detect the host CPU these options have no effect. The IBM z Systems port now supports target attributes and pragmas. Please refer to the documentation for details of available attributes and pragmas as well as usage instructions. -fsplit-stack is now supported as part of the IBM z Systems port. This feature requires a recent gold linker to be used. Support for the g5 and g6 -march=/-mtune= CPU level switches has been deprecated and will be removed in a future GCC release. -m31 from now on defaults to -march=z900 if not specified otherwise. -march=native on a g5/g6 machine will default to -march=z900. SH Support for SH5 / SH64 has been declared obsolete and will be removed in future releases. Support for the FDPIC ABI has been added. It can be enabled using the new -mfdpic target option and --enable-fdpic configure option. SPARC An ABI bug has been fixed in 64-bit mode. Unfortunately, this change will break binary compatibility with earlier releases for code it affects, but this should be pretty rare in practice. The conditions are: a 16-byte structure containing a double or a 8-byte vector in the second half is passed to a subprogram in slot #15, for example as 16th parameter if the first 15 ones have at most 8 bytes. The double or vector was wrongly passed in floating-point register %d32 in lieu of on the stack as per the SPARC calling conventions. Operating Systems AIX DWARF debugging support for AIX 7.1 has been enabled as an optional debugging format. A more recent Technology Level (TL) and GCC built with that level are required for full exploitation of DWARF debugging capabilities. Linux Support for the musl C library was added for the AArch64, ARM, MicroBlaze, MIPS, MIPS64, PowerPC, PowerPC64, SH, i386, x32 and x86_64 targets. It can be selected using the new -mmusl option in case musl is not the default libc. GCC defaults to musl libc if it is built with a target triplet matching the *-linux-musl* pattern. RTEMS The RTEMS thread model implementation changed. Mutexes now use self-contained objects defined in Newlib <sys/lock.h> instead of Classic API semaphores. The keys for thread specific data and the once function are directly defined via <pthread.h>. Self-contained condition variables are provided via Newlib <sys/lock.h>. The RTEMS thread model also supports C++11 threads. OpenMP support now uses self-contained objects provided by Newlib <sys/lock.h> and offers a significantly better performance compared to the POSIX configuration of libgomp. It is possible to configure thread pools for each scheduler instance via the environment variable GOMP_RTEMS_THREAD_POOLS. Solaris Solaris 12 is now fully supported. Minimal support had already been present in GCC 5.3. Solaris 12 provides a full set of startup files (crt1.o, crti.o, crtn.o), which GCC now prefers over its own ones. Position independent executables (PIE) are now supported on Solaris 12. Constructor priority is now supported on Solaris 12 with the system linker. libvtv has been ported to Solaris 11 and up. Windows The option -mstackrealign is now automatically activated in 32-bit mode whenever the use of SSE instructions is requested. Other significant improvements The gcc and g++ driver programs will now provide suggestions for misspelled command line options. $ gcc -static-libfortran test.f95 gcc: error: unrecognized command line option '-static-libfortran'; did you mean '-static-libgfortran'? The --enable-default-pie configure option enables generation of PIE by default. Non exhaustive list of bug fixes in GCC 6.2.0 release: 77463 internal compiler error: in output_move_qimode 71092 [6/7 Regression] ICE: in cxx_eval_call_expression 77034 [6.2RC regression] g++.dg/init/elide5.C fails on powerpc64-unknown-linux-gnu with -m32 70597 [6/7 Regression] cmd/go: deduplicate gccgo afiles by package path 71936 [6/7 Regression] ICE in wide_int_to_tree 77279 build error in isl/ctx.h 67419 gfortran.dg/large_real_kind_2.F90 FAILs 73434 [6/7 Regression] Wrong code with casting 71972 [6 Regression] ICE with ""-std=c++14"" on x86_64-linux-gnu (internal compiler error: Segmentation fault 72819 [AArch64] ABI error: HFA structs of __fp16 incorrectly passed to functions 73456 [6/7 regression][concepts] ICE in non_atomic_constraint_p 72853 gcc/testsuite/gcc.c-torture/execute/20021120-1.c generates incorrect stxssp op with -mcpu=power9 71981 [6/7 Regression] ICE at -O2 and -O3 on x86_64-linux-gnu (internal compiler error: in get_dynamic_type 71881 [6 Regression] ICE on valid code at -O3 with -g enabled on x86_64-linux-gnu: cannot update SSA form 72802 powerpc64le: -mcpu=power9 emits lxssp instruction with offset that isn't a multiple of 4 72800 [5/6 Regression] ICE on invalid C++14 code with initialized lambda capture: tree check: expected class ‘type’ 70040 [5 Regression] ICE in gimplify.c with deferred-length strings 72699 [6/7 Regression] ICE in gfc_check_dependency 70677 Suboptimal cond on AVR: unneeded stack frame 71853 [6/7 regression] ICE on an ill-formed case statement in c_do_switch_warnings 72457 [6/7 Regression] ICE: Segmentation fault 71738 [4.9/5/6/7 Regression] ICE on valid C++ code: tree check: expected record_type or union_type or qual_union_type 71350 [4.9/5/6/7 regression] ICE on trailing return type declaration with initializer list 70847 [6/7 Regression] exponential time in cp_fold for chained virtual function calls 71756 [5/6/7 Regression] internal compiler error: in ~saved_token_sentinel 71147 [6 Regression] Flexible array member wrongly rejected in template 67579 [concepts] Memoization for constraint expressions 67565 [concepts] Very slow compile time and high memory usage with complex concept definitions 71941 [6/7 Regression] ICE with OpenMP tasks and queue 71495 [6/7 Regression] Spurious ""note: initializing argument ... of ..."" without any warning/error 70822 [6 Regression] bogus ""error: lvalue required as unary ‘&’ operand"" with C++14 parenthesized SCOPE_REF 71718 [6/7 Regression] ICE on erroneous recursive template error printing 70824 [6/7 Regression] cc1plus consumes all available memory on specific template code 70781 [6/7 Regression] ICE on invalid C++ code with lambda expressions on x86_64-linux-gnu in finish_expr_stmt 71896 [6/7 Regression] Constexpr function with pointer to member parameter doesn't return constexpr value 71117 [6/7 Regression] Overeager application of conversion to function pointer during overload resolution of call to function object 71511 [6/7 Regression] ICE on valid C++11 code (with decltype) on x86_64-linux-gnu: in cxx_incomplete_type_diagnostic 71513 [6/7 Regression] ICE on valid C++11 code (with alignas specifier) on x86_64-linux-gnu: Segmentation fault 71604 [6/7 Regression] ICE on valid C++11 code with range-based for loop: in pop_binding 71711 [6/7 Regression] ICE on valid C++1z code with fold expression: tree check: expected tree_vec 71814 [6/7 Regression] ICE on valid C++11 code: in write_type 70972 [6 Regression] Inheriting constructors taking parameters by value should move them 71856 [6/7 Regression] _GLIBCXX_DEBUG-mode breaks GNU parallel extension 71916 [6/7 Regression] ICE at -O3 on valid code on x86_64-linux-gnu in ""maybe_record_trace_start 71835 [6/7 Regression] ICE on invalid C++ code with ambiguous overloaded operators: tree check: expected tree that contains ‘decl minimal’ structure 71828 [6/7 regression] ICE on valid C++11 code with constexpr __Complex int variable declaration: in operand_equal_p 71822 [6/7 Regression] ICE: in gimplify_expr 70869 [6 Regression] internal compiler error: Segmentation fault on array of pointer to function members 71493 [6/7 regression] accidental ABI change for structure return on PowerPC 69515 partial specialization of variable templates is broken 70584 constexpr variables cannot be used as intrinsic arguments where an immediate is expected 71164 [6/7 Regression] tree check fail at cp/pt.c:12961 71733 ICE in vmx test cases with -mcpu=power9 71624 [6 regression][CHKP] internal compiler error: in duplicate_thunk_for_node 71823 [6/7 Regression] g++ segfaults with -mfma and -ftree-slp-vectorize 71173 [6/7 regression] Qualified name lookup 70685 [6/7 Regression] ICE: Segmentation fault 70222 Test miscompiled with -O1 71100 [6/7 regression] Internal compiler error while calling a pointer to member function that throws 71739 [6/7 Regression] ICE on valid C++11 code: tree check: expected identifier_node 70916 [6 Regression] gcc ICE at -O3 on valid code on x86_64-linux-gnu in ""tree_operand_check 71521 [6 Regression] Regression in GCC-7.0.0's optimizer 30417 Section .data cannot be moved with -mmcu=atmega88 71057 [6 Regression] ICE in schedule_generic_params_dies_gen 71056 [6 Regression] __builtin 70540 [4.9/5 Regression] ICE on invalid code in cxx_incomple
2016-09-13 00:13:54 +02:00
SUBDIR+= gcc6
SUBDIR+= gcc6-aux
add packages gcc6, gcc6-libs (GCC 6.2.0), based on wip/gcc6snapshot XXX add logic to mk/compiler/gcc.mk Changes from GCC5 series: Caveats The default mode for C++ is now -std=gnu++14 instead of -std=gnu++98. Support for a number of older systems and recently unmaintained or untested target ports of GCC has been declared obsolete in GCC 6. Unless there is activity to revive them, the next release of GCC will have their sources permanently removed. The following ports for individual systems on particular architectures have been obsoleted: SH5 / SH64 (sh64-*-*) as announced here. The AVR port requires binutils version 2.26.1 or later for the fix for PR71151 to work. General Optimizer Improvements UndefinedBehaviorSanitizer gained a new sanitization option, -fsanitize=bounds-strict, which enables strict checking of array bounds. In particular, it enables -fsanitize=bounds as well as instrumentation of flexible array member-like arrays. Type-based alias analysis now disambiguates accesses to different pointers. This improves precision of the alias oracle by about 20-30% on higher-level C++ programs. Programs doing invalid type punning of pointer types may now need -fno-strict-aliasing to work correctly. Alias analysis now correctly supports weakref and alias attributes. This makes it possible to access both a variable and its alias in one translation unit which is common with link-time optimization. Value range propagation now assumes that the this pointer of C++ member functions is non-null. This eliminates common null pointer checks but also breaks some non-conforming code-bases (such as Qt-5, Chromium, KDevelop). As a temporary work-around -fno-delete-null-pointer-checks can be used. Wrong code can be identified by using -fsanitize=undefined. Link-time optimization improvements: warning and error attributes are now correctly preserved by declaration linking and thus -D_FORTIFY_SOURCE=2 is now supported with -flto. Type merging was fixed to handle C and Fortran interoperability rules as defined by the Fortran 2008 language standard. As an exception, CHARACTER(KIND=C_CHAR) is not inter-operable with char in all cases because it is an array while char is scalar. INTEGER(KIND=C_SIGNED_CHAR) should be used instead. In general, this inter-operability cannot be implemented, for example, on targets where function passing conventions of arrays differs from scalars. More type information is now preserved at link time reducing the loss of accuracy of the type based alias analysis compared to builds without link-time optimization. Invalid type punning on global variables and declarations is now reported with -Wodr-type-mismatch. The size of LTO object files was reduced by about 11% (measured by compiling Firefox 46.0). Link-time parallelization (enabled using -flto=n) was significantly improved by decreasing the size of streamed data when partitioning programs. The size of streamed IL while compiling Firefox 46.0 was reduced by 66%. The linker plugin was extended to pass information about type of binary produced to GCC back end (that can be also manually controlled by -flinker-output). This makes it possible to properly configure the code generator and support incremental linking. Incremental linking of LTO objects by gcc -r is now supported on plugin-enabled setups. There are two ways to perform incremental linking: Linking by ld -r will result in an object file with all sections from individual object files mechanically merged. This delays the actual link time optimization to final linking step and thus permits whole program optimization. Linking final binary with such object files is however slower. Linking by gcc -r will lead to link time optimization and produce final binary into the object file. Linking such object file is fast but avoids any benefits from whole program optimization. GCC 7 will support incremental link-time optimization with gcc -r. Inter-procedural optimization improvements: Basic jump threading is now performed before profile construction and inline analysis, resulting in more realistic size and time estimates that drive the heuristics of the of inliner and function cloning passes. Function cloning now more aggressively eliminates unused function parameters. New Languages and Language specific improvements Compared to GCC 5, the GCC 6 release series includes a much improved implementation of the OpenACC 2.0a specification. Highlights are: In addition to single-threaded host-fallback execution, offloading is supported for nvptx (Nvidia GPUs) on x86_64 and PowerPC 64-bit little-endian GNU/Linux host systems. For nvptx offloading, with the OpenACC parallel construct, the execution model allows for an arbitrary number of gangs, up to 32 workers, and 32 vectors. Initial support for parallelized execution of OpenACC kernels constructs: Parallelization of a kernels region is switched on by -fopenacc combined with -O2 or higher. Code is offloaded onto multiple gangs, but executes with just one worker, and a vector length of 1. Directives inside a kernels region are not supported. Loops with reductions can be parallelized. Only kernels regions with one loop nest are parallelized. Only the outer-most loop of a loop nest can be parallelized. Loop nests containing sibling loops are not parallelized. Typically, using the OpenACC parallel construct gives much better performance, compared to the initial support of the OpenACC kernels construct. The device_type clause is not supported. The bind and nohost clauses are not supported. The host_data directive is not supported in Fortran. Nested parallelism (cf. CUDA dynamic parallelism) is not supported. Usage of OpenACC constructs inside multithreaded contexts (such as created by OpenMP, or pthread programming) is not supported. If a call to the acc_on_device function has a compile-time constant argument, the function call evaluates to a compile-time constant value only for C and C++ but not for Fortran. See the OpenACC and Offloading wiki pages for further information. C family Version 4.5 of the OpenMP specification is now supported in the C and C++ compilers. The C and C++ compilers now support attributes on enumerators. For instance, it is now possible to mark enumerators as deprecated: enum { newval, oldval __attribute__ ((deprecated ("too old"))) }; Source locations for the C and C++ compilers are now tracked as ranges, rather than just points, making it easier to identify the subexpression of interest within a complicated expression. For example: test.cc: In function 'int test(int, int, foo, int, int)': test.cc:5:16: error: no match for 'operator*' (operand types are 'int' and 'foo') return p + q * r * s + t; ~~^~~ In addition, there is now initial support for precise diagnostic locations within strings: format-strings.c:3:14: warning: field width specifier '*' expects a matching 'int' argument [-Wformat=] printf("%*d"); ^ Diagnostics can now contain "fix-it hints", which are displayed in context underneath the relevant source code. For example: fixits.c: In function 'bad_deref': fixits.c:11:13: error: 'ptr' is a pointer; did you mean to use '->'? return ptr.x; ^ -> The C and C++ compilers now offer suggestions for misspelled field names: spellcheck-fields.cc:52:13: error: 'struct s' has no member named 'colour'; did you mean 'color'? return ptr->colour; ^~~~~~ New command-line options have been added for the C and C++ compilers: -Wshift-negative-value warns about left shifting a negative value. -Wshift-overflow warns about left shift overflows. This warning is enabled by default. -Wshift-overflow=2 also warns about left-shifting 1 into the sign bit. -Wtautological-compare warns if a self-comparison always evaluates to true or false. This warning is enabled by -Wall. -Wnull-dereference warns if the compiler detects paths that trigger erroneous or undefined behavior due to dereferencing a null pointer. This option is only active when -fdelete-null-pointer-checks is active, which is enabled by optimizations in most targets. The precision of the warnings depends on the optimization options used. -Wduplicated-cond warns about duplicated conditions in an if-else-if chain. -Wmisleading-indentation warns about places where the indentation of the code gives a misleading idea of the block structure of the code to a human reader. For example, given CVE-2014-1266: sslKeyExchange.c: In function 'SSLVerifySignedServerKeyExchange': sslKeyExchange.c:629:3: warning: this 'if' clause does not guard... [-Wmisleading-indentation] if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0) ^~ sslKeyExchange.c:631:5: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'if' goto fail; ^~~~ This warning is enabled by -Wall. The C and C++ compilers now emit saner error messages if merge-conflict markers are present in a source file. test.c:3:1: error: version control conflict marker in file <<<<<<< HEAD ^~~~~~~ C It is possible to disable warnings when an initialized field of a structure or a union with side effects is being overridden when using designated initializers via a new warning option -Woverride-init-side-effects. A new type attribute scalar_storage_order applying to structures and unions has been introduced. It specifies the storage order (aka endianness) in memory of scalar fields in structures or unions. C++ The default mode has been changed to -std=gnu++14. C++ Concepts are now supported when compiling with -fconcepts. -flifetime-dse is more aggressive in dead-store elimination in situations where a memory store to a location precedes a constructor to that memory location. G++ now supports C++17 fold expressions, u8 character literals, extended static_assert, and nested namespace definitions. G++ now allows constant evaluation for all non-type template arguments. G++ now supports C++ Transactional Memory when compiling with -fgnu-tm. Runtime Library (libstdc++) Extensions to the C++ Library to support mathematical special functions (ISO/IEC 29124:2010), thanks to Edward Smith-Rowland. Experimental support for C++17, including the following new features: std::uncaught_exceptions function (this is also available for -std=gnu++NN modes); new member functions try_emplace and insert_or_assign for unique_key maps; non-member functions std::size, std::empty, and std::data for accessing containers and arrays; std::invoke; std::shared_mutex; std::void_t and std::bool_constant metaprogramming utilities. Thanks to Ville Voutilainen for contributing many of the C++17 features. An experimental implementation of the File System TS. Experimental support for most features of the second version of the Library Fundamentals TS. This includes polymorphic memory resources and array support in shared_ptr, thanks to Fan You. Some assertions checked by Debug Mode can now also be enabled by _GLIBCXX_ASSERTIONS. The subset of checks enabled by the new macro have less run-time overhead than the full _GLIBCXX_DEBUG checks and don't affect the library ABI, so can be enabled per-translation unit. Timed mutex types are supported on more targets, including Darwin. Improved std::locale support for DragonFly and FreeBSD, thanks to John Marino and Andreas Tobler. Fortran Fortran 2008 SUBMODULE support. Fortran 2015 EVENT_TYPE, EVENT_POST, EVENT_WAIT, and EVENT_QUERY support. Improved support for Fortran 2003 deferred-length character variables. Improved support for OpenMP and OpenACC. The MATMUL intrinsic is now inlined for straightforward cases if front-end optimization is active. The maximum size for inlining can be set to n with the -finline-matmul-limit=n option and turned off with -finline-matmul-limit=0. The -Wconversion-extra option will warn about REAL constants which have excess precision for their kind. The -Winteger-division option has been added, which warns about divisions of integer constants which are truncated. This option is included in -Wall by default. libgccjit The driver code is now run in-process within libgccjit, providing a small speed-up of the compilation process. The API has gained entrypoints for timing how long was spent in different parts of code, creating switch statements, allowing unreachable basic blocks in a function, and adding arbitrary command-line options to a compilation. New Targets and Target Specific Improvements AArch64 A number of AArch64-specific options have been added. The most important ones are summarised in this section but for usage instructions please refer to the documentation. The new command-line options -march=native, -mcpu=native and -mtune=native are now available on native AArch64 GNU/Linux systems. Specifying these options causes GCC to auto-detect the host CPU and choose the optimal setting for that system. -fpic is now supported when generating code for the small code model (-mcmodel=small). The size of the global offset table (GOT) is limited to 28KiB under the LP64 SysV ABI, and 15KiB under the ILP32 SysV ABI. The AArch64 port now supports target attributes and pragmas. Please refer to the documentation for details of available attributes and pragmas as well as usage instructions. Link-time optimization across translation units with different target-specific options is now supported. The option -mtls-size= is now supported. It can be used to specify the bit size of TLS offsets, allowing GCC to generate better TLS instruction sequences. The option -fno-plt is now fully functional. The ARMv8.1-A architecture and the Large System Extensions are now supported. They can be used by specifying the -march=armv8.1-a option. Additionally, the +lse option extension can be used in a similar fashion to other option extensions. The Large System Extensions introduce new instructions that are used in the implementation of atomic operations. The ACLE half-precision floating-point type __fp16 is now supported in the C and C++ languages. The ARM Cortex-A35 processor is now supported via the -mcpu=cortex-a35 and -mtune=cortex-a35 options as well as the equivalent target attributes and pragmas. The Qualcomm QDF24xx processor is now supported via the -mcpu=qdf24xx and -mtune=qdf24xx options as well as the equivalent target attributes and pragmas. Code generation for the ARM Cortex-A57 processor is improved. Among general code generation improvements, a better algorithm is added for allocating registers to floating-point multiply-accumulate instructions offering increased performance when compiling with -mcpu=cortex-a57 or -mtune=cortex-a57. Code generation for the ARM Cortex-A53 processor is improved. A more accurate instruction scheduling model for the processor is now used, and a number of compiler tuning parameters have been set to offer increased performance when compiling with -mcpu=cortex-a53 or -mtune=cortex-a53. Code generation for the Samsung Exynos M1 processor is improved. A more accurate instruction scheduling model for the processor is now used, and a number of compiler tuning parameters have been set to offer increased performance when compiling with -mcpu=exynos-m1 or -mtune=exynos-m1. Improvements in the generation of conditional branches and literal pools were made to allow the compiler to compile functions of a large size. Constant pools are now placed into separate rodata sections. The new option -mpc-relative-literal-loads is introduced to generate per-function literal pools, limiting the maximum size of functions to 1MiB. Several correctness issues with generation of Advanced SIMD instructions for big-endian targets have been fixed resulting in improved code generation for ACLE intrinsics with -mbig-endian. ARM Support for revisions of the ARM architecture prior to ARMv4t has been deprecated and will be removed in a future GCC release. The -mcpu and -mtune values that are deprecated are: arm2, arm250, arm3, arm6, arm60, arm600, arm610, arm620, arm7, arm7d, arm7di, arm70, arm700, arm700i, arm710, arm720, arm710c, arm7100, arm7500, arm7500fe, arm7m, arm7dm, arm7dmi, arm8, arm810, strongarm, strongarm110, strongarm1100, strongarm1110, fa526, fa626. The value arm7tdmi is still supported. The values of -march that are deprecated are: armv2,armv2a,armv3,armv3m,armv4. The ARM port now supports target attributes and pragmas. Please refer to the documentation for details of available attributes and pragmas as well as usage instructions. Support has been added for the following processors (GCC identifiers in parentheses): ARM Cortex-A32 (cortex-a32), ARM Cortex-A35 (cortex-a35). The GCC identifiers can be used as arguments to the -mcpu or -mtune options, for example: -mcpu=cortex-a32 or -mtune=cortex-a35. Heterogeneous Systems Architecture GCC can now generate HSAIL (Heterogeneous System Architecture Intermediate Language) for simple OpenMP device constructs if configured with --enable-offload-targets=hsa. A new libgomp plugin then runs the HSA GPU kernels implementing these constructs on HSA capable GPUs via a standard HSA run time. If the HSA compilation back end determines it cannot output HSAIL for a particular input, it gives a warning by default. These warnings can be suppressed with -Wno-hsa. To give a few examples, the HSA back end does not implement compilation of code using function pointers, automatic allocation of variable sized arrays, functions with variadic arguments as well as a number of other less common programming constructs. When compilation for HSA is enabled, the compiler attempts to compile composite OpenMP constructs #pragma omp target teams distribute parallel for into parallel HSA GPU kernels. IA-32/x86-64 GCC now supports the Intel CPU named Skylake with AVX-512 extensions through -march=skylake-avx512. The switch enables the following ISA extensions: AVX-512F, AVX512VL, AVX-512CD, AVX-512BW, AVX-512DQ. Support for new AMD instructions monitorx and mwaitx has been added. This includes new intrinsic and built-in support. It is enabled through option -mmwaitx. The instructions monitorx and mwaitx implement the same functionality as the old monitor and mwait instructions. In addition mwaitx adds a configurable timer. The timer value is received as third argument and stored in register %ebx. x86-64 targets now allow stack realignment from a word-aligned stack pointer using the command-line option -mstackrealign or __attribute__ ((force_align_arg_pointer)). This allows functions compiled with a vector-aligned stack to be invoked from objects that keep only word-alignment. Support for address spaces __seg_fs, __seg_gs, and __seg_tls. These can be used to access data via the %fs and %gs segments without having to resort to inline assembly. Please refer to the documentation for usage instructions. Support for AMD Zen (family 17h) processors is now available through the -march=znver1 and -mtune=znver1 options. MeP Support for the MeP (mep-elf) architecture has been deprecated and will be removed in a future GCC release. MSP430 The MSP430 compiler now has the ability to automatically distribute code and data between low memory (addresses below 64K) and high memory. This only applies to parts that actually have both memory regions and only if the linker script for the part has been specifically set up to support this feature. A new attribute of either can be applied to both functions and data, and this tells the compiler to place the object into low memory if there is room and into high memory otherwise. Two other new attributes - lower and upper - can be used to explicitly state that an object should be placed in the specified memory region. If there is not enough left in that region the compilation will fail. Two new command-line options - -mcode-region=[lower|upper|either] and -mdata-region=[lower|upper|either] - can be used to tell the compiler what to do with objects that do not have one of these new attributes. PowerPC / PowerPC64 / RS6000 PowerPC64 now supports IEEE 128-bit floating-point using the __float128 data type. In GCC 6, this is not enabled by default, but you can enable it with -mfloat128. The IEEE 128-bit floating-point support requires the use of the VSX instruction set. IEEE 128-bit floating-point values are passed and returned as a single vector value. The software emulator for IEEE 128-bit floating-point support is only built on PowerPC GNU/Linux systems where the default CPU is at least power7. On future ISA 3.0 systems (POWER 9 and later), you will be able to use the -mfloat128-hardware option to use the ISA 3.0 instructions that support IEEE 128-bit floating-point. An additional type (__ibm128) has been added to refer to the IBM extended double type that normally implements long double. This will allow for a future transition to implementing long double with IEEE 128-bit floating-point. Basic support has been added for POWER9 hardware that will use the recently published OpenPOWER ISA 3.0 instructions. The following new switches are available: -mcpu=power9: Implement all of the ISA 3.0 instructions supported by the compiler. -mtune=power9: In the future, apply tuning for POWER9 systems. Currently, POWER8 tunings are used. -mmodulo: Generate code using the ISA 3.0 integer instructions (modulus, count trailing zeros, array index support, integer multiply/add). -mpower9-fusion: Generate code to suitably fuse instruction sequences for a POWER9 system. -mpower9-dform: Generate code to use the new D-form (register+offset) memory instructions for the vector registers. -mpower9-vector: Generate code using the new ISA 3.0 vector (VSX or Altivec) instructions. -mpower9-minmax: Reserved for future development. -mtoc-fusion: Keep TOC entries together to provide more fusion opportunities. New constraints have been added to support IEEE 128-bit floating-point and ISA 3.0 instructions: wb: Altivec register if -mpower9-dform is enabled. we: VSX register if -mpower9-vector is enabled for 64-bit code generation. wo: VSX register if -mpower9-vector is enabled. wp: Reserved for future use if long double is implemented with IEEE 128-bit floating-point instead of IBM extended double. wq: VSX register if -mfloat128 is enabled. wF: Memory operand suitable for POWER9 fusion load/store. wG: Memory operand suitable for TOC fusion memory references. wL: Integer constant identifying the element number mfvsrld accesses within a vector. Support has been added for __builtin_cpu_is() and __builtin_cpu_supports(), allowing for very fast access to AT_PLATFORM, AT_HWCAP, and AT_HWCAP2 values. This requires use of glibc 2.23 or later. All hardware transactional memory builtins now correctly behave as memory barriers. Programmers can use #ifdef __TM_FENCE__ to determine whether their "old" compiler treats the builtins as barriers. Split-stack support has been added for gccgo on PowerPC64 for both big- and little-endian (but not for 32-bit). The gold linker from at least binutils 2.25.1 must be available in the PATH when configuring and building gccgo to enable split stack. (The requirement for binutils 2.25.1 applies to PowerPC64 only.) The split-stack feature allows a small initial stack size to be allocated for each goroutine, which increases as needed. GCC on PowerPC now supports the standard lround function. A new configuration option ---with-advance-toolchain=at was added for PowerPC 64-bit GNU/Linux systems to use the header files, library files, and the dynamic linker from a specific Advance Toolchain release instead of the default versions that are provided by the GNU/Linux distribution. In general, this option is intended for the developers of GCC, and it is not intended for general use. The "q", "S", "T", and "t" asm-constraints have been removed. The "b", "B", "m", "M", and "W" format modifiers have been removed. S/390, System z, IBM z Systems Support for the IBM z13 processor has been added. When using the -march=z13 option, the compiler will generate code making use of the new instructions and registers introduced with the vector extension facility. The -mtune=z13 option enables z13 specific instruction scheduling without making use of new instructions. Compiling code with -march=z13 reduces the default alignment of vector types bigger than 8 bytes to 8. This is an ABI change and care must be taken when linking modules compiled with different arch levels which interchange variables containing vector type values. For newly compiled code the GNU linker will emit a warning. The -mzvector option enables a C/C++ language extension. This extension provides a new keyword vector which can be used to define vector type variables. (Note: This is not available when enforcing strict standard compliance e.g. with -std=c99. Either enable GNU extensions with e.g. -std=gnu99 or use __vector instead of vector.) Additionally a set of overloaded builtins is provided which is partially compatible to the PowerPC Altivec builtins. In order to make use of these builtins the vecintrin.h header file needs to be included. The new command line options -march=native, and -mtune=native are now available on native IBM z Systems. Specifying these options will cause GCC to auto-detect the host CPU and rewrite these options to the optimal setting for that system. If GCC is unable to detect the host CPU these options have no effect. The IBM z Systems port now supports target attributes and pragmas. Please refer to the documentation for details of available attributes and pragmas as well as usage instructions. -fsplit-stack is now supported as part of the IBM z Systems port. This feature requires a recent gold linker to be used. Support for the g5 and g6 -march=/-mtune= CPU level switches has been deprecated and will be removed in a future GCC release. -m31 from now on defaults to -march=z900 if not specified otherwise. -march=native on a g5/g6 machine will default to -march=z900. SH Support for SH5 / SH64 has been declared obsolete and will be removed in future releases. Support for the FDPIC ABI has been added. It can be enabled using the new -mfdpic target option and --enable-fdpic configure option. SPARC An ABI bug has been fixed in 64-bit mode. Unfortunately, this change will break binary compatibility with earlier releases for code it affects, but this should be pretty rare in practice. The conditions are: a 16-byte structure containing a double or a 8-byte vector in the second half is passed to a subprogram in slot #15, for example as 16th parameter if the first 15 ones have at most 8 bytes. The double or vector was wrongly passed in floating-point register %d32 in lieu of on the stack as per the SPARC calling conventions. Operating Systems AIX DWARF debugging support for AIX 7.1 has been enabled as an optional debugging format. A more recent Technology Level (TL) and GCC built with that level are required for full exploitation of DWARF debugging capabilities. Linux Support for the musl C library was added for the AArch64, ARM, MicroBlaze, MIPS, MIPS64, PowerPC, PowerPC64, SH, i386, x32 and x86_64 targets. It can be selected using the new -mmusl option in case musl is not the default libc. GCC defaults to musl libc if it is built with a target triplet matching the *-linux-musl* pattern. RTEMS The RTEMS thread model implementation changed. Mutexes now use self-contained objects defined in Newlib <sys/lock.h> instead of Classic API semaphores. The keys for thread specific data and the once function are directly defined via <pthread.h>. Self-contained condition variables are provided via Newlib <sys/lock.h>. The RTEMS thread model also supports C++11 threads. OpenMP support now uses self-contained objects provided by Newlib <sys/lock.h> and offers a significantly better performance compared to the POSIX configuration of libgomp. It is possible to configure thread pools for each scheduler instance via the environment variable GOMP_RTEMS_THREAD_POOLS. Solaris Solaris 12 is now fully supported. Minimal support had already been present in GCC 5.3. Solaris 12 provides a full set of startup files (crt1.o, crti.o, crtn.o), which GCC now prefers over its own ones. Position independent executables (PIE) are now supported on Solaris 12. Constructor priority is now supported on Solaris 12 with the system linker. libvtv has been ported to Solaris 11 and up. Windows The option -mstackrealign is now automatically activated in 32-bit mode whenever the use of SSE instructions is requested. Other significant improvements The gcc and g++ driver programs will now provide suggestions for misspelled command line options. $ gcc -static-libfortran test.f95 gcc: error: unrecognized command line option '-static-libfortran'; did you mean '-static-libgfortran'? The --enable-default-pie configure option enables generation of PIE by default. Non exhaustive list of bug fixes in GCC 6.2.0 release: 77463 internal compiler error: in output_move_qimode 71092 [6/7 Regression] ICE: in cxx_eval_call_expression 77034 [6.2RC regression] g++.dg/init/elide5.C fails on powerpc64-unknown-linux-gnu with -m32 70597 [6/7 Regression] cmd/go: deduplicate gccgo afiles by package path 71936 [6/7 Regression] ICE in wide_int_to_tree 77279 build error in isl/ctx.h 67419 gfortran.dg/large_real_kind_2.F90 FAILs 73434 [6/7 Regression] Wrong code with casting 71972 [6 Regression] ICE with ""-std=c++14"" on x86_64-linux-gnu (internal compiler error: Segmentation fault 72819 [AArch64] ABI error: HFA structs of __fp16 incorrectly passed to functions 73456 [6/7 regression][concepts] ICE in non_atomic_constraint_p 72853 gcc/testsuite/gcc.c-torture/execute/20021120-1.c generates incorrect stxssp op with -mcpu=power9 71981 [6/7 Regression] ICE at -O2 and -O3 on x86_64-linux-gnu (internal compiler error: in get_dynamic_type 71881 [6 Regression] ICE on valid code at -O3 with -g enabled on x86_64-linux-gnu: cannot update SSA form 72802 powerpc64le: -mcpu=power9 emits lxssp instruction with offset that isn't a multiple of 4 72800 [5/6 Regression] ICE on invalid C++14 code with initialized lambda capture: tree check: expected class ‘type’ 70040 [5 Regression] ICE in gimplify.c with deferred-length strings 72699 [6/7 Regression] ICE in gfc_check_dependency 70677 Suboptimal cond on AVR: unneeded stack frame 71853 [6/7 regression] ICE on an ill-formed case statement in c_do_switch_warnings 72457 [6/7 Regression] ICE: Segmentation fault 71738 [4.9/5/6/7 Regression] ICE on valid C++ code: tree check: expected record_type or union_type or qual_union_type 71350 [4.9/5/6/7 regression] ICE on trailing return type declaration with initializer list 70847 [6/7 Regression] exponential time in cp_fold for chained virtual function calls 71756 [5/6/7 Regression] internal compiler error: in ~saved_token_sentinel 71147 [6 Regression] Flexible array member wrongly rejected in template 67579 [concepts] Memoization for constraint expressions 67565 [concepts] Very slow compile time and high memory usage with complex concept definitions 71941 [6/7 Regression] ICE with OpenMP tasks and queue 71495 [6/7 Regression] Spurious ""note: initializing argument ... of ..."" without any warning/error 70822 [6 Regression] bogus ""error: lvalue required as unary ‘&’ operand"" with C++14 parenthesized SCOPE_REF 71718 [6/7 Regression] ICE on erroneous recursive template error printing 70824 [6/7 Regression] cc1plus consumes all available memory on specific template code 70781 [6/7 Regression] ICE on invalid C++ code with lambda expressions on x86_64-linux-gnu in finish_expr_stmt 71896 [6/7 Regression] Constexpr function with pointer to member parameter doesn't return constexpr value 71117 [6/7 Regression] Overeager application of conversion to function pointer during overload resolution of call to function object 71511 [6/7 Regression] ICE on valid C++11 code (with decltype) on x86_64-linux-gnu: in cxx_incomplete_type_diagnostic 71513 [6/7 Regression] ICE on valid C++11 code (with alignas specifier) on x86_64-linux-gnu: Segmentation fault 71604 [6/7 Regression] ICE on valid C++11 code with range-based for loop: in pop_binding 71711 [6/7 Regression] ICE on valid C++1z code with fold expression: tree check: expected tree_vec 71814 [6/7 Regression] ICE on valid C++11 code: in write_type 70972 [6 Regression] Inheriting constructors taking parameters by value should move them 71856 [6/7 Regression] _GLIBCXX_DEBUG-mode breaks GNU parallel extension 71916 [6/7 Regression] ICE at -O3 on valid code on x86_64-linux-gnu in ""maybe_record_trace_start 71835 [6/7 Regression] ICE on invalid C++ code with ambiguous overloaded operators: tree check: expected tree that contains ‘decl minimal’ structure 71828 [6/7 regression] ICE on valid C++11 code with constexpr __Complex int variable declaration: in operand_equal_p 71822 [6/7 Regression] ICE: in gimplify_expr 70869 [6 Regression] internal compiler error: Segmentation fault on array of pointer to function members 71493 [6/7 regression] accidental ABI change for structure return on PowerPC 69515 partial specialization of variable templates is broken 70584 constexpr variables cannot be used as intrinsic arguments where an immediate is expected 71164 [6/7 Regression] tree check fail at cp/pt.c:12961 71733 ICE in vmx test cases with -mcpu=power9 71624 [6 regression][CHKP] internal compiler error: in duplicate_thunk_for_node 71823 [6/7 Regression] g++ segfaults with -mfma and -ftree-slp-vectorize 71173 [6/7 regression] Qualified name lookup 70685 [6/7 Regression] ICE: Segmentation fault 70222 Test miscompiled with -O1 71100 [6/7 regression] Internal compiler error while calling a pointer to member function that throws 71739 [6/7 Regression] ICE on valid C++11 code: tree check: expected identifier_node 70916 [6 Regression] gcc ICE at -O3 on valid code on x86_64-linux-gnu in ""tree_operand_check 71521 [6 Regression] Regression in GCC-7.0.0's optimizer 30417 Section .data cannot be moved with -mmcu=atmega88 71057 [6 Regression] ICE in schedule_generic_params_dies_gen 71056 [6 Regression] __builtin 70540 [4.9/5 Regression] ICE on invalid code in cxx_incomple
2016-09-13 00:13:54 +02:00
SUBDIR+= gcc6-libs
SUBDIR+= gcc7
2018-05-21 12:06:24 +02:00
SUBDIR+= gcc7-libs
2018-05-05 06:09:10 +02:00
SUBDIR+= gcc8
2018-09-15 05:08:55 +02:00
SUBDIR+= gcc8-libs
2020-01-05 22:19:40 +01:00
SUBDIR+= gcc9
2020-09-02 18:13:29 +02:00
SUBDIR+= gcc9-libs
SUBDIR+= gforth
SUBDIR+= ghc
2013-12-15 03:52:22 +01:00
SUBDIR+= ghc-bootstrap
2013-12-12 13:48:18 +01:00
SUBDIR+= ghc7
2020-01-03 16:24:52 +01:00
SUBDIR+= ghc80
2021-02-09 14:18:08 +01:00
SUBDIR+= ghc810
2020-01-07 17:53:58 +01:00
SUBDIR+= ghc84
2020-01-12 00:14:27 +01:00
SUBDIR+= ghc88
2021-02-09 14:20:09 +01:00
SUBDIR+= ghc90
2022-02-06 06:37:03 +01:00
SUBDIR+= ghc92
2023-01-21 05:49:46 +01:00
SUBDIR+= ghc94
2019-10-06 17:52:44 +02:00
SUBDIR+= gjs
SUBDIR+= gleam
2015-07-01 16:25:25 +02:00
SUBDIR+= gnucobol
SUBDIR+= go
SUBDIR+= go-bin
2022-03-17 08:10:08 +01:00
SUBDIR+= go118
2022-08-25 10:21:59 +02:00
SUBDIR+= go119
SUBDIR+= go120
2023-08-31 08:05:57 +02:00
SUBDIR+= go121
2017-08-24 05:40:26 +02:00
SUBDIR+= go14
2003-02-17 19:50:37 +01:00
SUBDIR+= gpc
SUBDIR+= gprolog
2022-03-07 21:36:50 +01:00
SUBDIR+= guile18
2014-11-01 14:24:51 +01:00
SUBDIR+= guile20
2017-03-16 11:03:09 +01:00
SUBDIR+= guile22
2022-03-08 01:09:46 +01:00
SUBDIR+= guile30
2005-12-31 23:46:21 +01:00
SUBDIR+= gwydion-dylan
2023-02-25 19:03:14 +01:00
SUBDIR+= hamlet
2011-05-28 03:02:50 +02:00
SUBDIR+= heirloom-awk
2020-01-15 13:41:28 +01:00
SUBDIR+= hs-hslua
2022-02-11 13:06:48 +01:00
SUBDIR+= hs-hslua-classes
2023-01-29 09:39:38 +01:00
SUBDIR+= hs-hslua-cli
2022-02-11 13:04:05 +01:00
SUBDIR+= hs-hslua-core
2023-01-27 16:59:42 +01:00
SUBDIR+= hs-hslua-list
2022-02-11 13:05:41 +01:00
SUBDIR+= hs-hslua-marshalling
2022-02-11 13:07:46 +01:00
SUBDIR+= hs-hslua-objectorientation
2022-02-11 13:08:48 +01:00
SUBDIR+= hs-hslua-packaging
SUBDIR+= hs-language-javascript
2022-02-11 12:59:51 +01:00
SUBDIR+= hs-lua
2022-02-23 17:19:59 +01:00
SUBDIR+= hs-purescript-cst
2022-02-23 17:20:33 +01:00
SUBDIR+= hs-sourcemap
SUBDIR+= hugs
SUBDIR+= icon
2020-01-21 00:33:21 +01:00
SUBDIR+= idris
2001-06-22 05:43:15 +02:00
SUBDIR+= inform
SUBDIR+= intercal
SUBDIR+= ja-gawk
2006-04-17 00:19:22 +02:00
SUBDIR+= jamvm
SUBDIR+= janet
SUBDIR+= japhar
2002-04-22 15:52:25 +02:00
SUBDIR+= jasmin
SUBDIR+= jikes
2015-04-04 14:55:28 +02:00
SUBDIR+= jimtcl
2023-09-01 16:59:58 +02:00
SUBDIR+= joker
2002-05-08 17:42:51 +02:00
SUBDIR+= joos
2021-11-05 13:37:32 +01:00
SUBDIR+= jpm
2005-07-22 11:10:23 +02:00
SUBDIR+= js
SUBDIR+= kaffe
SUBDIR+= kaffe-x11
SUBDIR+= kali
SUBDIR+= kona
2012-08-07 18:07:01 +02:00
SUBDIR+= konoha
2023-03-20 14:58:34 +01:00
SUBDIR+= kotlin
2003-08-30 23:24:30 +02:00
SUBDIR+= ksi
2018-06-02 21:11:22 +02:00
SUBDIR+= libBlocksRuntime
2015-03-04 20:38:28 +01:00
SUBDIR+= libLLVM
SUBDIR+= libcxx
SUBDIR+= libcxxabi
2016-05-05 06:00:09 +02:00
SUBDIR+= libduktape
2020-04-16 19:37:08 +02:00
SUBDIR+= libobjc2
SUBDIR+= librep
2016-03-28 14:57:27 +02:00
SUBDIR+= libunwind
2010-03-04 06:01:51 +01:00
SUBDIR+= likepython
SUBDIR+= llvm
SUBDIR+= lua-moonscript
2013-10-30 08:03:36 +01:00
SUBDIR+= lua51
SUBDIR+= lua52
2015-01-17 18:52:17 +01:00
SUBDIR+= lua53
SUBDIR+= lua54
2006-08-24 00:01:25 +02:00
SUBDIR+= lush
2001-03-20 12:59:00 +01:00
SUBDIR+= maude
SUBDIR+= mawk
2001-05-15 23:10:42 +02:00
SUBDIR+= mercury
SUBDIR+= micropython
SUBDIR+= minischeme
2006-04-13 23:38:12 +02:00
SUBDIR+= mit-scheme-bin
SUBDIR+= mlir
2003-03-01 14:15:01 +01:00
SUBDIR+= mono
2008-11-22 09:56:16 +01:00
SUBDIR+= mono-basic
SUBDIR+= moscow_ml
SUBDIR+= mozjs78
2005-10-20 19:47:11 +02:00
SUBDIR+= mpd
2022-09-02 19:03:34 +02:00
SUBDIR+= mujs
SUBDIR+= nawk
SUBDIR+= neko
2011-10-11 15:04:42 +02:00
SUBDIR+= newlisp
2015-04-25 21:59:10 +02:00
SUBDIR+= newsqueak
2016-09-18 03:04:13 +02:00
SUBDIR+= nim
2022-03-14 03:59:13 +01:00
SUBDIR+= njs
SUBDIR+= nodejs
SUBDIR+= nodejs14
2022-05-05 09:02:24 +02:00
SUBDIR+= nodejs16
2022-12-03 18:02:40 +01:00
SUBDIR+= nodejs18
2013-09-13 13:18:52 +02:00
SUBDIR+= nqp
2014-01-29 02:17:12 +01:00
SUBDIR+= nuitka
2004-09-24 02:28:46 +02:00
SUBDIR+= objc
SUBDIR+= ocaml
2003-05-03 01:33:48 +02:00
SUBDIR+= oo2c
2013-05-26 06:14:12 +02:00
SUBDIR+= open-cobol-ce
2004-06-29 04:59:31 +02:00
SUBDIR+= opencobol
2019-03-26 21:50:01 +01:00
SUBDIR+= openjdk-bin
2019-10-01 14:41:15 +02:00
SUBDIR+= openjdk11
2022-05-13 16:27:35 +02:00
SUBDIR+= openjdk17
2015-02-08 09:42:31 +01:00
SUBDIR+= openjdk8
2013-05-26 03:33:06 +02:00
SUBDIR+= opensource-cobol
2022-12-02 11:49:26 +01:00
SUBDIR+= oracle-jdk17
2015-05-30 11:51:47 +02:00
SUBDIR+= oracle-jdk8
2015-05-30 11:50:41 +02:00
SUBDIR+= oracle-jre8
2008-02-06 05:23:30 +01:00
SUBDIR+= ossp-js
2017-02-16 08:48:58 +01:00
SUBDIR+= owl-lisp
SUBDIR+= p2c
SUBDIR+= p5-Perl-LanguageServer
2011-10-28 11:16:00 +02:00
SUBDIR+= p5-Switch
2001-09-13 16:18:59 +02:00
SUBDIR+= parrot
2018-02-03 21:28:28 +01:00
SUBDIR+= pc-lisp
2007-09-15 11:45:30 +02:00
SUBDIR+= pcc
2008-03-02 13:14:47 +01:00
SUBDIR+= pcc-current
2007-05-05 23:27:31 +02:00
SUBDIR+= pear
SUBDIR+= perl5
2009-11-15 15:21:41 +01:00
SUBDIR+= pfe
SUBDIR+= pforth
2014-11-24 16:39:28 +01:00
SUBDIR+= php56
2019-12-15 18:57:14 +01:00
SUBDIR+= php74
2021-03-07 14:49:19 +01:00
SUBDIR+= php80
2021-11-27 08:25:28 +01:00
SUBDIR+= php81
2022-12-11 15:13:09 +01:00
SUBDIR+= php82
2012-04-27 06:49:47 +02:00
SUBDIR+= picoc
2009-10-28 07:14:38 +01:00
SUBDIR+= pict
2009-03-20 23:12:03 +01:00
SUBDIR+= polyml
2022-02-23 17:22:47 +01:00
SUBDIR+= purescript
SUBDIR+= py-asttokens
2004-12-21 11:43:14 +01:00
SUBDIR+= py-basicproperty
SUBDIR+= py-byterun
SUBDIR+= py-cmake-language-server
2010-08-15 12:47:26 +02:00
SUBDIR+= py-cxfreeze
SUBDIR+= py-execjs
SUBDIR+= py-executing
SUBDIR+= py-findpython
2014-05-18 05:33:04 +02:00
SUBDIR+= py-hy
2020-03-12 08:12:18 +01:00
SUBDIR+= py-inflect
2017-02-08 00:50:48 +01:00
SUBDIR+= py-js2py
2017-02-08 00:49:26 +01:00
SUBDIR+= py-jsparser
2022-02-23 12:36:31 +01:00
SUBDIR+= py-lark-parser
2022-02-23 12:33:07 +01:00
SUBDIR+= py-libcst
2021-11-05 13:37:32 +01:00
SUBDIR+= py-lsp-server
2023-05-05 11:20:16 +02:00
SUBDIR+= py-lsprotocol
SUBDIR+= py-mypy
SUBDIR+= py-mypy_extensions
SUBDIR+= py-parso
SUBDIR+= py-paver
SUBDIR+= py-pure-eval
SUBDIR+= py-py3c
2020-05-18 17:11:18 +02:00
SUBDIR+= py-pygls
2002-12-18 23:35:30 +01:00
SUBDIR+= py-pyrex
SUBDIR+= py-python-language-server
SUBDIR+= py-python-lua
2014-03-14 04:19:18 +01:00
SUBDIR+= py-pythonz
SUBDIR+= py-six
SUBDIR+= py-solc-select
SUBDIR+= py-spark-parser
SUBDIR+= py-uncompyle6
2011-06-17 14:39:46 +02:00
SUBDIR+= py27-html-docs
SUBDIR+= py310-html-docs
SUBDIR+= py311-html-docs
python312 py312-html-docs: added version 3.12.0 Python 3.12 New syntax features: PEP 695, type parameter syntax and the type statement New grammar features: PEP 701, f-strings in the grammar Interpreter improvements: PEP 684, a unique per-interpreter GIL PEP 669, low impact monitoring Improved ‘Did you mean …’ suggestions for NameError, ImportError, and SyntaxError exceptions Python data model improvements: PEP 688, using the buffer protocol from Python Significant improvements in the standard library: The pathlib.Path class now supports subclassing The os module received several improvements for Windows support A command-line interface has been added to the sqlite3 module isinstance() checks against runtime-checkable protocols enjoy a speed up of between two and 20 times The asyncio package has had a number of performance improvements, with some benchmarks showing a 75% speed up. A command-line interface has been added to the uuid module Due to the changes in PEP 701, producing tokens via the tokenize module is up to up to 64% faster. Security improvements: Replace the builtin hashlib implementations of SHA1, SHA3, SHA2-384, SHA2-512, and MD5 with formally verified code from the HACL* project. These builtin implementations remain as fallbacks that are only used when OpenSSL does not provide them. C API improvements: PEP 697, unstable C API tier PEP 683, immortal objects CPython implementation improvements: PEP 709, comprehension inlining CPython support for the Linux perf profiler Implement stack overflow protection on supported platforms New typing features: PEP 692, using TypedDict to annotate **kwargs PEP 698, typing.override() decorator Important deprecations, removals or restrictions: PEP 623: Remove wstr from Unicode objects in Python’s C API, reducing the size of every str object by at least 8 bytes. PEP 632: Remove the distutils package. See the migration guide for advice replacing the APIs it provided. The third-party Setuptools package continues to provide distutils, if you still require it in Python 3.12 and beyond. gh-95299: Do not pre-install setuptools in virtual environments created with venv. This means that distutils, setuptools, pkg_resources, and easy_install will no longer available by default; to access these run pip install setuptools in the activated virtual environment. The asynchat, asyncore, and imp modules have been removed, along with several unittest.TestCase method aliases.
2023-10-02 22:07:14 +02:00
SUBDIR+= py312-html-docs
2019-10-16 13:06:18 +02:00
SUBDIR+= py38-html-docs
2020-10-10 22:19:47 +02:00
SUBDIR+= py39-html-docs
2011-02-22 09:52:37 +01:00
SUBDIR+= python27
SUBDIR+= python310
SUBDIR+= python311
python312 py312-html-docs: added version 3.12.0 Python 3.12 New syntax features: PEP 695, type parameter syntax and the type statement New grammar features: PEP 701, f-strings in the grammar Interpreter improvements: PEP 684, a unique per-interpreter GIL PEP 669, low impact monitoring Improved ‘Did you mean …’ suggestions for NameError, ImportError, and SyntaxError exceptions Python data model improvements: PEP 688, using the buffer protocol from Python Significant improvements in the standard library: The pathlib.Path class now supports subclassing The os module received several improvements for Windows support A command-line interface has been added to the sqlite3 module isinstance() checks against runtime-checkable protocols enjoy a speed up of between two and 20 times The asyncio package has had a number of performance improvements, with some benchmarks showing a 75% speed up. A command-line interface has been added to the uuid module Due to the changes in PEP 701, producing tokens via the tokenize module is up to up to 64% faster. Security improvements: Replace the builtin hashlib implementations of SHA1, SHA3, SHA2-384, SHA2-512, and MD5 with formally verified code from the HACL* project. These builtin implementations remain as fallbacks that are only used when OpenSSL does not provide them. C API improvements: PEP 697, unstable C API tier PEP 683, immortal objects CPython implementation improvements: PEP 709, comprehension inlining CPython support for the Linux perf profiler Implement stack overflow protection on supported platforms New typing features: PEP 692, using TypedDict to annotate **kwargs PEP 698, typing.override() decorator Important deprecations, removals or restrictions: PEP 623: Remove wstr from Unicode objects in Python’s C API, reducing the size of every str object by at least 8 bytes. PEP 632: Remove the distutils package. See the migration guide for advice replacing the APIs it provided. The third-party Setuptools package continues to provide distutils, if you still require it in Python 3.12 and beyond. gh-95299: Do not pre-install setuptools in virtual environments created with venv. This means that distutils, setuptools, pkg_resources, and easy_install will no longer available by default; to access these run pip install setuptools in the activated virtual environment. The asynchat, asyncore, and imp modules have been removed, along with several unittest.TestCase method aliases.
2023-10-02 22:07:14 +02:00
SUBDIR+= python312
SUBDIR+= python38
2020-10-10 22:19:47 +02:00
SUBDIR+= python39
2023-01-19 03:20:47 +01:00
SUBDIR+= qbe
2014-12-30 16:45:52 +01:00
SUBDIR+= qore
SUBDIR+= qt6-qtdeclarative
SUBDIR+= qt6-qtlanguageserver
SUBDIR+= qt6-qtscxml
2019-11-14 22:20:48 +01:00
SUBDIR+= quickjs
SUBDIR+= racket
SUBDIR+= racket-textual
2017-10-05 06:06:02 +02:00
SUBDIR+= rakudo
2009-11-20 13:09:13 +01:00
SUBDIR+= rcfunge
2002-09-02 18:43:52 +02:00
SUBDIR+= rexx-imc
2002-09-02 19:23:12 +02:00
SUBDIR+= rexx-regina
SUBDIR+= ruby
SUBDIR+= ruby-coffee-script
SUBDIR+= ruby-coffee-script-source
SUBDIR+= ruby-cucumber-gherkin
2005-03-23 16:47:56 +01:00
SUBDIR+= ruby-doc-stdlib
2012-03-04 17:11:39 +01:00
SUBDIR+= ruby-execjs
2017-02-21 22:46:16 +01:00
SUBDIR+= ruby-rkelly-remix
2022-01-16 15:00:15 +01:00
SUBDIR+= ruby31
SUBDIR+= ruby31-base
2023-01-26 03:44:19 +01:00
SUBDIR+= ruby32
SUBDIR+= ruby32-base
2011-01-20 22:45:36 +01:00
SUBDIR+= runawk
2016-09-06 12:37:14 +02:00
SUBDIR+= rust
SUBDIR+= rust-bin
SUBDIR+= sablevm
SUBDIR+= sablevm-classpath
SUBDIR+= sablevm-classpath-gui
2002-05-04 02:46:23 +02:00
SUBDIR+= sather
SUBDIR+= sbcl
2010-01-28 08:14:28 +01:00
SUBDIR+= scala
2018-12-16 10:55:52 +01:00
SUBDIR+= scala-sbt
SUBDIR+= scheme48
2003-10-04 22:33:01 +02:00
SUBDIR+= scm
2008-10-20 02:48:44 +02:00
SUBDIR+= see
2008-02-29 14:13:05 +01:00
SUBDIR+= sigscheme
SUBDIR+= siod
SUBDIR+= smalltalk
2003-03-21 23:23:00 +01:00
SUBDIR+= smlnj
2016-07-03 19:51:31 +02:00
SUBDIR+= smlnj11072
2014-07-06 20:07:18 +02:00
SUBDIR+= snobol
2022-02-24 02:28:12 +01:00
SUBDIR+= spago
SUBDIR+= spidermonkey
2016-11-17 07:32:10 +01:00
SUBDIR+= spidermonkey185
2006-05-19 09:50:00 +02:00
SUBDIR+= spl
SUBDIR+= squeak
2010-02-11 01:59:54 +01:00
SUBDIR+= squeak-vm
2005-03-03 10:30:00 +01:00
SUBDIR+= sr
SUBDIR+= sr-examples
SUBDIR+= stalin
2012-12-11 15:52:11 +01:00
SUBDIR+= sun-jdk7
2012-12-11 15:48:42 +01:00
SUBDIR+= sun-jre7
2021-03-01 09:44:21 +01:00
SUBDIR+= surgescript
2001-02-20 21:04:50 +01:00
SUBDIR+= swi-prolog
2014-05-28 12:34:36 +02:00
SUBDIR+= swi-prolog-jpl
SUBDIR+= swi-prolog-lite
SUBDIR+= swi-prolog-packages
SUBDIR+= tcl
SUBDIR+= tcl-expect
2002-08-28 12:13:32 +02:00
SUBDIR+= tcl-otcl
2014-03-13 08:26:06 +01:00
SUBDIR+= tcl85
2019-10-07 16:38:49 +02:00
SUBDIR+= tcltutor
2002-10-28 10:05:10 +01:00
SUBDIR+= tinyscheme
SUBDIR+= ucblogo
SUBDIR+= umb-scheme
2003-08-26 12:20:34 +02:00
SUBDIR+= utilisp
2009-03-05 22:56:54 +01:00
SUBDIR+= vala
SUBDIR+= vscm
SUBDIR+= vslisp
2021-12-19 15:14:20 +01:00
SUBDIR+= wasi-compiler-rt
2021-12-19 15:15:48 +01:00
SUBDIR+= wasi-libc
2021-12-19 15:16:53 +01:00
SUBDIR+= wasi-libcxx
2005-10-19 05:39:43 +02:00
SUBDIR+= wsbasic
2003-05-03 01:25:20 +02:00
SUBDIR+= yabasic
2005-07-21 02:14:43 +02:00
SUBDIR+= yap
2018-02-03 18:31:45 +01:00
SUBDIR+= zenlisp
2019-02-17 13:34:21 +01:00
SUBDIR+= zig
.include "../mk/misc/category.mk"