summaryrefslogtreecommitdiff
path: root/Configure
Commit message (Collapse)AuthorAgeFilesLines
...
* Fix language referring to GitHub issue tracker in various placesDave Rolsky2020-03-141-1/+1
| | | | | | | | | | | | There were a number of spots that used language more appropriate for an email address than a web-based tracker. I noticed this because of the recent 5.30.2 release, which has a perldelta containing the sentence "If you find any we have missed, send email to https://github.com/Perl/perl5/issues." But I think that was because the 5.30.2 branch did not include 8166b4e0bc220e759aa233af54ac1e60cc510f0c.
* Configure: avoid here-doc in eval-ed snippetDagfinn Ilmari Mannsåker2020-01-211-4/+1
| | | | | | | | Some versions of bash, ksh and dash warn or error, complaining about unterminated here-docs, while some versions complain about syntax errors in unrelated parts of the script. This partially reverts commit 52635202f174c9387aa422c4aa32d12f754d8a33.
* Adapt Configure to GCC version 10Petr Písař2020-01-211-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I got a notice from Jeff Law <law@redhat.com>: Your particular package fails its testsuite. This was ultimately tracked down to a Configure problem. The perl configure script treated gcc-10 as gcc-1 and turned on -fpcc-struct-return. This is an ABI changing flag and caused Perl to not be able to interact properly with the dbm libraries on the system leading to a segfault. His proposed patch corrected only this one instance of the version mismatch. Reading the Configure script revealed more issues. This patch fixes all of them I found. Please note I do not have GCC 10 available, I tested it by faking the version with: --- a/Configure +++ b/Configure @@ -4672,7 +4672,7 @@ $cat >try.c <<EOM int main() { #if defined(__GNUC__) && !defined(__INTEL_COMPILER) #ifdef __VERSION__ - printf("%s\n", __VERSION__); + printf("%s\n", "10.0.0"); #else printf("%s\n", "1"); #endif (cherry picked from commit 6bd6308fcea3541e505651bf8e8127a4a03d22cd, which was accidentally reverted by commit e849841dca2a8b11119997585f795647c52cdcdf)
* Regen after backport syncingH.Merijn Brand2020-01-211-2/+6
|
* Include <stdio.h> in getpgrp/setpgrp probes for printf prototype.Andy Dougherty2019-12-291-0/+2
| | | | | C compilers typically issue a warning, but c++ compilers may abort with an error.
* Fix strtoll, strtoul, and strtouq probes to compile under clang++.Andy Dougherty2019-12-291-6/+6
| | | | | | | The test programs were missing the stdlib.h header, and needed tweaks to the check() prototype to compile under clang++. These changes should be fine for C compilers as well, but they have typically been more forgiving, so shouldn't be affected.
* Fix strtoull() probe to run under clang++.Andy Dougherty2019-12-291-2/+2
| | | | | | Include the appropriate header and get rid of slightly incorrect prototype. Change function return type to void since we don't explicitly return a useful value.
* Use a compile and run test for lchown() to satisfy clang++.Andy Dougherty2019-12-291-18/+15
| | | | | | | For glibc, previous reports were that some functions (such as lchown()) are present in libc, but are unimplemented. That is, they always fail and set errno=ENOSYS. Unfortunately, the stub test doesn't work under clang++. Thus use a compile and run test. This should be more reliable.
* Add <stdlib.h> for futimes compilation test.Andy Dougherty2019-12-291-0/+1
| | | | | Since the test uses exit(), the appropriate header should be included. clang++ throws an error otherwise.
* Update documentation, readmes, comments, and utilities to reference the ↵Dan Book2019-12-221-7/+7
| | | | | | GitHub issue tracker The perlbug utility and perlbug@perl.org should no longer be used to submit bug reports or patches.
* Regenerate Configure and friends after metaconfig changesKarl Williamson2019-12-031-18/+142
| | | | | | | | A probe for wcrtomb() and one for attribute always inline have been added, and the ones for: 1) checking if there is a C backtrace facility; and 2) character data alignedness have been revised
* Adapt Configure to GCC version 10Petr Písař2019-11-121-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | I got a notice from Jeff Law <law@redhat.com>: Your particular package fails its testsuite. This was ultimately tracked down to a Configure problem. The perl configure script treated gcc-10 as gcc-1 and turned on -fpcc-struct-return. This is an ABI changing flag and caused Perl to not be able to interact properly with the dbm libraries on the system leading to a segfault. His proposed patch corrected only this one instance of the version mismatch. Reading the Configure script revealed more issues. This patch fixes all of them I found. Please note I do not have GCC 10 available, I tested it by faking the version with: --- a/Configure +++ b/Configure @@ -4672,7 +4672,7 @@ $cat >try.c <<EOM int main() { #if defined(__GNUC__) && !defined(__INTEL_COMPILER) #ifdef __VERSION__ - printf("%s\n", __VERSION__); + printf("%s\n", "10.0.0"); #else printf("%s\n", "1"); #endif
* (perl #133495) remove probing for d_u32alignTony Cook2019-10-081-97/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Compiler optimisation meant the could return the wrong result in some cases. This wasn't a problem on x86, but on platforms where alignment is required it caused problems. Strangely enough d_u32align is "define" in the win32 config files, on any x64 system (the probe only checked on 32-bit systems), on ARM and on the one i386 build I checked. This should have little to no effect on performance, for example, building: typedef unsigned long U64; U64 b64little(unsigned char *p) { return *p | ((U64)p[1] << 8) | ((U64)p[2] << 16) | ((U64)p[3] << 24) | ((U64)p[4] << 32) | ((U64)p[5] << 40) | ((U64)p[6] << 48) | ((U64)p[7] << 56); } U64 b64big(unsigned char *p) { return ((U64)*p << 56) | ((U64)p[1] << 48) | ((U64)p[2] << 40) | ((U64)p[3] << 32) | ((U64)p[4] << 24) | ((U64)p[5] << 16) | ((U64)p[6] << 8) | ((U64)p[7]); } unsigned b32little(unsigned char *p) { return *p | ((unsigned)p[1] << 8) | ((unsigned)p[2] << 16) | ((unsigned)p[3] << 24); } unsigned b32big(unsigned char *p) { return ((unsigned)p[0] << 24) | ((unsigned)p[1] << 16) | ((unsigned)p[2] << 8) | p[3]; } with: gcc -O2 -S test.c produces: .file "test.c" .text .p2align 4,,15 .globl b64little .type b64little, @function b64little: .LFB0: .cfi_startproc movq (%rdi), %rax ret .cfi_endproc .LFE0: .size b64little, .-b64little .p2align 4,,15 .globl b64big .type b64big, @function b64big: .LFB1: .cfi_startproc movq (%rdi), %rax bswap %rax ret .cfi_endproc .LFE1: .size b64big, .-b64big .p2align 4,,15 .globl b32little .type b32little, @function b32little: .LFB2: .cfi_startproc movl (%rdi), %eax ret .cfi_endproc .LFE2: .size b32little, .-b32little .p2align 4,,15 .globl b32big .type b32big, @function b32big: .LFB3: .cfi_startproc movl (%rdi), %eax bswap %eax ret .cfi_endproc .LFE3: .size b32big, .-b32big .ident "GCC: (Debian 6.3.0-18+deb9u1) 6.3.0 20170516" .section .note.GNU-stack,"",@progbits so the compiler is smart enough to recognize the unaligned access code and optimize it on platforms that support it. MSVC doesn't seem to optimize this, but since Win32 has been built with d_u32align=define since 2005, this change will make no difference.
* Add check for malloc_usable_size (Richard Leach)H.Merijn Brand2019-09-161-0/+6
|
* Configure: Include <stdlib.h> in futimes checkFlorian Weimer2019-09-101-0/+1
| | | | Needed for the exit function.
* Change "--sysroot X" to "--sysroot=X" in ConfigureHauke D2019-08-261-1/+1
|
* Reset xxx_convert to empty string if none of 3 utilities is foundJames E Keenan2019-08-201-5/+6
| | | | | | | | | | | | | | | | | | This will cause Configure to enter the WHOA block and default to using sprintf. Change Gconvert checkit() prototype for [perl #134371]. In the checkit() routine inside Configure, clang++ was taking the if (strcmp(expect, got)) branch even though the 'expect' and 'got' strings were identical. A first step in debugging this was to realize that the checkit() function never returned a value, so relabel it as void. With clang version 7.0.1-8 (tags/RELEASE_701/final) (Debian), this change seems to work around the strcmp issue. Further Configure gconvert probe cleanups for C++. As part of debugging [perl #134375] and [perl #134371], try to eliminate warnings thrown by clang++.
* Configure: reuse "cached" value of "none" for dirH.Merijn Brand2019-07-251-1/+1
| | | | | | | | | | | | | | | When value of a directory (i.e. man1dir) is set to "none" because of: - '-D' option set on cmdline (i.e. -Dman1dir=none) OR - because value is reused from previous configure run And when the prefix is different from the previous configure run(*) then keep the value of "none". predefined/cached value does not contain the old prefix so there is no harm in keeping it. (*): due to another bug this also happens when prefix ends with a trailing slash See https://rt.perl.org/Ticket/Display.html?id=134284
* Remove trailing '/' from prefixH.Merijn Brand2019-07-251-12/+16
| | | | | | | | | | | | | | Change how/when the trailing '/' from a prefix is removed. The original code had two problems: 1) it only stripped the trailing slash when value was predefined (either from -Dprefix=/foo/bar/ or from a previous configure run) 2) when it did strip the value then it also caused 'oldprefix' to be set. This in turns causes other predefined (/cached) paths to be ignored. See https://rt.perl.org/Public/Bug/Display.html?id=134284
* Allow -Uusedtrace / -Dusedtrace=false / -Dusedtrace=noH.Merijn Brand2019-07-091-0/+4
|
* [PATCH] Remove vestiges of mpeix support (removed in 5.17.x)Richard Leach2019-05-301-1/+1
|
* Regenerate Configure from latest metaconfigAaron Crane2019-04-251-6/+3
| | | | This corresponds to metaconfig commit 70210eb08b2643bfce98cfa92a3ee52c613dfa56
* Improve setlocale() detection in Configure-ish filesKarl Williamson2019-03-041-4/+177
| | | | This also now notes some behavior of setlocale
* Add towupper() and towlower() to Configure-ish filesKarl Williamson2019-03-041-4/+16
|
* Add wctype.h to Configure-ish filesKarl Williamson2019-03-041-0/+6
|
* Improve detection of memrchr, strlcat, and strlcpy.Andy Dougherty2019-01-311-6/+57
| | | | | | | | | | | This is continuation of commit f8d82a1010 addressing [perl #133760]. Linux systems using the musl C library have memmem, memrchr, strlcat, and strlcpy, but the prototypes are only visible if _GNU_SOURCE is defined. This patch makes Configure test both whether the prototype is visible and whether the C symbol is visible. Still to be done is automatically adding _GNU_SOURCE if the musl library is being used -- probably in hints/linux.sh.
* Another attempt to improve Configure detection of memmem() [perl #133760].Andy Dougherty2019-01-231-40/+18
| | | | | | | | This updates commit ca152fd8207cf53816b1407d5f54f6ea160a3ef8. Linux systems have memmem, but the prototype in <string.h> is only visible if __GNU_SOURCE is defined. This version tests for both the prototype in <string.h> and the symbol in libc. (Thanks to Tony C. for the suggestion.) (For BSD systems, no extra define is needed.)
* Add ability to include literal text in the prototype check.Andy Dougherty2019-01-231-0/+1
| | | | | | This is the same technique as in the metaconfig unit Protochk.U. See that unit for more usage information. It is a bit clunky, but does work.
* Improve Configure detection of memmem() [perl #133760].Andy Dougherty2019-01-221-2/+41
| | | | | | | | | | | | Linux systems have memmem, but the header prototype is only visible if the C library, but didn't check if the correct prototype is available. This patch compiles & runs a test program that will fail if the prototype is needed but not available. This does not completely close [perl #133760]. The tests for strlcat() and strlcpy() may also need to be similarly changed. Also, this patch does not change whether _GNU_SOURCE is defined or not. Presumably that would be done separately in the linux hints file.
* Rely on C89 "const"Aaron Crane2018-11-271-35/+0
| | | | | | | | | | The metaconfig probe for <db.h> previously relied on the d_const symbol set by the "const" probe, so generating Configure here has been done against metaconfig commit 1204d4627a06b11f16620188f3fa83159ed35fd9 which changes that. Thanks to khw++ for pointing out this oversight in my attempt last year to make the codebase rely on C89.
* Add initial support for Minix3H.Merijn Brand2018-10-301-1/+4
| | | | | | | Patch by Sevan Janiyan Include a hints file for Minix, derived from the NetBSD one but stripped back to remove most of the legacy parts.
* Add gcc-8 and gcc-9 for FORTIFY_SOURCEH.Merijn Brand2018-09-021-1/+1
|
* Configure: redirect try.c errors to /dev/nullKarl Williamson2018-08-011-1/+1
|
* Fix Berkeley DB function type tests.Craig A. Berry2018-07-071-0/+2
| | | | | | | | These tests fail with clang with a missing return in non-void function warning, and any warning at all causes the types to default to int. It turns out DB::File doesn't use Configure's types, but we should report the correct thing in case anyone accesses them via %Config.
* Add HAS_STRTOD_L to metaconfig.h and rebuild ConfigureAaron Crane2018-04-191-0/+6
|
* Rebuild Configure using metaconfig langinfo changeAaron Crane2018-04-191-9/+9
| | | | We are now in sync with perl5-metaconfig/metaconfig@2d3a3017b8d44d778ed765d529ca114924b3ee14
* Rebuild Configure from latest unitsAaron Crane2018-04-191-24/+24
| | | | | | | | | | | | Most of the change here comes from a single unit being moved in the generated Configure, but there are some substantive changes: - config_h.SH was missing HAS_DUPLOCALE and d_duplocale - d_duplocale was also missing from the platform-specific config-var files This still doesn't quite ensure that rebuilding Configure makes no changes, because there are differences to nl_langinfo() handling that need a change in our metaconfig units. That will come next.
* Regen after backporting and mergingH.Merijn Brand2018-04-161-4/+21
| | | | I am aware that this might break a few tests
* Whitespace consistencyH.Merijn Brand2018-03-271-98/+84
|
* Actually make I18N::Langinfo avail on all platformsKarl Williamson2018-03-121-2/+6
| | | | | | | | | | | | I thought I had done this earlier, but testing on Windows demonstrated that I hadn't. While at it, move the details in the docs for Perl_langinfo to the module's pod. This doesn't follow the paradigm for putting the Configure stuff in all the related configure files, but I saw no point to doing so. If you are reading this because I was wrong, feel free to ticket it or fix it.
* configure probe for mkostemp()Zefram2017-12-221-0/+6
| | | | | This is another file descriptor creating function that's needed as an O_CLOEXEC-handling variant of an existing function.
* configure probes for accept4(), dup3(), pipe2()Zefram2017-12-221-0/+18
| | | | | These will shortly be used to implement I/O operations that create file descriptors with the FD_CLOEXEC flag set atomically.
* Restore ability to build on platforms without snprintf()Aaron Crane2017-11-181-0/+69
| | | | | | | | | | | | | C89 does not in fact define snprintf() or vsnprintf(), and we must therefore probe for the existence of those functions before trying to use them. khw++ for pointing out my earlier error. This reverts part or all of each of the following commits: 13d66b05c6163c3514774d3d11da5f3950e97e98 Rely on C89 vsnprintf() e791399041815a1a45cea3c7f277c7045b96e51b Rely on C89 snprintf() adf7d503e55721c500f0bf66560b8f5df7966fe7 pod/perlhacktips.pod: remove some outdated portability notes
* Rebuild Configure from current metaconfigAaron Crane2017-11-181-1/+1
| | | | | | Commit 46857622bdd8fff9558b66485f86ae4eb019ec55 of the metaconfig repo reverts to the upstream version of i_sysmman.U, which has a slightly different comment.
* Configure: rebuild from latest unitsAaron Crane2017-10-231-37/+37
| | | | This is a whitespace-only change.
* Rely on C89 <string.h>Aaron Crane2017-10-211-76/+24
| | | | This requires a corresponding change in the metaconfig units.
* Don't attempt to use non-standard <memory.h>Aaron Crane2017-10-211-26/+0
| | | | It's only needed on systems without C89 <string.h>, which we rely on anyway.
* Rely on C89 <assert.h>Aaron Crane2017-10-211-6/+0
|
* Rely on C89 <math.h>Aaron Crane2017-10-211-49/+14
| | | | This requires a corresponding change in the metaconfig units.
* Rely on C89 strerror()Aaron Crane2017-10-211-43/+12
| | | | This requires a corresponding change to the metaconfig units.