diff options
author | Amitha Perera <perera@cs.rpi.edu> | 2001-06-12 18:15:22 (GMT) |
---|---|---|
committer | Amitha Perera <perera@cs.rpi.edu> | 2001-06-12 18:15:22 (GMT) |
commit | 918c8c4f3ae8bde5b0dd0733b633c68b4e8b3b7e (patch) | |
tree | af2e7560cd721e94de1f88752bc8787629da3fb9 | |
parent | 583ac25e8fa4f17aa282837611624d20225a59e1 (diff) | |
download | CMake-918c8c4f3ae8bde5b0dd0733b633c68b4e8b3b7e.zip CMake-918c8c4f3ae8bde5b0dd0733b633c68b4e8b3b7e.tar.gz CMake-918c8c4f3ae8bde5b0dd0733b633c68b4e8b3b7e.tar.bz2 |
BUG: SHLIB_LINK was being used when linking static executables. Missing comma
in RUNTIME_FLAG for IRIX.
ENH: User supplied SHLIB_CFLAGS (-fPIC, etc) will override configure detected
flags
-rw-r--r-- | Source/cmUnixMakefileGenerator.cxx | 12 | ||||
-rwxr-xr-x | Templates/configure | 57 | ||||
-rw-r--r-- | Templates/configure.in | 13 |
3 files changed, 50 insertions, 32 deletions
diff --git a/Source/cmUnixMakefileGenerator.cxx b/Source/cmUnixMakefileGenerator.cxx index fdeada0..cc9ae08 100644 --- a/Source/cmUnixMakefileGenerator.cxx +++ b/Source/cmUnixMakefileGenerator.cxx @@ -405,6 +405,8 @@ void cmUnixMakefileGenerator::OutputLinkLibraries(std::ostream& fout, if(outputRuntime && runtimeDirs.size()>0) { + // For the runtime search directories, do a "-Wl,-rpath,a:b:c" or + // a "-R a -R b -R c" type link line fout << runtimeFlag; std::vector<std::string>::iterator itr = runtimeDirs.begin(); fout << *itr; @@ -427,6 +429,8 @@ void cmUnixMakefileGenerator::OutputLinkLibraries(std::ostream& fout, void cmUnixMakefileGenerator::OutputTargets(std::ostream& fout) { + bool dll = cmCacheManager::GetInstance()->IsOn("BUILD_SHARED_LIBS"); + // for each target const cmTargets &tgts = m_Makefile->GetTargets(); for(cmTargets::const_iterator l = tgts.begin(); @@ -459,8 +463,12 @@ void cmUnixMakefileGenerator::OutputTargets(std::ostream& fout) { fout << l->first << ": ${" << l->first << "_SRC_OBJS} ${CMAKE_DEPEND_LIBS}\n"; - fout << "\t${CMAKE_CXX_COMPILER} ${CMAKE_SHLIB_LINK_FLAGS} ${CMAKE_CXXFLAGS} ${" << - l->first << "_SRC_OBJS} "; + fout << "\t${CMAKE_CXX_COMPILER} "; + if (dll) + { + fout << "${CMAKE_SHLIB_LINK_FLAGS} "; + } + fout << "${CMAKE_CXXFLAGS} ${" << l->first << "_SRC_OBJS} "; this->OutputLinkLibraries(fout, NULL,l->second); fout << " -o " << l->first << "\n\n"; } diff --git a/Templates/configure b/Templates/configure index e07ccf9..ec9abce 100755 --- a/Templates/configure +++ b/Templates/configure @@ -2312,7 +2312,7 @@ fi CMAKE_SHLIB_SUFFIX=".so" CMAKE_DL_LIBS="" CMAKE_SHLIB_BUILD_FLAGS="-shared -rdata_shared" - CMAKE_SHLIB_RUNTIME_FLAG="-Wl,-rpath" + CMAKE_SHLIB_RUNTIME_FLAG="-Wl,-rpath," CMAKE_SHLIB_RUNTIME_SEP=":" ;; Linux*) @@ -2394,11 +2394,12 @@ fi NetBSD-*|FreeBSD-*) # Not available on all versions: check for include file. if test -f /usr/include/dlfcn.h; then - CMAKE_SHLIB_CFLAGS="-fpic" + CMAKE_SHLIB_CFLAGS="-fPIC" CMAKE_SHLIB_LD_LIBS="" CMAKE_SHLIB_SUFFIX=".so" CMAKE_DL_LIBS="" - CMAKE_SHLIB_LINK_FLAGS="-shared" + CMAKE_SHLIB_BUILD_FLAGS="-shared" + CMAKE_SHLIB_LINK_FLAGS="" CMAKE_SHLIB_RUNTIME_FLAG="-Wl,-rpath," CMAKE_SHLIB_RUNTIME_SEP=":" else @@ -2542,7 +2543,11 @@ case $system in ;; esac -CMAKE_SHLIB_CFLAGS="${SHLIB_CFLAGS}" +# If the user has supplied C flags for compiling shared objects, use +# those instead +if test "${SHLIB_CFLAGS}" != ""; then + CMAKE_SHLIB_CFLAGS="${SHLIB_CFLAGS}" +fi CMAKE_LD_SEARCH_FLAGS="${LD_SEARCH_FLAGS}" @@ -2591,17 +2596,17 @@ for ac_hdr in sys/prctl.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2595: checking for $ac_hdr" >&5 +echo "configure:2600: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 2600 "configure" +#line 2605 "configure" #include "confdefs.h" #include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2605: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2610: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2646,17 +2651,17 @@ for ac_hdr in pthread.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2650: checking for $ac_hdr" >&5 +echo "configure:2655: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 2655 "configure" +#line 2660 "configure" #include "confdefs.h" #include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2660: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2665: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2685,7 +2690,7 @@ done if test "$use_pthreads" = "yes"; then if test "$use_sproc" = "no"; then echo $ac_n "checking for pthread_create in -lpthreads""... $ac_c" 1>&6 -echo "configure:2689: checking for pthread_create in -lpthreads" >&5 +echo "configure:2694: checking for pthread_create in -lpthreads" >&5 ac_lib_var=`echo pthreads'_'pthread_create | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2693,7 +2698,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpthreads $LIBS" cat > conftest.$ac_ext <<EOF -#line 2697 "configure" +#line 2702 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -2704,7 +2709,7 @@ int main() { pthread_create() ; return 0; } EOF -if { (eval echo configure:2708: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2713: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2725,7 +2730,7 @@ else fi echo $ac_n "checking for pthread_create in -lpthread""... $ac_c" 1>&6 -echo "configure:2729: checking for pthread_create in -lpthread" >&5 +echo "configure:2734: checking for pthread_create in -lpthread" >&5 ac_lib_var=`echo pthread'_'pthread_create | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2733,7 +2738,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpthread $LIBS" cat > conftest.$ac_ext <<EOF -#line 2737 "configure" +#line 2742 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -2744,7 +2749,7 @@ int main() { pthread_create() ; return 0; } EOF -if { (eval echo configure:2748: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2753: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2767,7 +2772,7 @@ fi # Work around Solaris 5.6 and 5.7 bug: if test "`uname -s -r`" = "SunOS 5.6"; then echo $ac_n "checking for thr_create in -lthread""... $ac_c" 1>&6 -echo "configure:2771: checking for thr_create in -lthread" >&5 +echo "configure:2776: checking for thr_create in -lthread" >&5 ac_lib_var=`echo thread'_'thr_create | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2775,7 +2780,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lthread $LIBS" cat > conftest.$ac_ext <<EOF -#line 2779 "configure" +#line 2784 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -2786,7 +2791,7 @@ int main() { thr_create() ; return 0; } EOF -if { (eval echo configure:2790: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2795: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2809,7 +2814,7 @@ fi fi if test "`uname -s -r`" = "SunOS 5.7"; then echo $ac_n "checking for thr_create in -lthread""... $ac_c" 1>&6 -echo "configure:2813: checking for thr_create in -lthread" >&5 +echo "configure:2818: checking for thr_create in -lthread" >&5 ac_lib_var=`echo thread'_'thr_create | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2817,7 +2822,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lthread $LIBS" cat > conftest.$ac_ext <<EOF -#line 2821 "configure" +#line 2826 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -2828,7 +2833,7 @@ int main() { thr_create() ; return 0; } EOF -if { (eval echo configure:2832: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2837: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2930,7 +2935,7 @@ fi # ansi stream files (without the .h) if test $ac_cv_prog_gxx = no; then echo $ac_n "checking ansi standard C++ stream headers ""... $ac_c" 1>&6 -echo "configure:2934: checking ansi standard C++ stream headers " >&5 +echo "configure:2939: checking ansi standard C++ stream headers " >&5 echo "******" rm -rf conftest.* cat > conftest.cc <<! @@ -2951,7 +2956,7 @@ fi if test $ac_cv_prog_gxx = no; then echo "******" echo $ac_n "checking ansi standard namespace support ""... $ac_c" 1>&6 -echo "configure:2955: checking ansi standard namespace support " >&5 +echo "configure:2960: checking ansi standard namespace support " >&5 rm -rf conftest.* cat > conftest.cc <<! #include <list> @@ -2979,7 +2984,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2983: checking for $ac_word" >&5 +echo "configure:2988: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_RUNMAKE'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3019,7 +3024,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3023: checking for $ac_word" >&5 +echo "configure:3028: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_CMAKE_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else diff --git a/Templates/configure.in b/Templates/configure.in index c11d571..21fcb10 100644 --- a/Templates/configure.in +++ b/Templates/configure.in @@ -158,7 +158,7 @@ case $system in CMAKE_SHLIB_SUFFIX=".so" CMAKE_DL_LIBS="" CMAKE_SHLIB_BUILD_FLAGS="-shared -rdata_shared" - CMAKE_SHLIB_RUNTIME_FLAG="-Wl,-rpath" + CMAKE_SHLIB_RUNTIME_FLAG="-Wl,-rpath," CMAKE_SHLIB_RUNTIME_SEP=":" ;; Linux*) @@ -208,11 +208,12 @@ case $system in NetBSD-*|FreeBSD-*) # Not available on all versions: check for include file. if test -f /usr/include/dlfcn.h; then - CMAKE_SHLIB_CFLAGS="-fpic" + CMAKE_SHLIB_CFLAGS="-fPIC" CMAKE_SHLIB_LD_LIBS="" CMAKE_SHLIB_SUFFIX=".so" CMAKE_DL_LIBS="" - CMAKE_SHLIB_LINK_FLAGS="-shared" + CMAKE_SHLIB_BUILD_FLAGS="-shared" + CMAKE_SHLIB_LINK_FLAGS="" CMAKE_SHLIB_RUNTIME_FLAG="-Wl,-rpath," CMAKE_SHLIB_RUNTIME_SEP=":" else @@ -356,7 +357,11 @@ case $system in ;; esac -CMAKE_SHLIB_CFLAGS="${SHLIB_CFLAGS}" +# If the user has supplied C flags for compiling shared objects, use +# those instead +if test "${SHLIB_CFLAGS}" != ""; then + CMAKE_SHLIB_CFLAGS="${SHLIB_CFLAGS}" +fi CMAKE_LD_SEARCH_FLAGS="${LD_SEARCH_FLAGS}" |