📄 configure
字号:
for hdr in dirent.h limits.h sys/dir.h stdlib.hdotrhdr=HAVE_`echo $hdr | tr '[a-z]./' '[A-Z]__'`echo checking for ${hdr}cat > conftest.c <<EOF#include <${hdr}>EOFerr=`eval "$CPP $DEFS conftest.c 2>&1 >/dev/null"`if test -z "$err"; then DEFS="$DEFS -D${trhdr}=1"firm -f conftest*doneecho checking for 'C++ <limits.h>'cat <<EOF >conftest.cc#include <limits.h>extern "C" { void exit(int); }int main() { exit(0); } void t() { int x = INT_MIN; int y = INT_MAX; int z = UCHAR_MAX; }EOFif eval $cc_compile; then DEFS="$DEFS -DHAVE_CC_LIMITS_H=1"firm -f conftest*echo checking for 'C++ <unistd.h>'cat <<EOF >conftest.cc#include <unistd.h>extern "C" { void exit(int); }int main() { exit(0); } void t() { read(0, 0, 0); }EOFif eval $cc_compile; then DEFS="$DEFS -DHAVE_CC_UNISTD_H=1"firm -f conftest*echo checking for declaration of getopt in stdlib.hcat <<EOF >conftest.cc#include <stdlib.h>extern "C" { void exit(int); }int main() { exit(0); } void t() { int opt = getopt(0, 0, 0); optarg = "foo"; optind = 1; }EOFif eval $cc_compile; then DEFS="$DEFS -DSTDLIB_H_DECLARES_GETOPT=1"firm -f conftest*echo checking for declaration of getopt in unistd.hcat <<EOF >conftest.cc#include <sys/types.h>#include <unistd.h>extern "C" { void exit(int); }int main() { exit(0); } void t() { int opt = getopt(0, 0, 0); }EOFif eval $cc_compile; then DEFS="$DEFS -DUNISTD_H_DECLARES_GETOPT=1"firm -f conftest*echo checking for declaration of putenvcat <<EOF >conftest.cc#include <stdlib.h>extern "C" { void exit(int); }int main() { exit(0); } void t() { putenv((char *)0); }EOFif eval $cc_compile; then DEFS="$DEFS -DSTDLIB_H_DECLARES_PUTENV=1"firm -f conftest*echo checking for time_tcat <<EOF >conftest.cc#include <time.h>extern "C" { void exit(int); }int main() { exit(0); } void t() { time_t t = time(0); struct tm *p = localtime(&t); }EOFif eval $cc_compile; then :else DEFS="$DEFS -DLONG_FOR_TIME_T=1"firm -f conftest*echo checking for return type of signal handlerscat > conftest.c <<EOF#include <sys/types.h>#include <signal.h>#ifdef signal#undef signal#endifextern void (*signal ()) ();main() { exit(0); } t() { int i; }EOFif eval $compile; then DEFS="$DEFS -DRETSIGTYPE=void"else DEFS="$DEFS -DRETSIGTYPE=int"firm -f conftest*echo checking for struct exceptioncat > conftest.c <<EOF#include <math.h>main() { exit(0); } t() { struct exception e; }EOFif eval $compile; then DEFS="$DEFS -DHAVE_STRUCT_EXCEPTION=1"firm -f conftest*echo checking for mmapcat > conftest.c <<EOF#include <sys/types.h>#include <sys/mman.h>main() { exit(0); } t() { char *p = mmap(0, 0, PROT_READ, MAP_PRIVATE, 0, 0); munmap(p, 0); }EOFif eval $compile; then DEFS="$DEFS -DHAVE_MMAP=1"firm -f conftest*echo checking for pid_t in sys/types.hecho '#include <sys/types.h>' > conftest.ceval "$CPP $DEFS conftest.c > conftest.out 2>&1"if egrep "pid_t" conftest.out >/dev/null 2>&1; then :else DEFS="$DEFS -Dpid_t=int"firm -f conftest*echo checking for vfork.hcat > conftest.c <<EOF#include <vfork.h>EOFerr=`eval "$CPP $DEFS conftest.c 2>&1 >/dev/null"`if test -z "$err"; then DEFS="$DEFS -DHAVE_VFORK_H=1"firm -f conftest*echo checking for working vforkcat > conftest.c <<EOF/* Thanks to Paul Eggert for this test. */#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#ifdef HAVE_UNISTD_H#include <unistd.h>#endif#ifdef HAVE_VFORK_H#include <vfork.h>#endifmain() { pid_t parent = getpid(); pid_t child = vfork(); if (child == 0) { /* On sparc systems, changes by the child to local and incoming argument registers are propagated back to the parent. The compiler is told about this with #include <vfork.h>, but some compilers (e.g. gcc -O) don't grok <vfork.h>. Test for this by using lots of local variables, at least as many local variables as main has allocated so far including compiler temporaries. 4 locals are enough for gcc 1.40.3 on a sparc, but we use 8 to be safe. A buggy compiler should reuse the register of parent for one of the local variables, since it will think that parent can't possibly be used any more in this routine. Assigning to the local variable will thus munge parent in the parent process. */ pid_t p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(), p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid(); /* Convince the compiler that p..p7 are live; otherwise, it might use the same hardware register for all 8 local variables. */ if (p != p1 || p != p2 || p != p3 || p != p4 || p != p5 || p != p6 || p != p7) _exit(1); /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent from child file descriptors. If the child closes a descriptor before it execs or exits, this munges the parent's descriptor as well. Test for this by closing stdout in the child. */ _exit(close(fileno(stdout)) != 0); } else { int status; struct stat st; while (wait(&status) != child) ; exit( /* Was there some problem with vforking? */ child < 0 /* Did the child fail? (This shouldn't happen.) */ || status /* Did the vfork/compiler bug occur? */ || parent != getpid() /* Did the file descriptor bug occur? */ || fstat(fileno(stdout), &st) != 0 ); }}EOFeval $compileif test -s conftest && (./conftest; exit) 2>/dev/null; then :else DEFS="$DEFS -Dvfork=fork"firm -f conftest*saved_libs="$LIBS"LIBS="$LIBS -lm"for func in fmod strtol getcwd strerror putenvdoecho checking for ${func}cat > conftest.c <<EOFmain() { exit(0); } t() { /* Override any gcc2 internal prototype to avoid an error. */extern char ${func}(); ${func}(); }EOFif eval $compile; then :else LIBOBJS="$LIBOBJS ${func}.o"firm -f conftest*doneLIBS="$saved_libs"for func in rename mkstempdotrfunc=HAVE_`echo $func | tr '[a-z]' '[A-Z]'`echo checking for ${func}cat > conftest.c <<EOF#include <stdio.h>main() { exit(0); } t() { #ifdef __stub_${func}choke me#else/* Override any gcc2 internal prototype to avoid an error. */extern char ${func}(); ${func}();#endif }EOFif eval $compile; then DEFS="$DEFS -D${trfunc}=1"firm -f conftest*#endifdoneecho checking for sys_siglistcat > conftest.c <<EOFmain() { exit(0); } t() { extern char *sys_siglist[]; sys_siglist[0] = 0; }EOFif eval $compile; then DEFS="$DEFS -DHAVE_SYS_SIGLIST=1"firm -f conftest*echo checking for gcc/g++ delete bugcat <<EOF > conftest.cc#include <stdlib.h>#include <stddef.h>int testit = 0;int main(){ testit = 1; int *p = new int; delete p; testit = 0; exit(1);}static unsigned dummy[3];void *operator new(size_t n){ if (testit) { dummy[1] = -(unsigned)(dummy + 2); return dummy + 2; } else return (void *)malloc(n);}void operator delete(void *p){ if (testit) { if (p == dummy) exit(0); } else free(p);}EOFrm -f conftesteval $cc_compileif test -s conftest && (./conftest) 2>/dev/null; then DEFS="$DEFS -DCOOKIE_BUG=1"firm -f conftest*echo checking for cfront ANSI C INT_MIN bugcat <<EOF > conftest.cc#include <stdlib.h>#ifdef HAVE_CC_LIMITS_H#include <limits.h>#else#define INT_MAX 2147483647#endif#undef INT_MIN#define INT_MIN (-INT_MAX-1)int main(){ int z = 0; exit(INT_MIN < z);}EOFrm -f conftesteval $cc_compileif test -s conftest && (./conftest) 2>/dev/null; then DEFS="$DEFS -DCFRONT_ANSI_BUG=1"firm -f conftest*echo checking for new array delete syntaxcat <<EOF >conftest.ccextern "C" { void exit(int); }int main() { exit(0); } void t() { char *p = new char[5]; delete [] p; }EOFif eval $cc_compile; then :else DEFS="$DEFS -DARRAY_DELETE_NEEDS_SIZE=1"firm -f conftest*echo checking for traditional preprocessorcat <<EOF >conftest.cc#define name2(a,b) a/**/bextern "C" { void exit(int); }int main() { exit(0); } void t() { int name2(foo,bar); }EOFif eval $cc_compile; then DEFS="$DEFS -DTRADITIONAL_CPP=1"firm -f conftest*echo checking for w_coredumpcat > conftest.c <<EOF#include <sys/types.h>#include <sys/wait.h>main(){#ifdef WCOREFLAG exit(1);#else int i = 0; ((union wait *)&i)->w_coredump = 1; exit(i != 0200);#endif}EOFeval $compileif test -s conftest && (./conftest; exit) 2>/dev/null; then DEFS="$DEFS -DWCOREFLAG=0200"firm -f conftest*test -n "${BROKEN_SPOOLER_FLAGS}" || BROKEN_SPOOLER_FLAGS=7echo using default value of ${BROKEN_SPOOLER_FLAGS} for grops -b optionif test -z "$PAGE" && test -r $prefix/lib/groff/font/devps/DESCthen if grep "^paperlength 841890" \ $prefix/lib/groff/font/devps/DESC >/dev/null 2>&1 then PAGE=A4 else PAGE=letter fifiif test -z "$PAGE"then dom=`awk '($1 == "dom" || $1 == "search") { print $2; exit}' \ /etc/resolv.conf 2>/dev/null` if test -z "$dom" then dom=`(domainname) 2>/dev/null | tr -d '+'` if test -z "$dom" then dom=`(hostname) 2>/dev/null | grep '\.'` fi fi # If the top-level domain is two letters and it's not `us' or `ca' # then they probably use A4 paper. case "$dom" in *.[Uu][Ss]|*.[Cc][Aa]) ;; *.[A-Za-z][A-Za-z]) PAGE=A4 ;; esacfitest -n "$PAGE" || PAGE=letterecho guessing $PAGE size paperif test -n "$prefix"; then test -z "$exec_prefix" && exec_prefix='${prefix}' prsub="s%^prefix\\([ ]*\\)=\\([ ]*\\).*$%prefix\\1=\\2$prefix%"fiif test -n "$exec_prefix"; then prsub="$prsubs%^exec_prefix\\([ ]*\\)=\\([ ]*\\).*$%\exec_prefix\\1=\\2$exec_prefix%"fitrap 'rm -f config.status; exit 1' 1 3 15echo creating config.statusrm -f config.statuscat > config.status <<EOF#!/bin/sh# Generated automatically by configure.# Run this file to recreate the current configuration.# This directory was configured as follows,# on host `(hostname || uname -n) 2>/dev/null`:## $0 $*for argdo case "\$arg" in -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) exec /bin/sh $0 $* ;; *) echo "Usage: config.status --recheck" 2>&1; exit 1 ;; esacdonetrap 'rm -f Makefile; exit 1' 1 3 15CC='$CC'CCLIBS='$CCLIBS'CCC='$CCC'LPR='$LPR'LP='$LP'LPQ='$LPQ'PSPRINT='$PSPRINT'DVIPRINT='$DVIPRINT'PERLPATH='$PERLPATH'YACC='$YACC'RANLIB='$RANLIB'INSTALL='$INSTALL'INSTALL_PROGRAM='$INSTALL_PROGRAM'INSTALL_DATA='$INSTALL_DATA'LN_S='$LN_S'ETAGSCCFLAG='$ETAGSCCFLAG'SH_SCRIPT_SED_CMD='$SH_SCRIPT_SED_CMD'CPP='$CPP'LIBOBJS='$LIBOBJS'BROKEN_SPOOLER_FLAGS='$BROKEN_SPOOLER_FLAGS'PAGE='$PAGE'LIBS='$LIBS'srcdir='$srcdir'DEFS='$DEFS'prefix='$prefix'exec_prefix='$exec_prefix'prsub='$prsub'EOFcat >> config.status <<\EOFtop_srcdir=$srcdirfor file in .. Makefile; do if [ "x$file" != "x.." ]; then srcdir=$top_srcdir # Remove last slash and all that follows it. Not all systems have dirname. dir=`echo $file|sed 's%/[^/][^/]*$%%'` if test "$dir" != "$file"; then test "$top_srcdir" != . && srcdir=$top_srcdir/$dir test ! -d $dir && mkdir $dir fi echo creating $file rm -f $file echo "# Generated automatically from `echo $file|sed 's|.*/||'`.in by configure." > $file sed -e "$prsubs%@CC@%$CC%gs%@CCLIBS@%$CCLIBS%gs%@CCC@%$CCC%gs%@LPR@%$LPR%gs%@LP@%$LP%gs%@LPQ@%$LPQ%gs%@PSPRINT@%$PSPRINT%gs%@DVIPRINT@%$DVIPRINT%gs%@PERLPATH@%$PERLPATH%gs%@YACC@%$YACC%gs%@RANLIB@%$RANLIB%gs%@INSTALL@%$INSTALL%gs%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%gs%@INSTALL_DATA@%$INSTALL_DATA%gs%@LN_S@%$LN_S%gs%@ETAGSCCFLAG@%$ETAGSCCFLAG%gs%@SH_SCRIPT_SED_CMD@%$SH_SCRIPT_SED_CMD%gs%@CPP@%$CPP%gs%@LIBOBJS@%$LIBOBJS%gs%@BROKEN_SPOOLER_FLAGS@%$BROKEN_SPOOLER_FLAGS%gs%@PAGE@%$PAGE%gs%@LIBS@%$LIBS%gs%@srcdir@%$srcdir%gs%@DEFS@%$DEFS%" $top_srcdir/${file}.in >> $filefi; doneEOFchmod +x config.statustest -n "$no_create" || ./config.status
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -