summaryrefslogtreecommitdiffstats
path: root/bootstrap
diff options
context:
space:
mode:
authorChuck Atkins <chuck.atkins@kitware.com>2014-11-04 16:01:56 (GMT)
committerBrad King <brad.king@kitware.com>2014-11-10 15:26:30 (GMT)
commit04f442f755fbfb317f6790e36686e05c4c906ba0 (patch)
tree6789e60fb2ef802c6bf7df5a706d2dc9c3eb2da9 /bootstrap
parent0c3ddf8b652311ec2a9447a9e6303691841628b4 (diff)
downloadCMake-04f442f755fbfb317f6790e36686e05c4c906ba0.zip
CMake-04f442f755fbfb317f6790e36686e05c4c906ba0.tar.gz
CMake-04f442f755fbfb317f6790e36686e05c4c906ba0.tar.bz2
Workaround for short jump tables on PA-RISC.
The PA-RISC architecture requires special options for GCC to prevent linker errors when libraries reach a certain size and / or complexity. See http://mraw.org/blog/2007/10/10/Linking_on_hppa and gcc documentation on -mlong-calls.
Diffstat (limited to 'bootstrap')
-rwxr-xr-xbootstrap37
1 files changed, 27 insertions, 10 deletions
diff --git a/bootstrap b/bootstrap
index b09023d..94bed0e 100755
--- a/bootstrap
+++ b/bootstrap
@@ -122,17 +122,32 @@ else
cmake_system_openvms=false
fi
+# Determine whether this is HP-UX
+if echo "${cmake_system}" | grep HP-UX >/dev/null 2>&1; then
+ cmake_system_hpux=true
+else
+ cmake_system_hpux=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
+else
+ cmake_system_linux=false
+ fi
+
+# Determine whether this is a PA-RISC machine
+# This only works for Linux or HP-UX, not other PA-RISC OSs (BSD maybe?). Also
+# may falsely detect parisc on HP-UX m68k
+cmake_machine_parisc=false
+if ${cmake_system_linux}; then
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
+elif ${cmake_system_hpux}; then
+ if !(uname -m | grep ia64 >/dev/null 2>&1); then
+ cmake_machine_parisc=true
+ fi
fi
# Choose the generator to use for bootstrapping.
@@ -744,11 +759,13 @@ 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._*"
+# Workaround for short jump tables on PA-RISC
+if ${cmake_machine_parisc}; then
+ if ${cmake_c_compiler_is_gnu}; then
+ cmake_c_flags="${CFLAGS} -mlong-calls"
+ fi
+ if ${cmake_cxx_compiler_is_gnu}; then
+ cmake_cxx_flags="${CXXFLAGS} -mlong-calls"
fi
fi