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

📄 config.c

📁 基于Blas CLapck的.用过的人知道是干啥的
💻 C
📖 第 1 页 / 共 2 页
字号:
      i += sprintf(ln+i, " -Ss smaflags '%s'", smaflags);   if (dmaflags)      i += sprintf(ln+i, " -Ss dmaflags '%s'", dmaflags);   if (f77libs)      i += sprintf(ln+i, " -Ss f77lib '%s'", f77libs);   if (gccflags)      i += sprintf(ln+i, " -Fa gc '%s'", gccflags);   if (verb > 1)      fprintf(stderr, "cmnd='%s'\n", ln);   assert(!system(ln));}void PrintUsage(char *name, int iarg, char *arg){   fprintf(stderr, "\nERROR around arg %d (%s).\n", iarg,           arg ? arg : "unknown");   fprintf(stderr, "USAGE: %s [flags] where flags are:\n", name);   fprintf(stderr, "   -v <verb> : verbosity level\n");   fprintf(stderr, "   -O <enum OSTYPE #>  : set OS type\n");   fprintf(stderr, "   -s <enum ASMDIA #>  : set assembly dialect\n");   fprintf(stderr, "   -A <enum MACHTYPE #> : set machine/architecture\n");   fprintf(stderr,   "   -V #    # = ((1<<vecISA1) | (1<<vecISA2) | ... | (1<<vecISAN))\n");   fprintf(stderr, "   -b <32/64> : set pointer bitwidth\n");   fprintf(stderr, "   -o <outfile>\n");   fprintf(stderr, "   -C [xc,ic,if,sk,dk,sm,dm,al,ac] <compiler>\n");   fprintf(stderr, "   -F [xc,ic,if,sk,dk,sm,dm,al,ac,gc] '<comp flags>'\n");   fprintf(stderr,    /* HERE */           "   -Fa [xc,ic,if,sk,dk,sm,dm,al,ac,gc] '<comp flags to append>'\n");   fprintf(stderr, "        al: append flags to all compilers\n");   fprintf(stderr, "        ac: append flags to all C compilers\n");   fprintf(stderr, "        gc: append flags to gcc compiler used in user-contributed index files.\n");   fprintf(stderr, "        acg: append to all C compilers & the index gcc\n");   fprintf(stderr, "        alg: append to all compilers & the index gcc\n");   fprintf(stderr,      "   -T <targ> : ssh target for cross-compilation (probably broken)\n");   fprintf(stderr, "   -D [c,f] -D<mac>=<rep> : cpp #define to add to [CDEFS,F2CDEFS]\n");   fprintf(stderr,   "      eg. -D c -DL2SIZE=8388604 -D f -DADD__ -D f -DStringSunStyle\n");   fprintf(stderr, "   -d [s,b]  : set source/build directory\n");   fprintf(stderr, "   -f <#> : size (in KB) to flush before timing\n");   fprintf(stderr,           "   -t <#> : set # of threads (-1: autodect; 0: no threading)\n");   fprintf(stderr, "   -m <mhz> : set clock rate\n");   fprintf(stderr, "   -S[i/s] <handle> <val>  : special int/string arg\n");   fprintf(stderr,           "      -Si bozol1 <0/1> : supress/enable bozo L1 defaults\n");   fprintf(stderr,           "      -Si archdef <1/0> : enable/supress arch default use\n");      fprintf(stderr,        "      -Si nof77 <0/1> : Have/don't have fortran compiler\n");      fprintf(stderr,        "      -Si nocygwin <0/1> : Do/don't depend on GPL cygwin library\n");      fprintf(stderr,        "                           (Windows compiler/cygwin install only)\n");      fprintf(stderr,        "      -Si cputhrchk <0/1> : Ignore/heed CPU throttle probe\n");   fprintf(stderr,        "      -Ss kern <path to comp> : use comp for all kernel compilers\n");   fprintf(stderr,        "      -Ss pmake <parallel make invocation (eg '$(MAKE) -j 4')>\n");   fprintf(stderr,"      -Ss f77lib <path to f77 lib needed by C compiler>\n");   fprintf(stderr,"      -Ss flapack <path to netlib lapack>: used to build full lapack lib\n");   fprintf(stderr, "      -Ss [s,d]maflags 'flags'\n");   fprintf(stderr,      "NOTE: enum #s can be found by : make xprint_enums ; ./xprint_enums\n");   exit(iarg);}void GetFlags(int nargs,                /* nargs as passed into main */              char **args,              /* args as passed into main */              int *verb,                /* verbosity setting */              enum OSTYPE *OS,          /* OS to assume */              enum ASMDIA *asmb,        /* assembly dialect to assume */              int *vec,                 /* Vector ISA extension bitfield */              enum MACHTYPE *mach,     /* machine/arch to assume */              int *mhz,                /* Clock rate in Mhz */              int *ptrbits             /* # of bits in ptr: 32/64 */,              int *nthreads,           /* # of threads */              char **comps,              char **gccflags,        /* append flags for user-contrib gcc */              char **outfile,              char **srcdir,          /* path to top of source directory */              char **bindir,          /* path to top of binary directory */              int *bozol1,            /* Use untuned L1 */              int *UseArchDef,        /* Use arch defaults */              int *NoF77,              int *NoCygwin,              int *ThrChk,              char **f2cdefs,         /* F77-to-C interface defines */              char **ecdefs,          /* extra cpp defines to add to CDEFS */              char **pmake,           /* parallel make command */              char **flapack,         /* netlib F77 LAPACK  */              char **smaflags,       /* single prec muladd flags */              char **dmaflags,       /* double prec muladd flags */              char **f77lib,         /* netlib F77 LAPACK  */              int *flush,             /* size in KB to flush */              char **targ             /* mach to ssh to*/             ){   int i, k, k0, kn, DoInt;   char *sp, *sp0;   char *gcc3=NULL;   char *cdefs=NULL, *fdefs=NULL;   char ln[1024];   *verb = 0;   *srcdir = *bindir = NULL;    *bozol1 = 0;    *UseArchDef = 1;    *flapack = NULL;    *f77lib = NULL;    *smaflags = *dmaflags = NULL;    *mhz = 0;   *outfile = NULL;   *targ = NULL;   for (k=0; k < NCOMP*3; k++)      comps[k] = NULL;   *gccflags = NULL;   *flush = 0;   *nthreads = 0;   *ptrbits = 0;   *mhz = 0;   *mach = 0;   *vec = 0;   *asmb = 0;   *OS = 0;   *verb = 0;   *NoCygwin = 0;   *NoF77 = 0;   *ThrChk = 1;   *nthreads = -1;   *pmake = NULL;   for (i=1; i < nargs; i++)   {      if (args[i][0] != '-')         PrintUsage(args[0], i, args[i]);      switch(args[i][1])      {      case 'f':         if (++i >= nargs)            PrintUsage(args[0], i, "out of arguments");         *flush = atoi(args[i]);         break;      case 't':         if (++i >= nargs)            PrintUsage(args[0], i, "out of arguments");         *nthreads = atoi(args[i]);         break;      case 'b':         if (++i >= nargs)            PrintUsage(args[0], i, "out of arguments");         *ptrbits = atoi(args[i]);         break;      case 'm':         if (++i >= nargs)            PrintUsage(args[0], i, "out of arguments");         *mhz = atoi(args[i]);         break;      case 'A':         if (++i >= nargs)            PrintUsage(args[0], i, "out of arguments");         *mach = atoi(args[i]);         break;      case 'V':         if (++i >= nargs)            PrintUsage(args[0], i, "out of arguments");         *vec = atoi(args[i]);         break;      case 's':         if (++i >= nargs)            PrintUsage(args[0], i, "out of arguments");         *asmb = atoi(args[i]);         break;      case 'O':         if (++i >= nargs)            PrintUsage(args[0], i, "out of arguments");         *OS = atoi(args[i]);         break;      case 'v':         if (++i >= nargs)            PrintUsage(args[0], i, "out of arguments");         *verb = atoi(args[i]);         break;      case 'T':         if (++i >= nargs)            PrintUsage(args[0], i, "out of arguments");         *targ = args[i];         break;      case 'S':         if (args[i][2] != 'i' && args[i][2] != 's')            PrintUsage(args[0], i, "-S needs i or s suffix!");         DoInt = args[i][2] == 'i';         if (++i >= nargs)            PrintUsage(args[0], i, "out of arguments");         sp0 = args[i];         if (++i >= nargs)            PrintUsage(args[0], i, "out of arguments");         if (DoInt)            k = atoi(args[i]);         else            sp = args[i];         if (!strcmp(sp0, "archdef"))            *UseArchDef = k;         else if (!strcmp(sp0, "bozol1"))            *bozol1 = k;         else if (!strcmp(sp0, "nof77"))            *NoF77 = k;         else if (!strcmp(sp0, "nocygwin"))            *NoCygwin = k;         else if (!strcmp(sp0, "cputhrchk"))            *ThrChk = k;         else if (!strcmp(sp0, "kern"))            gcc3 = sp;         else if (!strcmp(sp0, "pmake"))            *pmake = sp;        else if (!strcmp(sp0, "flapack"))           *flapack = sp;        else if (!strcmp(sp0, "f77lib"))           *f77lib = sp;        else if (!strcmp(sp0, "smaflags"))           *smaflags = sp;        else if (!strcmp(sp0, "dmaflags"))           *dmaflags = sp;         else            PrintUsage(args[0], i-1, sp0);         break;      case 'o':         if (++i >= nargs)            PrintUsage(args[0], i, "out of arguments");         *outfile = args[i];         break;      case 'D':         if (++i >= nargs)            PrintUsage(args[0], i, "out of arguments");         if (++i >= nargs)            PrintUsage(args[0], i, "out of arguments");         if (args[i-1][0] == 'f')            fdefs = NewAppendedString(fdefs, args[i]);         else            cdefs = NewAppendedString(cdefs, args[i]);         break;      case 'd':         if (++i >= nargs)            PrintUsage(args[0], i, "out of arguments");         if (++i >= nargs)            PrintUsage(args[0], i, "out of arguments");         sp = args[i-1];         if (*sp == 's')            *srcdir = args[i];         else if (*sp == 'b')            *bindir = args[i];         break;      case 'C':      case 'F':         if (++i >= nargs)            PrintUsage(args[0], i, "out of arguments");         sp = args[i];         k = -1;         if (*sp == 'i' && sp[1] == 'c') k = ICC_;         else if (*sp == 'i' && sp[1] == 'f') k = F77_;         else if (*sp == 's' && sp[1] == 'k') k = SKC_;         else if (*sp == 'd' && sp[1] == 'k') k = DKC_;         else if (*sp == 's' && sp[1] == 'm') k = SMC_;         else if (*sp == 'd' && sp[1] == 'm') k = DMC_;         else if (*sp == 'x' && sp[1] == 'c') k = XCC_;         if (*sp == 'a' && (sp[1] == 'l' || sp[1] == 'c'))         {  /* only appended flags can be applied to all compilers */            if (args[i-1][1] == 'F')            {               if (args[i-1][2] == 'a')               {                  k0 = NCOMP+NCOMP;                  kn = k0 + NCOMP;               }               else               {                  k0 = NCOMP;                  kn = NCOMP+NCOMP;               }            }            else            {               k0 = 0;               kn = NCOMP;            }            if (++i >= nargs)               PrintUsage(args[0], i, "out of arguments");            for (k=k0; k < kn; k++)               if (sp[1] == 'l' || k-2*NCOMP != F77_)                  comps[k] = args[i];            if (sp[2] == 'g' && args[i-2][1] == 'F')               *gccflags = args[i];         }         else if (*sp == 'g' && sp[1] == 'c')         {            if (++i >= nargs)               PrintUsage(args[0], i, "out of arguments");            *gccflags = args[i];         }         else         {            if (k < 0) PrintUsage(args[0], i, args[i]);            if (args[i-1][1] == 'F')            {               k += NCOMP;               if (args[i-1][2] == 'a')                  k += NCOMP;            }            if (++i >= nargs)               PrintUsage(args[0], i, "out of arguments");            comps[k] = args[i];         }         break;      default:         PrintUsage(args[0], i, args[i]);      }   }/* * allocate these strings ourselves so we can free them later if necessary */   for (i=0; i < 3*NCOMP; i++)   {      if (comps[i])      {         if (!strcmp(comps[i], "default"))            comps[i] = NULL;         else         {            sp = malloc(sizeof(char)*(strlen(comps[i])+1));            strcpy(sp, comps[i]);            comps[i] = sp;         }      }   }/* * If the special flag -Ss gcc3 is thrown, force gcc3's use for all kernel * compilers (standard gcc assumed to be gcc4) */   if (gcc3)   {      for (i=0; i < NCOMP; i++)      {         if (!comps[i] && (i == SMC_ || i == DMC_ || i == SKC_ || i == DKC_))            comps[i] = NewStringCopy(gcc3);      }   }   *f2cdefs = fdefs;   *ecdefs = cdefs;   if (*ptrbits != 32 && *ptrbits != 64)      *ptrbits = 0;}main(int nargs, char **args){   enum OSTYPE OS;   enum MACHTYPE mach;   int i, verb, asmb, f2cname, f2cint, f2cstr, ncpu, nof77, nocygwin;   int thrchk, mhz;   int j, k, h, vecexts;   int ptrbits, l2size, bozol1, archdef;   char *targ, *f2cdefs, *cdefs, *srcdir, *bindir, *outfile, *sp;   char targarg[256];   char *comps[3*NCOMP], *gccflags;   char *pmake, *flapack, *smaflags, *dmaflags, *f77libs;   GetFlags(nargs, args, &verb, &OS, (enum ASMDIA*) &asmb, &vecexts, &mach,            &mhz, &ptrbits, &ncpu, comps, &gccflags, &outfile, &srcdir, &bindir,            &bozol1, &archdef, &nof77, &nocygwin, &thrchk, &f2cdefs, &cdefs,            &pmake, &flapack, &smaflags, &dmaflags, &f77libs, &l2size, &targ);   if (targ)      sprintf(targarg, "-T %s", targ);   else      targarg[0] = '\0';   if (OS == OSOther)      OS = ProbeOS(verb, targarg);   if (asmb == ASM_None)      asmb = ProbeAsm(verb, targarg, OS);   else if (asmb < 0)      asmb = 0;   if (!vecexts)      vecexts = ProbeVecs(verb, targarg, OS, asmb);   else if (vecexts < 0)      vecexts = 0;   if (mach == MACHOther)      mach = ProbeArch(verb, targarg, OS, asmb);   if (!mhz)      mhz = ProbeMhz(verb, targarg, OS, asmb);   if (ncpu < 0)      ncpu = ProbeNcpu(verb, targarg, OS, asmb);   if (!pmake && ncpu > 1)      pmake = ProbePmake(verb, OS, ncpu);   if (ptrbits == 0)   {      if (asmb == gas_x86_64)         ptrbits = 64;      else         ptrbits = ProbePtrbits(verb, targarg, OS, asmb);   }   if (ProbeCPUThrottle(verb, targarg, OS, asmb))   {      fprintf(stderr,         "It appears you have cpu throttling enabled, which makes timings\n");      fprintf(stderr,              "unreliable and an ATLAS install nonsensical.  Aborting.\n");      fprintf(stderr,              "See ATLAS/INSTALL.txt for further information\n");      if (thrchk) exit(1);      else fprintf(stderr, "Ignoring CPU throttling by user override!\n\n");   }/* * Override 32/64 bit assembler if asked */   if (asmb == gas_x86_64 && ptrbits == 32)      asmb = gas_x86_32;   else if (asmb == gas_x86_32 && ptrbits == 64)      asmb = gas_x86_64;   sp = ProbeComp(verb, targarg, OS, mach, comps, nof77, nocygwin, ptrbits);   if (nof77)      f2cdefs = "-DATL_NoF77";   else if (!f2cdefs) f2cdefs = sp;   if (!f77libs)      f77libs = ProbeF77LIB(verb, targarg, OS, mach, comps, f2cdefs, nof77);/* * If user has not specified muladd flags (which are suffixed to kernel flags), * add flags to keep gcc 4 from hanging, if necessary */   if (!smaflags)   {      if (CompIsGcc(comps[SKC_]))      {         GetGccVers(comps[SKC_], &h, &i, &j, &k);         if (i >= 4)            smaflags = "-fno-tree-loop-optimize";         else if (i == 3) /* reduce opt to avoid compiler hang */            smaflags = "-O0";      }      else if (OS == OSIRIX && CompIsMIPSpro(comps[SKC_]))         smaflags = " -O2";   }   if (!dmaflags)   {      if (CompIsGcc(comps[DKC_]))      {         GetGccVers(comps[DKC_], &h, &i, &j, &k);         if (i >= 4)            dmaflags = "-fno-tree-loop-optimize";         else if (i == 3) /* reduce opt to avoid compiler hang */            dmaflags = "-O0";      }      else if (OS == OSIRIX && CompIsMIPSpro(comps[DKC_]))         dmaflags = " -O2";   }   SpewItForth(verb, OS, mach, mhz, asmb, vecexts, ptrbits, ncpu, l2size,               srcdir, bindir, bozol1, archdef, nof77, comps, gccflags,               f2cdefs, cdefs, pmake, flapack, smaflags, dmaflags, f77libs);/* * Cleanup directory, and exit */   system("make confclean");   exit(0);}

⌨️ 快捷键说明

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