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

📄 libstdc++.exp

📁 linux下编程用 编译软件
💻 EXP
📖 第 1 页 / 共 2 页
字号:
    if { [target_info needs_status_wrapper] != "" && [info exists gluefile] } {        lappend options "libs=${gluefile}"        lappend options "ldflags=${wrap_flags}"    }    set cxx_final $cxx    set cxxlibglossflags  [libgloss_link_flags]    set cxx_final [concat $cxx_final $cxxlibglossflags]    set cxx_final [concat $cxx_final $cxxflags]    set cxx_final [concat $cxx_final $includes]    # Flag setting based on type argument.    if { $type == "executable" } {	# Link the support objects into executables.	set cxx_final [concat $cxx_final ${v3-test_objs}]    } else {	if { $type == "sharedlib" } {	    # Don't link in anything.	    set type "executable"	}    }    lappend options "compiler=$cxx_final"    return [target_compile $source $dest $type $options]}# Build the support objects linked in with the libstdc++ tests.  In# addition, set v3-wchar_t, v3-threads, v3-test_objs, and v3-symver# appropriately.proc v3-build_support { } {    global srcdir    global v3-wchar_t    global v3-threads    global v3-test_objs    global v3-symver    global v3-sharedlib    # Figure out whether or not the library supports certain features.    set v3-wchar_t 0    set v3-threads 0    set v3-symver 0    set v3-test_objs ""    set config_src "config.cc"    set f [open $config_src "w"]    puts $f "#include <bits/c++config.h>"    puts $f "#include <bits/gthr.h>"    close $f    set preprocessed [v3_target_compile $config_src "" \	    	       preprocess "additional_flags=-dN"]    if { [string first "_GLIBCXX_USE_WCHAR_T" $preprocessed] != -1 } {	verbose -log "wchar_t support detected"	set v3-wchar_t 1    }    if { [string first "_GLIBCXX_SYMVER" $preprocessed] != -1 } {	verbose -log "symbol versioning support detected"	set v3-symver 1    }    if { [string first "__GTHREADS" $preprocessed] != -1 } {	verbose -log "thread support detected"	set v3-threads 1    }    # Build the support objects.    set source_files \	[list testsuite_abi.cc testsuite_allocator.cc testsuite_character.cc testsuite_hooks.cc ]    foreach f $source_files {	set object_file [file rootname $f].o	# Compile with "-w" so that warnings issued by the compiler	# do not prevent compilation.	if { [v3_target_compile $srcdir/$f $object_file "object" \		  [list "incdir=$srcdir" "additional_flags=-w"]]	     != "" } {	    error "could not compile $f"	}	append v3-test_objs "$object_file "    }    # Build the shared support objects.    if { ${v3-sharedlib} == 1 } {	set source_files \	    [list testsuite_shared.cc]	foreach f $source_files {	    set object_file [file rootname $f].so	    # Compile with "-w" so that warnings issued by the compiler	    # do not prevent compilation.	    if { [v3_target_compile $srcdir/$f $object_file "sharedlib" \	     [list "incdir=$srcdir" "additional_flags=-w -shared -fPIC -DPIC"]]		 != "" } {		error "could not compile $f"	    }	}    }}proc check_v3_target_sharedlib { } {    global v3-sharedlib    return ${v3-sharedlib}}proc check_v3_target_namedlocale { } {    global et_namedlocale_saved    global et_namedlocale_target_name    global tool	    if { ![info exists et_namedlocale_target_name] } {	set et_namedlocale_target_name ""    }    # If the target has changed since we set the cached value, clear it.    set current_target [current_target_name]    if { $current_target != $et_namedlocale_target_name } {	verbose "check_v3_target_namedlocale: `$et_namedlocale_target_name'" 2	set et_namedlocale_target_name $current_target	if [info exists et_namedlocale_saved] {	    verbose "check_v3_target_namedlocale: removing cached result" 2	    unset et_namedlocale_saved	}    }    if [info exists et_namedlocale_saved] {	verbose "check_v3_target_namedlocale: using cached result" 2    } else {	set et_namedlocale_saved 0	# Set up, compile, and execute a C++ test program that tries to use	# all the required named locales.	set src nlocale[pid].cc	set exe nlocale[pid].x	set f [open $src "w"]	puts $f "#include <locale>"	puts $f "using namespace std;"		puts $f "int main ()"	puts $f "{"	puts $f "  try"		puts $f "  {" 	puts $f "     locale(\"\");"	puts $f "     locale(\"de_DE\");"	puts $f "     locale(\"de_DE.ISO-8859-15@euro\");"	puts $f "     locale(\"de_DE@euro\");"	puts $f "     locale(\"en_HK\");"	puts $f "     locale(\"en_PH\");"	puts $f "     locale(\"en_US\");"	puts $f "     locale(\"en_US.ISO-8859-1\");"	puts $f "     locale(\"en_US.ISO-8859-15\");"	puts $f "     locale(\"en_US.UTF-8\");"	puts $f "     locale(\"es_ES\");"	puts $f "     locale(\"es_MX\");"	puts $f "     locale(\"fr_FR\");"	puts $f "     locale(\"fr_FR@euro\");"	puts $f "     locale(\"is_IS\");"	puts $f "     locale(\"is_IS.UTF-8\");"	puts $f "     locale(\"it_IT\");"	puts $f "     locale(\"ja_JP.eucjp\");"	puts $f "     locale(\"se_NO.UTF-8\");"	puts $f "     locale(\"ta_IN\");"	puts $f "     locale(\"zh_TW\");"	puts $f "     return 0;"	puts $f "  }"	puts $f "  catch(...)"	puts $f "  {"	puts $f "     return 1;"	puts $f "  }"		puts $f "}"	close $f	set lines [v3_target_compile $src $exe executable ""]	file delete $src	if [string match "" $lines] {	    # No error message, compilation succeeded.	    set result [${tool}_load "./$exe" "" ""]	    set status [lindex $result 0]	    remote_file build delete $exe	    verbose "check_v3_target_namedlocale: status is <$status>" 2	    if { $status == "pass" } {		set et_namedlocale_saved 1	    }	} else {	    verbose "check_v3_target_namedlocale: compilation failed" 2	}    }    return $et_namedlocale_saved}proc check_v3_target_cxa_atexit { } {    global et_cxa_atexit    global et_cxa_atexit_target_name    global tool	    if { ![info exists et_cxa_atexit_target_name] } {	set et_cxa_atexit_target_name ""    }    # If the target has changed since we set the cached value, clear it.    set current_target [current_target_name]    if { $current_target != $et_cxa_atexit_target_name } {	verbose "check_v3_target_cxa_atexit: `$et_cxa_atexit_target_name'" 2	set et_cxa_atexit_target_name $current_target	if [info exists et_cxa_atexit] {	    verbose "check_v3_target_cxa_atexit: removing cached result" 2	    unset et_cxa_atexit	}    }    if [info exists et_cxa_atexit] {	verbose "check_v3_target_cxa_atexit: using cached result" 2    } else {	set et_cxa_atexit 0	# Set up, compile, and execute a C++ test program that depends	# on correct ordering of static object destructors. This is	# indicative of the presence and use of __cxa_atexit.	set src cxaatexit[pid].cc	set exe cxaatexit[pid].x	set f [open $src "w"]	puts $f "#include <stdlib.h>"	puts $f "static unsigned int count;"	puts $f "struct X"	puts $f "{"	puts $f "  X() { count = 1; }"	puts $f "  ~X()"	puts $f "  {"	puts $f "    if (count != 3)"	puts $f "      exit(1);"	puts $f "    count = 4;"        puts $f "  }"        puts $f "};"	puts $f "void f()"	puts $f "{"	puts $f "  static X x;"        puts $f "}"	puts $f "struct Y"	puts $f "{"	puts $f "  Y() { f(); count = 2; }"	puts $f "  ~Y()"	puts $f "  {"	puts $f "    if (count != 2)"	puts $f "      exit(1);"	puts $f "    count = 3;"        puts $f "  }"        puts $f "};"	puts $f "Y y;"	puts $f "int main()"	puts $f "{ return 0; }"	close $f	set lines [v3_target_compile $src $exe executable ""]	file delete $src	if [string match "" $lines] {	    # No error message, compilation succeeded.	    set result [${tool}_load "./$exe" "" ""]	    set status [lindex $result 0]	    remote_file build delete $exe	    verbose "check_v3_target_cxa_atexit: status is <$status>" 2	    if { $status == "pass" } {		set et_cxa_atexit 1	    }	} else {	    verbose "check_v3_target_cxa_atexit: compilation failed" 2	}    }    return $et_cxa_atexit}proc check_v3_target_debug_mode { } {    global cxxflags    global et_debug_mode    global tool	    if { ![info exists et_debug_mode_target_name] } {	set et_debug_mode_target_name ""    }    # If the target has changed since we set the cached value, clear it.    set current_target [current_target_name]    if { $current_target != $et_debug_mode_target_name } {	verbose "check_v3_target_debug_mode: `$et_debug_mode_target_name'" 2	set et_debug_mode_target_name $current_target	if [info exists et_debug_mode] {	    verbose "check_v3_target_debug_mode: removing cached result" 2	    unset et_debug_mode	}    }    if [info exists et_debug_mode] {	verbose "check_v3_target_debug_mode: using cached result" 2    } else {	set et_debug_mode 0	# Set up, compile, and execute a C++ test program that depends	# on debug mode working.	set src debug_mode[pid].cc	set exe debug_mode[pid].exe	set f [open $src "w"]	puts $f "#include <string>"	puts $f "using namespace std;"		puts $f "int main()"	puts $f "{ return 0; }"	close $f	set cxxflags_saved $cxxflags	set cxxflags "$cxxflags -Werror -O0 -D_GLIBCXX_DEBUG"	set lines [v3_target_compile $src $exe executable ""]	set cxxflags $cxxflags_saved	file delete $src	if [string match "" $lines] {	    # No error message, compilation succeeded.	    set et_debug_mode 1	}    }    verbose "check_v3_target_debug_mode: $et_debug_mode" 2    return $et_debug_mode}

⌨️ 快捷键说明

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