From: Michael Wetherell Date: Mon, 6 Jun 2005 19:34:32 +0000 (+0000) Subject: Dependency tracking for Sun CC X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/a9e5b1f04b3c5257919a6d0977ef2312230e9f3f Dependency tracking for Sun CC git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@34551 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/aclocal.m4 b/aclocal.m4 index dad125c8c5..77bdeecaa8 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -495,6 +495,46 @@ AC_DEFUN([WX_VERSIONED_SYMBOLS], fi ]) +dnl Based on autoconf _AC_LANG_COMPILER_GNU +dnl _AC_BAKEFILE_LANG_COMPILER(NAME, LANG, SYMBOL, IF-YES, IF-NO) +AC_DEFUN([_AC_BAKEFILE_LANG_COMPILER], +[ + AC_LANG_PUSH($2) + AC_CACHE_CHECK( + [whether we are using the $1 $2 compiler], + [bakefile_cv_[]_AC_LANG_ABBREV[]_compiler_[]$3], + [AC_TRY_COMPILE( + [], + [ + #ifndef $3 + choke me + #endif + ], + [bakefile_cv_[]_AC_LANG_ABBREV[]_compiler_[]$3=yes], + [bakefile_cv_[]_AC_LANG_ABBREV[]_compiler_[]$3=no] + ) + ] + ) + AC_LANG_POP($2) + if test "x$bakefile_cv_[]_AC_LANG_ABBREV[]_compiler_[]$3" = "xyes"; then + :; $4 + else + :; $5 + fi +]) + +dnl Loosely based on autoconf AC_PROG_CC +AC_DEFUN([AC_BAKEFILE_PROG_SUNCC], +[ + _AC_BAKEFILE_LANG_COMPILER(Sun, C, __SUNPRO_C, SUNCC=yes) +]) + +dnl Loosely based on autoconf AC_PROG_CC +AC_DEFUN([AC_BAKEFILE_PROG_SUNCXX], +[ + _AC_BAKEFILE_LANG_COMPILER(Sun, C++, __SUNPRO_CC, SUNCXX=yes) +]) + dnl =========================================================================== dnl "3rd party" macros included here because they are not widely available @@ -844,6 +884,7 @@ AC_DEFUN([AC_BAKEFILE_PROG_CC], fi AC_BAKEFILE_PROG_MWCC AC_BAKEFILE_PROG_XLCC + AC_BAKEFILE_PROG_SUNCC ]) AC_DEFUN([AC_BAKEFILE_PROG_CXX], @@ -857,6 +898,7 @@ AC_DEFUN([AC_BAKEFILE_PROG_CXX], fi AC_BAKEFILE_PROG_MWCXX AC_BAKEFILE_PROG_XLCXX + AC_BAKEFILE_PROG_SUNCXX ]) @@ -2001,6 +2043,11 @@ AC_DEFUN([AC_BAKEFILE_DEPS], DEPS_TRACKING=1 DEPSFLAG_MWCC="-MM" AC_MSG_RESULT([mwcc]) + elif test "x$SUNCC" = "xyes"; then + DEPSMODE=suncc + DEPS_TRACKING=1 + DEPSFLAG_SUNCC="-xM1" + AC_MSG_RESULT([suncc]) else AC_MSG_RESULT([none]) fi @@ -2695,6 +2742,7 @@ DEPSMODE=${DEPSMODE} DEPSDIR=.deps DEPSFLAG_GCC="${DEPSFLAG_GCC}" DEPSFLAG_MWCC="${DEPSFLAG_MWCC}" +DEPSFLAG_SUNCC="${DEPSFLAG_SUNCC}" mkdir -p ${D}DEPSDIR @@ -2757,6 +2805,28 @@ elif test ${D}DEPSMODE = mwcc ; then done ${D}* ${D}DEPSFLAG_MWCC >${D}{DEPSDIR}/${D}{objfile}.d exit 0 +elif test ${D}DEPSMODE = suncc; then + ${D}* || exit + # Run compiler again with deps flag and redirect into the dep file. + # It doesn't work if the '-o FILE' option is used, but without it the + # dependency file will contain the wrong name for the object. So it is + # removed from the command line, and the dep file is fixed with sed. + cmd="" + while test ${D}# -gt 0; do + case "${D}1" in + -o ) + shift + objfile=${D}1 + ;; + * ) + eval arg${D}#=\\${D}1 + cmd="${D}cmd \\${D}arg${D}#" + ;; + esac + shift + done + eval "${D}cmd ${D}DEPSFLAG_SUNCC" | sed "s|.*:|${D}objfile:|" >${D}{DEPSDIR}/${D}{objfile}.d + exit 0 else ${D}* exit ${D}? diff --git a/configure b/configure index ec2bc1903e..3bed7b7e5e 100755 --- a/configure +++ b/configure @@ -11907,6 +11907,87 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + echo "$as_me:$LINENO: checking whether we are using the Sun C compiler" >&5 +echo $ECHO_N "checking whether we are using the Sun C compiler... $ECHO_C" >&6 +if test "${bakefile_cv_c_compiler___SUNPRO_C+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + #ifndef __SUNPRO_C + choke me + #endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bakefile_cv_c_compiler___SUNPRO_C=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bakefile_cv_c_compiler___SUNPRO_C=no + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + + +fi +echo "$as_me:$LINENO: result: $bakefile_cv_c_compiler___SUNPRO_C" >&5 +echo "${ECHO_T}$bakefile_cv_c_compiler___SUNPRO_C" >&6 + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + if test "x$bakefile_cv_c_compiler___SUNPRO_C" = "xyes"; then + :; SUNCC=yes + else + :; + fi + + + + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -12855,6 +12936,87 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + echo "$as_me:$LINENO: checking whether we are using the Sun C++ compiler" >&5 +echo $ECHO_N "checking whether we are using the Sun C++ compiler... $ECHO_C" >&6 +if test "${bakefile_cv_cxx_compiler___SUNPRO_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + #ifndef __SUNPRO_CC + choke me + #endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bakefile_cv_cxx_compiler___SUNPRO_CC=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bakefile_cv_cxx_compiler___SUNPRO_CC=no + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + + +fi +echo "$as_me:$LINENO: result: $bakefile_cv_cxx_compiler___SUNPRO_CC" >&5 +echo "${ECHO_T}$bakefile_cv_cxx_compiler___SUNPRO_CC" >&6 + ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + if test "x$bakefile_cv_cxx_compiler___SUNPRO_CC" = "xyes"; then + :; SUNCXX=yes + else + :; + fi + + + + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -42822,6 +42984,12 @@ echo "${ECHO_T}gcc" >&6 DEPSFLAG_MWCC="-MM" echo "$as_me:$LINENO: result: mwcc" >&5 echo "${ECHO_T}mwcc" >&6 + elif test "x$SUNCC" = "xyes"; then + DEPSMODE=suncc + DEPS_TRACKING=1 + DEPSFLAG_SUNCC="-xM1" + echo "$as_me:$LINENO: result: suncc" >&5 +echo "${ECHO_T}suncc" >&6 else echo "$as_me:$LINENO: result: none" >&5 echo "${ECHO_T}none" >&6 @@ -42842,6 +43010,7 @@ DEPSMODE=${DEPSMODE} DEPSDIR=.deps DEPSFLAG_GCC="${DEPSFLAG_GCC}" DEPSFLAG_MWCC="${DEPSFLAG_MWCC}" +DEPSFLAG_SUNCC="${DEPSFLAG_SUNCC}" mkdir -p ${D}DEPSDIR @@ -42904,6 +43073,28 @@ elif test ${D}DEPSMODE = mwcc ; then done ${D}* ${D}DEPSFLAG_MWCC >${D}{DEPSDIR}/${D}{objfile}.d exit 0 +elif test ${D}DEPSMODE = suncc; then + ${D}* || exit + # Run compiler again with deps flag and redirect into the dep file. + # It doesn't work if the '-o FILE' option is used, but without it the + # dependency file will contain the wrong name for the object. So it is + # removed from the command line, and the dep file is fixed with sed. + cmd="" + while test ${D}# -gt 0; do + case "${D}1" in + -o ) + shift + objfile=${D}1 + ;; + * ) + eval arg${D}#=\\${D}1 + cmd="${D}cmd \\${D}arg${D}#" + ;; + esac + shift + done + eval "${D}cmd ${D}DEPSFLAG_SUNCC" | sed "s|.*:|${D}objfile:|" >${D}{DEPSDIR}/${D}{objfile}.d + exit 0 else ${D}* exit ${D}?