⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 configure.in

📁 vc2005 wince 的 stlport 的工程源代码
💻 IN
📖 第 1 页 / 共 3 页
字号:
dnl Disable any caching here 
define([AC_CACHE_LOAD], )dnl
define([AC_CACHE_SAVE], )dnl
dnl Process this file with autoconf to produce a configure script.
AC_INIT(stlconf.h.in)
AC_CONFIG_HEADER(stlconf.h)

AC_MSG_RESULT(*** $0: STLport configuration utility ***)
if test "${CXXFLAGS}" = ""; then 
AC_MSG_RESULT(* Note: for best reliability - try \"CXXFLAGS=-treat_warnings_as_errors\" $0 )
AC_MSG_RESULT(* Please don't forget specifying typical CXXFLAGS you'll be using - ) 
AC_MSG_RESULT(* such as that enabling exceptions handling, etc. )
dnl AC_MSG_RESULT(* Add option forcing instantiation of all templates to CXXFLAGS if possible. )
fi
AC_MSG_RESULT(Please stand by while exploring compiler capabilities...)
AC_MSG_RESULT(Be patient - that may take a while...)
AC_MSG_RESULT(***)

# utility function
check_warning () {
    warn_str=`tail -1 config.log | egrep -i "arning|\(W\)"`
    if test "$warn_str" = ""; then
      return 0
    else
     return 1
    fi
}

dnl Checks for systems
dnl AC_AIX
dnl Checks for programs.
dnl sets CXX

AC_ARG_ENABLE(extension,[--enable-extension=<ext>],
[
case "$enableval" in
	no) AC_MSG_RESULT(Info :.cpp used as extension for tests) 
	    ac_ext=cpp 
      	;;
	 *) AC_MSG_RESULT(Argument : .$enableval used as extension) 
	ac_ext=$enableval
esac
],
[AC_MSG_RESULT(Info : .cpp used as extension for tests) 
	ac_ext=cpp
]
)

# Save that, as it is being redefined several times 
use_ac_ext=$ac_ext

AC_PROG_CXX
ac_ext=$use_ac_ext

AC_LANG_CPLUSPLUS
ac_ext=$use_ac_ext

AC_CHECK_SIZEOF(int,4)
ac_ext=$use_ac_ext

if test "$ac_cv_sizeof_int" = "4"; then
  AC_DEFINE_UNQUOTED(_STLP_UINT32_T,unsigned int)
else
  AC_CHECK_SIZEOF(long,4)
  ac_ext=$use_ac_ext
  if test "$ac_cv_sizeof_long" = "4"; then
    AC_DEFINE_UNQUOTED(_STLP_UINT32_T,unsigned long)
  else
  dnl ELBRUS ??? ;)
    AC_CHECK_SIZEOF(short,4)
    if test "$ac_cv_sizeof_short" = "4"; then
      AC_DEFINE_UNQUOTED(_STLP_UINT32_T,unsigned short)
    else
      AC_MSG_ERROR(Cannot find any 32-bit integer type for your compiler)
    fi
  ac_ext=$use_ac_ext
  fi
fi
ac_ext=$use_ac_ext


dnl Exclude link stage for cross-compilation
if test "$ac_cv_c_cross" = "yes"; then
  CXXFLAGS="${CXXFLAGS} -c"
fi

ac_ext=$use_ac_ext

dnl checking for compiler capabilities
AC_MSG_CHECKING(for basic STL compatibility)
AC_TRY_LINK( [
template <class Arg1, class Arg2, class Result>
struct binary_function {
    typedef Arg1 first_argument_type;
    typedef Arg2 second_argument_type;
    typedef Result result_type;
};      
template <class T>
struct plus : public binary_function<T, T, T> {
    T operator()(const T& x, const T& y) const;
};

template <class T>
T plus<T>::operator()(const T& x, const T& y) const { return x + y; }
plus<int> p;
],
[], 
[ac_cv_compat="yes"],
[AC_MSG_ERROR(Your compiler won't be able to compile this implementation. Sorry.) 
 ac_cv_compat="no"]
)
AC_MSG_RESULT($ac_cv_compat)

AC_MSG_CHECKING(for partial specialization syntax)
AC_TRY_LINK(
    [
     template <class T> class fs_foo {};
     template <> class fs_foo<int> {};],
    [ fs_foo<int> i;],
    [  _FULL_SPEC="template <>" ac_cv_spec_syntax="yes"],
    [  AC_DEFINE(_STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX) ac_cv_spec_syntax="no" _FULL_SPEC=""])
AC_MSG_RESULT($ac_cv_spec_syntax)

AC_MSG_CHECKING(for bool keyword)
AC_TRY_COMPILE(
    [bool b_foo() { return true; }],
    [(void)b_foo();],
    [ac_cv_bool="yes"],
    [AC_DEFINE(_STLP_NO_BOOL) ac_cv_bool="no"])
AC_MSG_RESULT($ac_cv_bool)
if test "$ac_cv_bool" = "no"; then
  AC_MSG_CHECKING(for yvals.h header)
  AC_TRY_COMPILE([#include <yvals.h> 
    extern bool aaa=true;
   ], [], 
  [AC_DEFINE(_STLP_YVALS_H) AC_MSG_RESULT(yes) ], 
  [
  AC_MSG_RESULT(no)
  AC_MSG_CHECKING(whether bool is reserved word)
  AC_TRY_COMPILE(
    [typedef int bool;],
    [],
    [ac_cv_bool_reserved="no"],
    [AC_DEFINE(_STLP_DONT_USE_BOOL_TYPEDEF) ac_cv_bool_reserved="yes"])
  AC_MSG_RESULT($ac_cv_bool_reserved)
  ])
fi

AC_MSG_CHECKING(for wchar_t type)
AC_TRY_COMPILE(
    [ #include <wchar.h>
      wchar_t wc_foo() { return 'a'; }],
    [(void)wc_foo();],
    [ac_cv_wchar="yes"],
    [AC_DEFINE(_STLP_NO_WCHAR_T) ac_cv_wchar="no"])
AC_MSG_RESULT($ac_cv_wchar)

AC_MSG_CHECKING(if wchar_t is unsigned short)
AC_TRY_COMPILE(
    [
     # include <wchar.h>
     template <class T> struct foo {};
     $_FULL_SPEC struct foo <wchar_t> {};
     typedef unsigned short u__short;
     $_FULL_SPEC struct foo <u__short> {};
     foo<wchar_t> f1;
     foo<u__short> f2;
	],
    [],
    [ac_cv_wchar_short="no"],
    [AC_DEFINE(_STLP_WCHAR_T_IS_USHORT) ac_cv_wchar_short="yes"])
AC_MSG_RESULT($ac_cv_wchar_short)

AC_MSG_CHECKING(for long long type)
AC_TRY_COMPILE(
    [long long ll_foo() { return 0; }],
    [(void)ll_foo();],
    [AC_DEFINE(_STLP_LONG_LONG) ac_cv_long_long="yes"],
    [ac_cv_long_long="no"])
AC_MSG_RESULT($ac_cv_long_long)

AC_MSG_CHECKING(for long double type)
AC_TRY_COMPILE(
    [long double ld_foo() { return 0; }],
    [(void)ld_foo();],
    [ac_cv_long_double="yes"],
    [AC_DEFINE(_STLP_NO_LONG_DOUBLE) ac_cv_long_double="no"])
AC_MSG_RESULT($ac_cv_long_double)

AC_MSG_CHECKING(for typename keyword)
AC_TRY_LINK(
    [
template <class T1, class T2>
struct pair {
    typedef T1 first_type;
    typedef T2 second_type;
};

template <class Arg, class Result>
struct unary_function {
    typedef Arg argument_type;
    typedef Result result_type;
};

template <class Pair>
struct select2nd : public unary_function<Pair, typename Pair::second_type> {
  typedef typename Pair::first_type ignored_type;
  const typename Pair::second_type& operator()(const typename Pair::second_type& x,
						const ignored_type& ) const
  {
    return x;
  }
  
};
    ],
    [ 
	typedef pair<int,int> tn_p;
	select2nd< tn_p > tn_s;
	(void)tn_s(1,5);
    ],
    [__TYPENAME="typename" 
     ac_cv_typename="yes"],
    [__TYPENAME="" 
     AC_DEFINE(_STLP_NEED_TYPENAME)
     ac_cv_typename="no"])
AC_MSG_RESULT($ac_cv_typename)

AC_MSG_CHECKING(for explicit keyword)
AC_TRY_COMPILE(    
    [struct expl_Class { int a; explicit expl_Class(int t): a(t) {} };
    expl_Class c(1);
    ],
    [],
    [ac_cv_explicit="yes"],
    [AC_DEFINE(_STLP_NO_EXPLICIT) ac_cv_explicit="no"])
AC_MSG_RESULT($ac_cv_explicit)

AC_MSG_CHECKING(for mutable keyword)
AC_TRY_COMPILE(    
    [struct mut_Class { mutable int a; void update() const { a=0; }  };
    mut_Class c;
    ],
    [c.update()],
    [ac_cv_mutable="yes"],
    [AC_DEFINE(_STLP_NEED_MUTABLE) ac_cv_mutable="no"])
AC_MSG_RESULT($ac_cv_mutable)

AC_MSG_CHECKING(for new style casts)
AC_TRY_COMPILE(    
    [struct ncast_Class { 
	int a; void update(int* i) { *i=a; }  };
    ncast_Class c;
    ],
    [
  const int a(5);
  c.update(const_cast<int*>(&a))
    ],
    [ac_cv_new_cast="yes"],
    [AC_DEFINE(_STLP_NO_NEW_STYLE_CASTS) ac_cv_new_cast="no"])
AC_MSG_RESULT($ac_cv_new_cast)

AC_MSG_CHECKING(for new-style C library headers)
AC_TRY_COMPILE(
    [
     #include <cctype>
     #include <cstddef>
     #include <cstdio>
     #include <cstdlib>
     #include <cstring>
     #include <cassert>
     #include <climits>
     #ifndef _STLP_NO_WCHAR_T
     #include <cwchar>
     #endif
       ],
    [],
    [ac_cv_newheaders="yes"],
    [AC_DEFINE(_STLP_HAS_NO_NEW_C_HEADERS) ac_cv_newheaders="no"])
AC_MSG_RESULT($ac_cv_newheaders)

AC_MSG_CHECKING(for new-style <new> header)
AC_TRY_COMPILE(
    [
     #include <new>
       ],
    [],
    [ac_cv_new_new="yes"],
    [AC_DEFINE(_STLP_NO_NEW_NEW_HEADER) ac_cv_new_new="no"])
AC_MSG_RESULT($ac_cv_new_new)


AC_MSG_CHECKING(for member template methods)
AC_TRY_LINK( [
template <class Result>
struct mt_foo {
    typedef Result result_type;
    template <class Arg> result_type operate(const Arg&) { return Result(); }
};      
mt_foo<int> p;
],
[
(void)p.operate((char*)"aaa");
], 
[ac_cv_member_templates="yes"],
[AC_DEFINE(_STLP_NO_MEMBER_TEMPLATES) ac_cv_member_templates="no"]
)
AC_MSG_RESULT($ac_cv_member_templates)

AC_MSG_CHECKING(for friend templates)
AC_TRY_LINK( [

template <class Result2> class foo;

template <class Result>
struct ft_foo {
    typedef Result result_type;
    template <class Result2> friend class foo;
};      
ft_foo<int> p;
],
[], 
[ac_cv_friend_templates="yes"],
[AC_DEFINE(_STLP_NO_FRIEND_TEMPLATES) ac_cv_friend_templates="no"]
)
AC_MSG_RESULT($ac_cv_friend_templates)

AC_MSG_CHECKING(for qualified friend templates)
AC_TRY_LINK( [

${_TEST_STD_BEGIN}

template <class Result2> class foo;

template <class Result>
struct ft_foo {
    typedef Result result_type;
    template <class Result2> friend class $_TEST_STD::foo;
};      
ft_foo<int> p;
${_TEST_STD_END}

],
[], 
[ac_cv_qual_friend_templates="yes"],
[AC_DEFINE(_STLP_NO_QUALIFIED_FRIENDS) ac_cv_qual_friend_templates="no"]
)
AC_MSG_RESULT($ac_cv_qual_friend_templates)

AC_MSG_CHECKING(for member template keyword)
AC_TRY_LINK( [
template <class Result>
struct nt_foo {
    typedef Result result_type;
    template <class Arg> struct rebind {  typedef nt_foo<Arg> other; };
};

template <class _Tp, class _Allocator>
struct _Traits
{
  typedef typename _Allocator:: template rebind<_Tp> my_rebind; 
  typedef typename my_rebind::other allocator_type;
};

nt_foo<char> p;
_Traits< int, nt_foo<short> > pp;
],
[], 
[ac_cv_member_template_keyword="yes"],
[AC_DEFINE(_STLP_NO_MEMBER_TEMPLATE_KEYWORD) ac_cv_member_template_keyword="no"]
)
AC_MSG_RESULT($ac_cv_member_template_keyword)

if test "$ac_cv_member_template_keyword" = "no"; then
AC_MSG_CHECKING(for member template classes)
AC_TRY_LINK( [
template <class Result>
struct nt_foo {
    typedef Result result_type;
    template <class Arg> struct rebind {  typedef nt_foo<Arg> other; };
};

template <class _Tp, class _Allocator>
struct _Traits
{
  typedef typename _Allocator::rebind<_Tp> my_rebind; 
  typedef typename my_rebind::other allocator_type;
};

nt_foo<char> p;
_Traits< int, nt_foo<short> > pp;
],
[], 
[ac_cv_member_template_classes="yes"],
[AC_DEFINE(_STLP_NO_MEMBER_TEMPLATE_CLASSES) ac_cv_member_template_classes="no"]
)
AC_MSG_RESULT($ac_cv_member_template_classes)
fi

AC_MSG_CHECKING(for partial class specialization)
AC_TRY_LINK( [
template <class Arg,class Result>
struct ps_foo {
    typedef Arg argument_type;
    typedef Result result_type;
};   

template<class Result>
struct ps_foo<Result*,Result*> {
	void bar() {}
};

template<class Result>
struct ps_foo<int*,Result> {
	void foo() {}
};

ps_foo<char*, char*> p;
ps_foo<int*, int> p1;
],
[p.bar();
 p1.foo();], 
[ac_cv_partial_spec="yes"],
[AC_DEFINE(_STLP_NO_CLASS_PARTIAL_SPECIALIZATION) ac_cv_partial_spec="no"]
)
AC_MSG_RESULT($ac_cv_partial_spec)

if test "$ac_cv_partial_spec" = yes; then

AC_MSG_CHECKING(if explicit args accepted on constructors of partial specialized classes)
AC_TRY_LINK( [
template <class Arg,class Result>
struct ps_foo {
    typedef Arg argument_type;
    typedef Result result_type;
};   

template<class Result>
struct ps_foo<Result*,Result*> {
	ps_foo<Result*,Result*>() {}
	void bar() {}
};

template<class Result>
struct ps_foo<int*,Result> {
	ps_foo<int*,Result*>() {}
	void bar() {}

};

ps_foo<char*, char*> p;
ps_foo<int*, int> p1;
],
[p.bar();
 p1.foo();], 
[AC_DEFINE(_STLP_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS) ac_cv_partial_spec_needs_args="yes"],
[ac_cv_partial_spec_needs_args="no"]
)
AC_MSG_RESULT($ac_cv_partial_spec_needs_args)

fi

if test ac_cv_partial_spec_needs_args=="no"; then

AC_MSG_CHECKING(if explicit args accepted on constructors of explicitly specialized classes)
AC_TRY_LINK( [
template <class Arg,class Result>
struct ps_foo {
    typedef Arg argument_type;
    typedef Result result_type;
    void bar() {}	
};   

template<class Result>
struct ps_foo<int*,int> {
	ps_foo<Result*,Result*>() {}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -