readme
来自「编译工具」· 代码 · 共 317 行
TXT
317 行
omkdepend=========This code is taken from the X11R6 makedepend sources. All I have done is: * Add GNUWIN32 file name translation. * Remove all predefined symbols, include directories and other platform-specific behaviour. Its behaviour should be the same on all platforms. All symbols and include directories must be explicitly given on the command line with -D and -I flags. * Fix processing of numbers in #if expressions. * Fix processing of -D flag. * Fix C++ comment handling. * Improve #error warnings. * Change the output so that processing "xxx.c" or "xxx.cc" produces "xxx.d".I disclaim all responsibility for the unclean nature of the code herein.TJR 17/7/97.For reference, here is a complete diff from the X11R6 source:% diff /packages/old/X11R6/src/xc/config/makedepend .Only in /packages/old/X11R6/src/xc/config/makedepend: ImakefileOnly in /packages/old/X11R6/src/xc/config/makedepend: cpp.edOnly in /packages/old/X11R6/src/xc/config/makedepend: mkdepend.manOnly in .: READMEOnly in .: dir.mkOnly in .: gnuwin32.cOnly in .: gnuwin32.h *************** def.h ***************diff /packages/old/X11R6/src/xc/config/makedepend/def.h ./def.h29,33d28< #include <X11/Xosdefs.h>< #ifdef WIN32< #include <X11/Xw32defs.h>< #endif< #include <X11/Xfuncproto.h> *************** ifparser.c ***************diff /packages/old/X11R6/src/xc/config/makedepend/ifparser.c ./ifparser.c102d101< #ifdef WIN32104,108d102< #else< *valp = atoi (cp);< /* EMPTY */< for (cp++; isdigit(*cp); cp++) ;< #endif *************** include.c ***************diff /packages/old/X11R6/src/xc/config/makedepend/include.c ./include.c103a104,106> #ifdef WIN32> sprintf(path, "%s\\%s", *pp, include);> #else104a108> #endif *************** main.c ***************diff /packages/old/X11R6/src/xc/config/makedepend/main.c ./main.c28a29> #include "gnuwin32.h"77,79c78< #define MAKEDEPEND< #include "imakemdep.h" /* from config sources */< #undef MAKEDEPEND---> struct symtab predefs[] = { {NULL, NULL} };89,90c88< char *objsuffix = OBJSUFFIX;< char *startat = "# DO NOT DELETE";---> char *objsuffix = ".o";138a137,139> #ifdef WIN32> GetMounts();> #endif202a204,206> #ifdef WIN32> argv[0] = TranslateFileNameU2D(argv[0],0);> #endif211a216,217> {> int offset = 2;214a221> offset = 0;216c223< for (p=argv[0] + 2; *p ; p++)---> for (p=argv[0] + offset; *p ; p++)221c228< define(argv[0] + 2, &maininclist);---> define(argv[0] + offset, &maininclist);222a230> }230a239,241> #ifdef WIN32> *(incp-1) = TranslateFileNameU2D(*(incp-1),0);> #endif275,294d285< case 's':< if (endmarker) break;< startat = argv[0]+2;< if (*startat == '\0') {< startat = *(++argv);< argc--;< }< if (*startat != '#')< fatalerr("-s flag's value should start %s\n",< "with '#'.");< break;< case 'f':< if (endmarker) break;< makefile = argv[0]+2;< if (*makefile == '\0') {< makefile = *(++argv);< argc--;< }< break;< 312,324d302< #ifdef PREINCDIR< if (incp >= includedirs + MAXDIRS)< fatalerr("Too many -I flags.\n");< *incp++ = PREINCDIR;< #endif< if (incp >= includedirs + MAXDIRS)< fatalerr("Too many -I flags.\n");< *incp++ = INCLUDEDIR;< #ifdef POSTINCDIR< if (incp >= includedirs + MAXDIRS)< fatalerr("Too many -I flags.\n");< *incp++ = POSTINCDIR;< #endif331,332d308< redirect(startat, makefile);< 401a378,385> char *base = base_name(*fp);> char *depfile = (char *)malloc(strlen(base) + 3);> sprintf(depfile,"%s.d",base);> if (!freopen(depfile, "wb", stdout))> fatalerr("cannot open \"%s\"\n", depfile);> free(depfile);> free(base);> printed = FALSE;405c389< find_includes(filecontent, ip, ip, 0, FALSE);---> find_includes(filecontent, ip, ip, 0, TRUE);408a393,394> if (printed)> printf("\n");410,411d395< if (printed)< printf("\n");503d486< #ifdef WIN32507a491> p--; /* go back to before newline */511d494< #endif550c533,535< file = copy(file);---> for(p=file+strlen(file); p>file && *p != '/' && *p != '\\'; p--) ;> if (p>file) p++;> file = copy(p);558,639d542< #if defined(USG) && !defined(CRAY) && !defined(SVR4)< int rename (from, to)< char *from, *to;< {< (void) unlink (to);< if (link (from, to) == 0) {< unlink (from);< return 0;< } else {< return -1;< }< }< #endif /* USGISH */< < redirect(line, makefile)< char *line,< *makefile;< {< struct stat st;< FILE *fdin, *fdout;< char backup[ BUFSIZ ],< buf[ BUFSIZ ];< boolean found = FALSE;< int len;< < /*< * if makefile is "-" then let it pour onto stdout.< */< if (makefile && *makefile == '-' && *(makefile+1) == '\0')< return;< < /*< * use a default makefile is not specified.< */< if (!makefile) {< if (stat("Makefile", &st) == 0)< makefile = "Makefile";< else if (stat("makefile", &st) == 0)< makefile = "makefile";< else< fatalerr("[mM]akefile is not present\n");< }< else< stat(makefile, &st);< if ((fdin = fopen(makefile, "r")) == NULL)< fatalerr("cannot open \"%s\"\n", makefile);< sprintf(backup, "%s.bak", makefile);< unlink(backup);< #ifdef WIN32< fclose(fdin);< #endif< if (rename(makefile, backup) < 0)< fatalerr("cannot rename %s to %s\n", makefile, backup);< #ifdef WIN32< if ((fdin = fopen(backup, "r")) == NULL)< fatalerr("cannot open \"%s\"\n", backup);< #endif< if ((fdout = freopen(makefile, "w", stdout)) == NULL)< fatalerr("cannot open \"%s\"\n", backup);< len = strlen(line);< while (!found && fgets(buf, BUFSIZ, fdin)) {< if (*buf == '#' && strncmp(line, buf, len) == 0)< found = TRUE;< fputs(buf, fdout);< }< if (!found) {< if (verbose)< warning("Adding new delimiting line \"%s\" and dependencies...\n",< line);< puts(line); /* same as fputs(fdout); but with newline */< } else if (append) {< while (fgets(buf, BUFSIZ, fdin)) {< fputs(buf, fdout);< }< }< fflush(fdout);< #if defined(USGISH) || defined(_SEQUENT_)< chmod(makefile, st.st_mode);< #else< fchmod(fileno(fdout), st.st_mode);< #endif /* USGISH */< } *************** parse.c ***************diff /packages/old/X11R6/src/xc/config/makedepend/parse.c ./parse.c131c131,132< warning("%s: %d: %s\n", file_red->i_file,---> warning("(from %s) %s: %d: %s\n",> file_red->i_file, file->i_file, *************** pr.c ***************diff /packages/old/X11R6/src/xc/config/makedepend/pr.c ./pr.c98d97< static int current_len;100a100,104> #ifdef WIN32> char *transfile = TranslateFileNameD2U(ip->i_file,0);> #else> char *transfile = ip->i_file;> #endif103,104c107< len = strlen(ip->i_file)+1;< if (current_len + len > width || file != lastfile) {---> if (file != lastfile) {106,108c109,110< sprintf(buf, "\n%s%s%s: %s", objprefix, base, objsuffix,< ip->i_file);< len = current_len = strlen(buf);---> sprintf(buf, "%s%s%s %s.d: %s", objprefix, base, objsuffix,> base, transfile);111,113c113< buf[0] = ' ';< strcpy(buf+1, ip->i_file);< current_len += len;---> sprintf(buf, " \\\n %s", transfile);115c115< fwrite(buf, len, 1, stdout);---> fwrite(buf, strlen(buf), 1, stdout);124c124< printf("\n# %s includes:", ip->i_file);---> printf("\n# %s includes:", transfile);126a127,129> #ifdef WIN32> free(transfile);> #endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?