aboutsummaryrefslogtreecommitdiffstats
path: root/configure.ac
Commit message (Collapse)AuthorAgeFilesLines
* support C++ std::nullptr_t卜部昌平2020-01-311-0/+11
| | | | | | | C++ keyword `nullptr` represents a null pointer (note also that NULL is an integer in C++ due to its design flaw). Its type is `std::nullptr_t`, defined in <cstddef> standard header. Why not support it when the backend implementation can take a null pointer as an argument.
* avoid undefined behaviour when n==0卜部昌平2020-01-101-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | ISO/IEC 9899:1999 section 6.5.7 states that "If the value of the right operand is negative or is greater than or equal to the width of the promoted left operand, the behavior is undefined". So we have to take care of such situations. This has not been a problem because contemporary C compilers are extraordinary smart to compile the series of shifts into a single ROTLQ/ROTRQ machine instruction. In contrast to what C says those instructions have fully defined behaviour for all possible inputs. Hence it has been quite difficult to observe the undefined-ness of such situations. But undefined is undefined. We should not rely on such target-specific assumptions. We are fixing the situation by carefully avoiding shifts with out-of- range values. At least GCC since 4.6.3 and Clang since 8.0 can issue the exact same instructions like before the changeset. Also in case of Intel processors, there supposedly be intrinsics named _rotr/_rotl that do exactly what we need. They, in practice, are absent on Clang before 9.x so we cannot blindly use. But we can at least save MSVC. See also: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57157 https://bugs.llvm.org/show_bug.cgi?id=17332
* modify MJIT_CC only on RUBY_DEBUG=ciKoichi Sasada2020-01-031-1/+2
| | | | Modify MJIT_CC (27fae1d4ad) only on CI environment.
* disable ccache if $CC is in /usr/lib/ccache/$CC.Koichi Sasada2020-01-031-0/+5
| | | | | | | | | | | | | MJIT with ccache has a problem on docker environment, so we need to use original CC (/usr/bin/gcc, for example). Ubuntu system provides /usr/lib/ccache/gcc and so on to use gcc with ccache. It is easy to setup ccache by adding /usr/lib/ccache to $PATH. However we need to use /usr/bin/gcc (and so on) for MJIT_CC. We can specify MJIT_CC option at configure, but specifying them is troublesome. This patch choose original $CC (/usr/bin/gcc, for example) if $CC is /usr/lib/ccache/$CC.
* Use __func__ as rb_cv_function_name_string on OpenBSDJeremy Evans2019-12-281-9/+12
| | | | | | | | | | | | | | The use of RUBY_WERROR_FLAG causes this test to fail on OpenBSD platforms that use the binutils linker (ld.bfd) instead of the llvm linker (ld.lld), due to warnings added to the binutils linker in OpenBSD. Removing the RUBY_WERROR_FLAG would probably also fix it, but that would affect other platforms. This should also be backported to Ruby 2.7. Analysis and similar fix recommended by George Koehler.
* add several __has_something macro卜部昌平2019-12-261-0/+2
| | | | | | | With these macros implemented we can write codes just like we can assume the compiler being clang. MSC_VERSION_SINCE is defined to implement those macros, but turned out to be handy for other places. The -fdeclspec compiler flag is necessary for clang to properly handle __has_declspec().
* Allow more than one major version number in target_osMatt Valentine-House2019-12-131-1/+1
|
* support cross-compilation.Koichi Sasada2019-12-111-0/+1
| | | | | | | | On cross-compilation, compiled binary can no be created because compiled binary should be created by same interpreter (on cross- compilation, host ruby is used to build ruby (BASERUBY)). So that cross-compilation system loads required scripts in text. It is same as miniruby.
* Fixed the inverted conditionNobuyoshi Nakada2019-12-031-1/+1
|
* Wrap statements in AS_IF properlyNobuyoshi Nakada2019-12-031-1/+2
|
* Disable _FORTIFY_SOURCE on mingw for nowNobuyoshi Nakada2019-12-021-0/+11
| | | | It causes a link error due to some `__*_chk` functions on mingw.
* Improve string literal concatenation for C++11Mark Abraham2019-11-061-2/+2
| | | | | | | | | | Downstream C++ projects that compile with C++11 or newer and include the generated config.h file issue compiler warnings. Both C and C++ compilers do string-literal token pasting regardless of whitespace between the tokens to paste. C++ compilers since C++11 require such spaces, to avoid ambiguity with the new style of string literals introduced then. This change fixes such projects without affecting core Ruby.
* Check for nonnull attribute in configureNobuyoshi Nakada2019-10-291-0/+5
|
* Revert "Check for nonnull attribute in configure"卜部昌平2019-10-291-5/+0
| | | | | | This reverts commit 54eb51d72bc43f90b595f0d7ffb5069ebf1a56d9. Windows build failure. See also https://github.com/ruby/ruby/runs/278718805
* Check for nonnull attribute in configureNobuyoshi Nakada2019-10-291-0/+5
|
* show BASERUBY version at configure.Koichi Sasada2019-10-201-0/+3
|
* oops卜部昌平2019-09-101-1/+1
| | | | Silly typo.
* fix CentOS 6 compile error卜部昌平2019-09-101-0/+15
| | | | See also https://rubyci.org/logs/rubyci.s3.amazonaws.com/centos6/ruby-master/log/20190910T003005Z.fail.html.gz
* Default to cc/c++ instead of gcc/g++ on OpenBSDJeremy Evans2019-09-091-2/+6
|
* Stop setting same flags as cflags to cxxflagsNobuyoshi Nakada2019-09-061-6/+6
|
* Check clang++ as CXX when CXX is bare clang without suffixNobuyoshi Nakada2019-09-061-1/+1
|
* Fix the appropriate C++ compiler in OS X selectionKazuhiro NISHIYAMA2019-08-271-5/+5
| | | | | Merge space and slash to character class and add missing `CXX=` before `=g++-4.2` at 5e10cb04e88c8a95ee44f6cad2bdf264e0dff92a
* Refined the appropriate C++ compiler in OS X selectionNobuyoshi Nakada2019-08-261-9/+14
| | | | Allows CC to be prefixed another path or command, e.g., ccache.
* configure.ac: Improve icc_version guessing for non-icc environmentYusuke Endoh2019-08-251-1/+1
| | | | | | | | | | | icc_version was wrongly defined as "__ICC" on non-icc C compiler, which caused a warning: ``` ./configure: line 8211: test: __ICC: integer expression expected ``` This change adds a sed commend to delete "__ICC".
* configure.ac: fix the guess of icc_versionYusuke Endoh2019-08-251-3/+1
| | | | | | | | | The icc_version guessing was accidentally disabled because of 61885c9b7ca8ccdaf53d7c365fbb86bad3294d88; `AC_PROG_CC_C99` changes CC like "icc -std=c99", and `AS_CASE(["x$CC"], [xicc],` does not match. The variable `icc_version` is eventually defined, so the `AS_CASE` is not needed. This change removes the `AS_CASE`.
* Check whether syscall(2) is deprecated by actual warningsNobuyoshi Nakada2019-08-201-1/+7
|
* Check for minimum required OSX version earlierNobuyoshi Nakada2019-08-201-14/+15
|
* Bail out if unsupported old MacOSX is requiredNobuyoshi Nakada2019-08-201-10/+10
|
* Fixed the check for OSX versionNobuyoshi Nakada2019-08-201-5/+5
| | | | | | Should compare minimum required version, and with the particular macro defined for each version. Also made the error messages consistent.
* crash report on mac little updateDavid CARLIER2019-08-191-0/+1
| | | | | | displaying vm info as Linux and FreeBSD. checking libproc as it is present only from 10.5 version. https://github.com/ruby/ruby/pull/2384
* NetBSD native support of explicit_bzero's like feature (#2145)David CARLIER2019-08-171-0/+1
|
* Relaxed target_os matchingNobuyoshi Nakada2019-07-231-5/+5
| | | | | | When target_alias is not empty, `-gnu` suffixed is not stripped. [Bug #16015]
* Improve build process and coroutine implementation selection.Samuel Williams2019-07-181-25/+33
|
* Add coroutine context switch for i386-mingw32Lars Kanis2019-07-071-0/+3
| | | | | It's essentially a translation of Context.asm from Intel to AT&T syntax.
* Use realpath(3) instead of custom realpath implementation if availableJeremy Evans2019-07-011-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This approach is simpler than the previous approach which tries to emulate realpath(3). It also performs much better on both Linux and OpenBSD on the included benchmarks. By using realpath(3), we can better integrate with system security features such as OpenBSD's unveil(2) system call. This does not use realpath(3) on Windows even if it exists, as the approach for checking for absolute paths does not work for drive letters. This can be fixed without too much difficultly, though until Windows defines realpath(3), there is no need to do so. For File.realdirpath, where the last element of the path is not required to exist, fallback to the previous approach, as realpath(3) on most operating systems requires the whole path be valid (per POSIX), and the operating systems where this isn't true either plan to conform to POSIX or may change to conform to POSIX in the future. glibc realpath(3) does not handle /path/to/file.rb/../other_file.rb paths, returning ENOTDIR in that case. Fallback to the previous code if realpath(3) returns ENOTDIR. glibc doesn't like realpath(3) usage for paths like /dev/fd/5, returning ENOENT even though the path may appear to exist in the filesystem. If ENOENT is returned and the path exists, then fall back to the default approach.
* Enable native fiber coroutines on i386-openbsdJeremy Evans2019-07-011-0/+3
|
* Use native coroutine implementation on OpenBSD-amd64Jeremy Evans2019-06-261-0/+3
| | | | When using native fibers, do not load ucontext, as it isn't needed.
* Do not attempt to use ucontext for fibers on OpenBSDJeremy Evans2019-06-261-0/+3
| | | | | | | OpenBSD does not support ucontext. There may be a more generic way to handle this, using the result of AC_CHECK_HEADERS(ucontext.h).
* Restore updated implementation of arm32 coroutine code, but prefer ucontext.Samuel Williams2019-06-261-0/+3
|
* Revert "coroutine/arm32/Context.S: save/restore the registers via stack"Yusuke Endoh2019-06-261-3/+0
| | | | | | | This reverts commit 6df1814c08df93bbc0b3e7a73649bcf82e126064. It caused a SEGV again: https://rubyci.org/logs/rubyci.s3.amazonaws.com/scw-9d6766/ruby-master/log/20190626T051707Z.fail.html.gz
* Add `ucontext` coroutine implementation for generic fallback.Samuel Williams2019-06-261-2/+2
|
* coroutine/arm32/Context.S: save/restore the registers via stackYusuke Endoh2019-06-261-0/+3
| | | | Retry of 518adcca0a and dbe232e24e
* Revert 518adcca0a and dbe232e24eYusuke Endoh2019-06-251-3/+0
| | | | | | | | | | 518adcca0a: "Try using arm32 implementation for fibers." dbe232e24e: "Order of arguments might be incorrect in arm32 coroutine implementation." It seems to cause SEGV consistently on Ubuntu armv7l eabihf: https://rubyci.org/logs/rubyci.s3.amazonaws.com/scw-9d6766/ruby-master/log/20190625T081710Z.fail.html.gz https://rubyci.org/logs/rubyci.s3.amazonaws.com/scw-9d6766/ruby-master/log/20190625T111708Z.fail.html.gz
* Try using arm32 implementation for fibers.Samuel Williams2019-06-241-0/+3
|
* Try using arm64 implementation for fibers.Samuel Williams2019-06-241-0/+3
|
* Use spaces for indentation in `configure.ac`.Samuel Williams2019-06-241-22/+22
|
* Remove IA64 support.Samuel Williams2019-06-191-33/+0
|
* Moved Makefile.in under templateNobuyoshi Nakada2019-06-071-1/+1
|
* Revert "Moved Makefile.in under template"Nobuyoshi Nakada2019-06-071-1/+1
| | | | | | | | | This reverts commits: * 6f9d5fafe040cb02a1278fbfcdcb8063d564824c * bb3c89b6437049e26669b2156310670d5e06e386 And remove the dependency of Makefile on Makefile.in transitionally.
* Moved Makefile.in under templateNobuyoshi Nakada2019-06-071-1/+1
|