path: root/configure
AgeCommit message (Collapse)AuthorLines
2014-07-28work around constant folding bug 61144 in gcc 4.9.0 and 4.9.1Rich Felker-21/+0
previously we detected this bug in configure and issued advice for a workaround, but this turned out not to work. since then gcc 4.9.0 has appeared in several distributions, and now 4.9.1 has been released without a fix despite this being a wrong code generation bug which is supposed to be a release-blocker, per gcc policy. since the scope of the bug seems to affect only data objects (rather than functions) whose definitions are overridable, and there are only a very small number of these in musl, I am just changing them from const to volatile for the time being. simply removing the const would be sufficient to make gcc 4.9.1 work (the non-const case was inadvertently fixed as part of another change in gcc), and this would also be sufficient with 4.9.0 if we forced -O0 on the affected files or on the whole build. however it's cleaner to just remove all the broken compiler detection and use volatile, which will ensure that they are never constant-folded. the quality of a non-broken compiler's output should not be affected except for the fact that these objects are no longer const and thus possibly add a few bytes to data/bss. this change can be reconsidered and possibly reverted at some point in the future when the broken gcc versions are no longer relevant. (cherry picked from commit a6adb2bcd8145353943377d6119c1d7a4242bae1)
2014-05-20trivial formatting fix for the config.mak generated by configureRich Felker-1/+1
(cherry picked from commit 7c6db373a55a348b3ecc7b124dd4ea541eff63cd)
2014-05-20add configure check for broken gcc 4.9.0 and possibly other versionsRich Felker-5/+37
this is gcc bug #61144. the broken compiler is detected, but the user must manually work around it. this is partly to avoid complex logic for adding workaround CFLAGS and attempting to recheck with them, and partly for the sake of letting the user know the compiler is broken (since the workaround will result in less-efficient code production). some refactoring was also needed to move the check for gcc outside of the check for whether to build the compiler wrapper. (cherry picked from commit 9ca4dae5d895cf816eb1815511aba77a90f6acd7)
2014-05-20add configure check for working compilerRich Felker-0/+9
without this, broken choices of CC/CPPFLAGS/CFLAGS don't show up until late in the configure process where they are confusingly reported as a different failure such as incorrect long double type. (cherry picked from commit 8945667fadc2eb71b7924bb4c5a69507fd362f4a)
2014-05-20fix superh nofpu check on old gcc versionsBobby Bingham-1/+1
As far as gcc3 knows, sh4 is the only processor version that can have an FPU, so it indicates the FPU's presence by defining __SH4__. This is not defined if there is no FPU, even if the processor really is an SH4. Starting with gcc4, there is support for the sh2a processor, which has an FPU but is not an SH4. gcc4 therefore additionally defines __SH_FPU_ANY__ when there is an FPU, but still doesn't define __SH4__ for an FPU-less sh4. Therefore, to support all gcc versions, we must look at both preprocessor symbols. (cherry picked from commit 23d64182d8328c300b368446aad20da9cec91aa3)
2014-03-19configure: check for __ILP32__ if arch is x86_64rofl0r-0/+4
otherwise a multilib compiler used with -mx32 will not be detected properly.
2014-03-17make configure accept alternate gcc tuples for x32Rich Felker-1/+1
the previous pattern required "x32" to be used as the second field of the gcc tuple, which is usually reserved for vendor use and not appropriate as an ABI specifier. with this change, putting "x32" at the end of the tuple, the way ABI specifiers are normally done, is also permitted.
2014-02-28improve configure's target arch matchingRich Felker-4/+6
most notably, it was failing to match sh4-*, etc., but in general the explicit matching of hyphens for some archs was problematic because it failed to accept simply the musl-style arch name (without a gcc-style tuple) as an input. the original motivation of matching hyphens was to prevent incorrectly identifying a 64-bit arch as the corresponding 32-bit arch (e.g. mips* matching mips64) but this is easily fixed by simply checking (and for now, rejecting as unsupported) the relevant 64-bit archs.
2014-02-28fix missing CFLAGS in configure test for float on shRich Felker-1/+1
2014-02-27fix copy-and-paste error in configure's IEEE double check for shRich Felker-1/+1
2014-02-27add nofpu subarchs to the sh arch, and properly detect compiler's fpu configRich Felker-2/+18
2014-02-27fix endian subarchs for sh archRich Felker-2/+2
default endianness for sh on linux is little, and while conventions vary, "eb" seems to be the most widely used suffix for big endian.
2014-02-27rename superh port to "sh" for consistencyRich Felker-2/+2
linux, gcc, etc. all use "sh" as the name for the superh arch. there was already some inconsistency internally in musl: the dynamic linker was searching for "ld-musl-sh.path" as its path file despite its own name being "". there was some sentiment in both directions as to how to resolve the inconsistency, but overall "sh" was favored.
2014-02-24mips: add mips-sf subarch support (soft-float)Szabolcs Nagy-2/+4
Userspace emulated floating-point (gcc -msoft-float) is not compatible with the default mips abi (assumes an FPU or in kernel emulation of it). Soft vs hard float abi should not be mixed, __mips_soft_float is checked in musl's configure script and there is no runtime check. The -sf subarch does not save/restore floating-point registers in setjmp/longjmp and only provides dummy fenv implementation.
2014-02-23superh portBobby Bingham-0/+4
2014-02-23configure: suppress bogus pointer-int cast warningsrofl0r-0/+1
2014-02-23configure: recognize x86_64-x32 and x32rofl0r-0/+1
x32 is the internal arch name, but glibc uses x86_64-x32. there doesn't exist a specific triple for x32 in gcc and binutils. you're supposed to build your compiler for x86_64 and configure it with multilib support for "mx32". however it turns out that using a triple of x86_64-x32 makes gcc and binutils pick up the right arch (they detect it as x86_64) and allows us to have a unique triple for cross-compiler toolchains.
2013-08-28remove -Wcast-align from --enable-warningsRich Felker-1/+0
I originally added this warning option based on a misunderstanding of how it works. it does not warn whenever the destination of the cast has stricter alignment; it only warns in cases where misaligned dereference could lead to a fault. thus, it's essentially a no-op for i386, which had me wrongly believing the code was clean for this warning level. on other archs, numerous diagnostic messages are produced, and all of them are false-positives, so it's better just not to use it.
2013-08-27add attribute((may_alias)) checking in configureRich Felker-0/+21
this will be needed for upcoming commits to the string/mem functions to correct their unannounced use of aliasing violations for word-at-a-time search, fill, and copy operations.
2013-08-20fix two bugs in sed code configure uses to save command lineRich Felker-1/+1
one place where semicolon (non-portable) was still used in place of separate -e options (copied over from an old version of this code), and use of a literal slash in the bracket expression for the final command, despite slash being used as the delimiter for the s command.
2013-08-16make configure store its command line in config.mak for easy re-runRich Felker-1/+11
proper shell quoting and pretty-printing (avoiding ugly gratuitous quoting and bad quoting style) is included.
2013-08-16fix detection of arm hardfloatRich Felker-1/+1
it turns out that __SOFTFP__ does not indicate the ABI in use but rather that fpu instructions are not to be used at all. this is specified in ARM's documentation so I'm unclear on how I previously got the wrong idea. unfortunately, this resulted in the 0.9.12 release producing a dynamic linker with the wrong name. fortunately, there do not yet seem to be any public toolchain builds using the wrong name. the __ARM_PCS_VFP macro does not seem to be official from ARM, and in fact it was missing from the very earliest gcc versions (around 4.5.x) that added -mfloat-abi=hard. it would be possible on such versions to perform some ugly linker-based tests instead in hopes that the linker will reject ABI-mismatching object files, if there is demand for supporting such versions. I would probably prefer to document which versions are broken and warn users to manually add -D__ARM_PCS_VFP if using such a version. there's definitely an argument to be made that the fenv macros should be exposed even in -mfloat-abi=softfp mode. for now, I have chosen not to expose them in this case, since the math library will not necessarily have the capability to raise exceptions (it depends on the CFLAGS used to compile it), and since exceptions are officially excluded from the ARM EABI, which the plain "arm" arch aims to follow.
2013-08-11allow subarch-specific asm, including asm specific to the defaultRich Felker-0/+6
the default subarch is the one whose full name is just the base arch name, with no suffixes. normally, either the asm in the default subarch is suitable for all subarch variants, or separate asm is mandatory for each variant. however, in the case of asm which is purely for optimization purposes, it's possible to have asm that only works (or only performs well) on the default subarch, and not any othe the other variants. thus, I have added a mechanism to give a name to the default variant, for example "armel" for the default, little-endian arm. further such default-subarch names can be added in the future as needed.
2013-08-02protect against long double type mismatches (mainly powerpc for now)Rich Felker-0/+21
check in configure to be polite (failing early if we're going to fail) and in vfprintf.c since that is the point at which a mismatching type would be extremely dangerous.
2013-08-01work around gcc 4.8's generation of self-referential mem* functions at -O3Rich Felker-0/+10
2013-07-24do not include math modules in the default -O3 optimization setRich Felker-1/+1
it's not clear that -O3 helps them, and gcc seems to have floating point optimization bugs that introduce additional failures when -O3 is used on some of these files.
2013-07-22enhance build process to allow selective -O3 optimizationRich Felker-12/+54
the motivation for this patch is that the vast majority of libc is code that does not benefit at all from optimizations, but that certain components like string/memory operations can be major performance bottlenecks. at the same time, the old -falign-*=1 options are removed, since they were only beneficial for avoiding bloat when global -O3 was used, and in that case, they may have prevented some of the performance gains. to be the most useful, this patch will need further tuning. in particular, research is needed to determine which components should be built with -O3 by default, and it may be desirable to remove the hard-coded -O3 and instead allow more customization of the optimization level used for selected modules.
2013-07-18fix invalid C in new trycppif tests in configure scriptRich Felker-1/+2
an empty program is not valid and would be reasonable grounds for the compiler to give an error, which would break these tests.
2013-07-18add build system support for arch endian & float abi variantsRich Felker-0/+32
2012-12-11treat invalid C as an error even if warnings aren't enabled.Rich Felker-1/+11
2012-11-18fix error in configure script using >/dev/null in noclobber modeRich Felker-1/+1
2012-11-14Merge remote-tracking branch 'ppc-port/ppc-squashed'Rich Felker-0/+1
2012-11-13PPC port cleaned up, static linking works well now.rofl0r-0/+1
2012-11-08fix "configure --prefix=" and improve path/arg handling in configureRich Felker-16/+12
previously, empty string was treated as "use default". this is apparently not compatible with standard configure semantics where an empty prefix puts everything under /. the new logic should be a lot cleaner and not suffer from such issues.
2012-10-26further pcc fixes in configureRich Felker-3/+4
-lpcc only works if -nostdlib is not passed, so it's useless. instead, use -print-file-name to look up the full pathname for libpcc.a, and check whether that succeeds before trying to link with the result. also, silence pcc's junk printed on stdout during tests.
2012-10-26add support for detecting pcc's compiler runtimeRich Felker-0/+1
in old versions of pcc, the directory containing libpcc.a was not in the library path, and other options like -print-file-name may have been needed to locate it. however, -print-file-name itself seems to have been added around the same time that the directory was added to the search path, and moreover, I see no evidence that older versions of pcc are capable of building a working musl shared library. thus, it seems reasonable to just test whether -lpcc is accepted.
2012-10-25configure: test not just compiling but linking with -march/-mtuneRich Felker-2/+2
pcc wrongly passes any option beginning with -m to the linker, and will break at link time if these options were added to CFLAGS. testing linking lets us catch this at configure time and skip them.
2012-10-18use $CC rather than "$CC" in configure scriptRich Felker-4/+4
this is necessary to allow $CC with arguments in it
2012-10-03tell the assembler to mark all files as not requiring executable stackRich Felker-0/+7
for some reason this option is undocumented. not sure when it was added, so I'm using a configure test. gcc was already setting the mark correctly for C files, but assembler source files would need ugly .note boilerplate in every single file to achieve this without the option to the assembler. blame whoever thought it would be a good idea to make the stack executable by default rather than doing it the other way around...
2012-09-29microblaze portRich Felker-0/+1
based on initial work by rdp, with heavy modifications. some features including threads are untested because qemu app-level emulation seems to be broken and I do not have a proper system image for testing.
2012-09-10add LIBCC (compiler runtime) logic and override to configureRich Felker-0/+7
this should both fix the issue with ARM needing -lgcc_eh (although that's really a bug in the libgcc build process that's causing considerable bloat, which should be fixed) and make it easier to build musl using clang/llvm in place of gcc. unfortunately I don't know a good way to detect and support pcc's -lpcc since it's not in pcc's default library search path...
2012-08-29get rid of eh_frame bloatRich Felker-3/+12
if needed for debugging, it will be output in the .debug_frame section instead, where it is not part of the loaded program and where the strip command is free to strip it.
2012-08-25add gnu hash support in the dynamic linkerRich Felker-1/+1
based on the patches contributed by boris brezillon.
2012-08-14support configuring cross compiling with CROSS_COMPILE prefix variableRich Felker-3/+6
2012-08-05make configure accept mipselRich Felker-1/+1
2012-08-05remove configure check disabling shared libraries on mipsRich Felker-4/+0
2012-07-12disable dynamic linking on mips for now (broken)Rich Felker-0/+5
2012-07-11initial version of mips (o32) port, based on work by Richard Pennington (rdp)Rich Felker-0/+1
basically, this version of the code was obtained by starting with rdp's work from his ellcc source tree, adapting it to musl's build system and coding style, auditing the bits headers for discrepencies with kernel definitions or glibc/LSB ABI or large file issues, fixing up incompatibility with the old binutils from aboriginal linux, and adding some new special cases to deal with the oddities of sigaction and pipe syscall interfaces on mips. at present, minimal test programs work, but some interfaces are broken or missing. threaded programs probably will not link.
2012-07-03configure: only use -ffloat-store on i386Rich Felker-1/+1
this option is expensive and only used on old gcc's that lack -fexcess-precision=standed, but it's not needed on non-i386 archs where floating point does not have excess precision anyway. if musl ever supports m68k, i think it will need to be special-cased too. i'm not aware of any other archs with excess precision.
2012-06-07check for ld support of -Bsymbolic-functions; disable shared if not availRich Felker-0/+7
this issue affects the last gpl2 version of binutils, which some people are still using out of aversion to gpl3. musl requires -Bsymbolic-functions because it's the only way to make a that's able to operate prior to dynamic linking but that still behaves correctly with respect to global vars that may be moved to the main program via copy relocations.