summaryrefslogtreecommitdiffstats
path: root/bootstrap
diff options
context:
space:
mode:
authorRolf Eike Beer <eike@sf-mail.de>2012-10-28 22:23:29 (GMT)
committerBrad King <brad.king@kitware.com>2012-10-31 20:28:51 (GMT)
commite496c5402193ee26fa245c1970f87d795f56bdab (patch)
tree2ea5b8a2cc95793d0d98001e834bd179c77fbefe /bootstrap
parentabe4edfad3c6e8c2f2e9c08117507089790b303b (diff)
downloadCMake-e496c5402193ee26fa245c1970f87d795f56bdab.zip
CMake-e496c5402193ee26fa245c1970f87d795f56bdab.tar.gz
CMake-e496c5402193ee26fa245c1970f87d795f56bdab.tar.bz2
Linux/PA-RISC: Link with --unique=.text.* to help binutils
There is a binutils bug that leads to errors like this: /usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.6.3/../../../../hppa2.0-unknown-linux-gnu/bin/ld: libCMakeLib.a(cmTarget.cxx.o)(.text+0x12084): cannot reach 00001d28__ZNSspLEPKc@@GLIBCXX_3.4+0, recompile with -ffunction-sections /usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.6.3/../../../../hppa2.0-unknown-linux-gnu/bin/ld: libCMakeLib.a(cmTarget.cxx.o)(.text+0x12084): cannot handle R_PARISC_PCREL17F for std::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator+=(char const*)@@GLIBCXX_3.4 /usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.6.3/../../../../hppa2.0-unknown-linux-gnu/bin/ld: final link failed: Bad value Until someone finds out what needs to be fixed in binutils this allows anyone to compile a working CMake even in debug mode.
Diffstat (limited to 'bootstrap')
-rwxr-xr-xbootstrap21
1 files changed, 21 insertions, 0 deletions
diff --git a/bootstrap b/bootstrap
index 713f01f..a0529f2 100755
--- a/bootstrap
+++ b/bootstrap
@@ -93,6 +93,19 @@ else
cmake_system_openvms=false
fi
+# Determine whether this is Linux
+if echo "${cmake_system}" | grep Linux >/dev/null 2>&1; then
+ cmake_system_linux=true
+ # find out if it is a HP PA-RISC machine
+ if uname -m | grep parisc >/dev/null 2>&1; then
+ cmake_machine_parisc=true
+ else
+ cmake_machine_parisc=false
+ fi
+else
+ cmake_system_linux=false
+fi
+
# Choose the generator to use for bootstrapping.
if ${cmake_system_mingw}; then
# Bootstrapping from an MSYS prompt.
@@ -678,6 +691,14 @@ if ${cmake_system_haiku}; then
cmake_ld_flags="${LDFLAGS} -lroot -lbe"
fi
+if ${cmake_system_linux}; then
+ # avoid binutils problem with large binaries, e.g. when building CMake in debug mode
+ # See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50230
+ if ${cmake_machine_parisc}; then
+ cmake_ld_flags="${LDFLAGS} -Wl,--unique=.text.*"
+ fi
+fi
+
#-----------------------------------------------------------------------------
# Detect known toolchains on some platforms.
cmake_toolchains=''