| OLD | NEW |
| 1 /* $Id: genversion.c 2082 2008-05-09 06:46:02Z peter $ | 1 /* |
| 2 * | 2 * |
| 3 * Generate version.mac | 3 * Generate version.mac |
| 4 * | 4 * |
| 5 * Copyright (C) 2006-2007 Peter Johnson | 5 * Copyright (C) 2006-2007 Peter Johnson |
| 6 * | 6 * |
| 7 * Redistribution and use in source and binary forms, with or without | 7 * Redistribution and use in source and binary forms, with or without |
| 8 * modification, are permitted provided that the following conditions | 8 * modification, are permitted provided that the following conditions |
| 9 * are met: | 9 * are met: |
| 10 * 1. Redistributions of source code must retain the above copyright | 10 * 1. Redistributions of source code must retain the above copyright |
| 11 * notice, this list of conditions and the following disclaimer. | 11 * notice, this list of conditions and the following disclaimer. |
| (...skipping 17 matching lines...) Expand all Loading... |
| 29 | 29 |
| 30 #include <stdio.h> | 30 #include <stdio.h> |
| 31 #include <stdlib.h> | 31 #include <stdlib.h> |
| 32 #include <string.h> | 32 #include <string.h> |
| 33 #include <ctype.h> | 33 #include <ctype.h> |
| 34 | 34 |
| 35 int | 35 int |
| 36 main(int argc, char *argv[]) | 36 main(int argc, char *argv[]) |
| 37 { | 37 { |
| 38 FILE *out; | 38 FILE *out; |
| 39 int major, minor, subminor; | 39 int major, minor, subminor, patchlevel, matched; |
| 40 | 40 |
| 41 if (argc != 2) { | 41 if (argc != 2) { |
| 42 fprintf(stderr, "Usage: %s <outfile>\n", argv[0]); | 42 fprintf(stderr, "Usage: %s <outfile>\n", argv[0]); |
| 43 return EXIT_FAILURE; | 43 return EXIT_FAILURE; |
| 44 } | 44 } |
| 45 | 45 |
| 46 if (sscanf(PACKAGE_INTVER, "%d.%d.%d", &major, &minor, &subminor) != 3) { | 46 matched = sscanf(PACKAGE_VERSION, "%d.%d.%d.%d", &major, &minor, &subminor, |
| 47 &patchlevel); |
| 48 |
| 49 if (matched == 3) |
| 50 patchlevel = 0; |
| 51 else if (matched != 4) { |
| 47 fprintf(stderr, "Version tokenizing error\n"); | 52 fprintf(stderr, "Version tokenizing error\n"); |
| 48 return EXIT_FAILURE; | 53 return EXIT_FAILURE; |
| 49 } | 54 } |
| 50 | 55 |
| 51 out = fopen(argv[1], "wt"); | 56 out = fopen(argv[1], "wt"); |
| 52 | 57 |
| 53 if (!out) { | 58 if (!out) { |
| 54 fprintf(stderr, "Could not open `%s'.\n", argv[1]); | 59 fprintf(stderr, "Could not open `%s'.\n", argv[1]); |
| 55 return EXIT_FAILURE; | 60 return EXIT_FAILURE; |
| 56 } | 61 } |
| 57 | 62 |
| 58 fprintf(out, "; This file auto-generated by genversion.c" | 63 fprintf(out, "; This file auto-generated by genversion.c" |
| 59 " - don't edit it\n"); | 64 " - don't edit it\n"); |
| 60 | 65 |
| 61 fprintf(out, "%%define __YASM_MAJOR__ %d\n", major); | 66 fprintf(out, "%%define __YASM_MAJOR__ %d\n", major); |
| 62 fprintf(out, "%%define __YASM_MINOR__ %d\n", minor); | 67 fprintf(out, "%%define __YASM_MINOR__ %d\n", minor); |
| 63 fprintf(out, "%%define __YASM_SUBMINOR__ %d\n", subminor); | 68 fprintf(out, "%%define __YASM_SUBMINOR__ %d\n", subminor); |
| 64 if (!isdigit(PACKAGE_BUILD[0])) | 69 fprintf(out, "%%define __YASM_BUILD__ %d\n", patchlevel); |
| 65 fprintf(out, "%%define __YASM_BUILD__ 0\n"); | 70 fprintf(out, "%%define __YASM_PATCHLEVEL__ %d\n", patchlevel); |
| 66 else | |
| 67 fprintf(out, "%%define __YASM_BUILD__ %d\n", atoi(PACKAGE_BUILD)); | |
| 68 | 71 |
| 69 /* Version id (hex number) */ | 72 /* Version id (hex number) */ |
| 70 fprintf(out, "%%define __YASM_VERSION_ID__ 0%02x%02x%02x00h\n", major, | 73 fprintf(out, "%%define __YASM_VERSION_ID__ 0%02x%02x%02x%02xh\n", major, |
| 71 minor, subminor); | 74 minor, subminor, patchlevel); |
| 72 | 75 |
| 73 /* Version string - version sans build */ | 76 /* Version string */ |
| 74 fprintf(out, "%%define __YASM_VER__ \"%s\"\n", PACKAGE_INTVER); | 77 fprintf(out, "%%define __YASM_VER__ \"%s\"\n", PACKAGE_VERSION); |
| 75 fclose(out); | 78 fclose(out); |
| 76 | 79 |
| 77 return EXIT_SUCCESS; | 80 return EXIT_SUCCESS; |
| 78 } | 81 } |
| OLD | NEW |