diff options
author | Chuck Atkins <chuck.atkins@kitware.com> | 2014-11-04 16:01:56 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2014-11-10 15:26:30 (GMT) |
commit | 04f442f755fbfb317f6790e36686e05c4c906ba0 (patch) | |
tree | 6789e60fb2ef802c6bf7df5a706d2dc9c3eb2da9 /bootstrap | |
parent | 0c3ddf8b652311ec2a9447a9e6303691841628b4 (diff) | |
download | CMake-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-x | bootstrap | 37 |
1 files changed, 27 insertions, 10 deletions
@@ -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 |