Centralize more of the version number machinery
authorH. Peter Anvin <hpa@zytor.com>
Mon, 7 Jul 2008 22:21:56 +0000 (15:21 -0700)
committerH. Peter Anvin <hpa@zytor.com>
Mon, 7 Jul 2008 22:21:56 +0000 (15:21 -0700)
Centralize more (most) of the version number machinery to version.pl.

13 files changed:
Makefile
core/Makefile
core/comboot.inc
core/extlinux.asm
core/isolinux.asm
core/ldlinux.asm
core/pxelinux.asm
extlinux/main.c
memdisk/Makefile
memdisk/memdisk.asm
memdisk/setup.c
version
version.pl

index 1a073b2..6b90c09 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -15,8 +15,7 @@
 #
 topdir = .
 include $(topdir)/MCONFIG
-
-VERSION := $(shell cat version)
+-include $(topdir)/version.mk
 
 #
 # The BTARGET refers to objects that are derived from ldlinux.asm; we
@@ -31,7 +30,7 @@ VERSION := $(shell cat version)
 
 # syslinux.exe is BTARGET so as to not require everyone to have the
 # mingw suite installed
-BTARGET  = version.gen version.h
+BTARGET  = version.gen version.h version.mk
 BOBJECTS = $(BTARGET) \
        mbr/mbr.bin mbr/gptmbr.bin \
        core/pxelinux.0 core/isolinux.bin core/isolinux-debug.bin \
@@ -46,7 +45,7 @@ BOBJECTS = $(BTARGET) \
 # for "make installer".
 BSUBDIRS = codepage core memdisk com32 mbr memdump gpxe sample \
           libinstaller dos win32
-ITARGET  = 
+ITARGET  =
 IOBJECTS = $(ITARGET) dos/copybs.com utils/gethostip utils/mkdiskimage \
        mtools/syslinux linux/syslinux extlinux/extlinux
 ISUBDIRS = libinstaller mtools linux extlinux utils
@@ -89,10 +88,11 @@ installer:
 installer-local: $(ITARGET) $(BINFILES)
 
 version.gen: version version.pl
-       $(PERL) version.pl $< $@ '%define'
-
+       $(PERL) version.pl $< $@ '%define < @'
 version.h: version version.pl
-       $(PERL) version.pl $< $@ '#define'
+       $(PERL) version.pl $< $@ '#define < @'
+version.mk: version version.pl
+       $(PERL) version.pl $< $@ '< := @'
 
 local-install: installer
        mkdir -m 755 -p $(INSTALLROOT)$(BINDIR)
index 73508c1..f5b9b4e 100644 (file)
@@ -18,6 +18,9 @@
 MAKEFLAGS += -r
 MAKE      += -r
 
+topdir = ..
+include $(topdir)/version.mk
+
 CC      = gcc
 
 TMPFILE = $(shell mktemp /tmp/gcc_ok.XXXXXX)
@@ -43,8 +46,6 @@ NINCLUDE =
 
 PERL     = perl
 
-VERSION := $(shell cat ../version)
-
 # This is very similar to cp437; technically it's for Norway and Denmark,
 # but it's unlikely the characters that are different will be used in
 # filenames by other users.
index 5367f6f..ca11852 100644 (file)
@@ -454,7 +454,7 @@ comapi_get_version:
                ; Number of API functions supported
                mov P_AX,int22_count
                ; SYSLINUX version
-               mov P_CX,(VER_MAJOR << 8)+VER_MINOR
+               mov P_CX,(VERSION_MAJOR << 8)+VERSION_MINOR
                ; SYSLINUX derivative ID byte
                mov P_DX,my_id
                ; For future use
index d4fc9cd..24d0d92 100644 (file)
@@ -565,7 +565,7 @@ ldlinux_sys:
 
 syslinux_banner        db 0Dh, 0Ah
                db 'EXTLINUX '
-               db VERSION, ' ', DATE_STR, ' ', 0
+               db VERSION_STR, ' ', DATE_STR, ' ', 0
                db 0Dh, 0Ah, 1Ah        ; EOF if we "type" this in DOS
 
                align 8, db 0
index a387183..6902370 100644 (file)
@@ -795,7 +795,7 @@ writestr_early      equ writestr
 ; Data that needs to be in the first sector
 ; -----------------------------------------------------------------------------
 
-syslinux_banner        db CR, LF, 'ISOLINUX ', VERSION, ' ', DATE_STR, ' ', 0
+syslinux_banner        db CR, LF, 'ISOLINUX ', VERSION_STR, ' ', DATE_STR, ' ', 0
 copyright_str   db ' Copyright (C) 1994-', year, ' H. Peter Anvin'
                db CR, LF, 0
 isolinux_str   db 'isolinux: ', 0
index 8fed9b3..ea42d88 100644 (file)
@@ -588,7 +588,7 @@ syslinux_banner     db 0Dh, 0Ah
 %else
                db 'SYSLINUX '
 %endif
-               db VERSION, ' ', DATE_STR, ' ', 0
+               db VERSION_STR, ' ', DATE_STR, ' ', 0
                db 0Dh, 0Ah, 1Ah        ; EOF if we "type" this in DOS
 
                align 8, db 0
index c6a092c..4398582 100644 (file)
@@ -2727,7 +2727,7 @@ localboot_msg     db 'Booting from local disk...', CR, LF, 0
 trying_msg     db 'Trying to load: ', 0
 fourbs_msg     db BS, BS, BS, BS, 0
 default_str    db 'default', 0
-syslinux_banner        db CR, LF, 'PXELINUX ', VERSION, ' ', DATE_STR, ' ', 0
+syslinux_banner        db CR, LF, 'PXELINUX ', VERSION_STR, ' ', DATE_STR, ' ', 0
 cfgprefix      db 'pxelinux.cfg/'              ; No final null!
 cfgprefix_len  equ ($-cfgprefix)
 
index 819f74b..e9226fc 100644 (file)
@@ -812,7 +812,7 @@ static const char *find_device(const char *mtab_file, dev_t dev)
   mtab = setmntent(mtab_file, "r");
   if (!mtab)
     return NULL;
-  
+
   while ( (mnt = getmntent(mtab)) ) {
     if ( (!strcmp(mnt->mnt_type, "ext2") ||
          !strcmp(mnt->mnt_type, "ext3")) &&
@@ -1001,7 +1001,8 @@ main(int argc, char *argv[])
       opt.reset_adv = 1;
       break;
     case 'v':
-      fputs("extlinux " VERSION "\n", stderr);
+      fputs("extlinux " VERSION_STR
+           "  Copyright 1994-" YEAR_STR " H. Peter Anvin \n", stderr);
       exit(0);
     default:
       usage(EX_USAGE);
index 1ce43c2..005ab1d 100644 (file)
@@ -10,7 +10,8 @@
 ##
 ## -----------------------------------------------------------------------
 
-VERSION := $(shell cat ../version)
+topdir = ..
+include $(topdir)/version.mk
 
 TMPFILE = $(shell mktemp /tmp/gcc_ok.XXXXXX)
 
@@ -25,14 +26,14 @@ FREE    := $(call gcc_ok,-ffreestanding,) $(call gcc_ok,-fno-stack-protector,)
 
 CFLAGS   =  $(M32) $(FREE) -g -W -Wall -Wno-sign-compare \
           -Os -fomit-frame-pointer -march=i386 -mregparm=3 $(ALIGN) \
-          -DVERSION='"$(VERSION)"' -DDATE='"$(DATE)"'
+          -DDATE='"$(DATE)"'
 SFLAGS  = $(M32) -march=i386 -D__ASSEMBLY__
 LDFLAGS  = $(M32) -g
 INCLUDE  = -I../com32/include
 LD      = ld -m elf_i386
 NASM     = nasm
 NASMOPT  = -O9999
-NFLAGS   = -dVERSION='"$(VERSION)"' -dDATE='"$(DATE)"' -dWITH_EDD
+NFLAGS   = -dDATE='"$(DATE)"' -dWITH_EDD
 NINCLUDE =
 OBJCOPY  = objcopy
 PERL     = perl
index 15d662d..eb4370a 100644 (file)
@@ -918,7 +918,7 @@ Mover_dummy2:       dd 0, 0, 0, 0           ; More space for the BIOS
                alignb 4, db 0
 MemDisk_Info   equ $                   ; Pointed to by installation check
 MDI_Bytes      dw MDI_Len              ; Total bytes in MDI structure
-MDI_Version    db VER_MINOR, VER_MAJOR ; MEMDISK version
+MDI_Version    db VERSION_MINOR, VERSION_MAJOR ; MEMDISK version
 
 PatchArea      equ $                   ; This gets filled in by the installer
 
index 32dd8ed..b946633 100644 (file)
 #include "conio.h"
 #include "version.h"
 #include "memdisk.h"
+#include "../version.h"
 
 const char memdisk_version[] =
-"MEMDISK " VERSION " " DATE;
+"MEMDISK " VERSION_STR " " DATE;
 const char copyright[] =
-"Copyright " FIRSTYEAR "-" COPYYEAR " H. Peter Anvin";
+"Copyright " FIRSTYEAR "-" YEAR_STR " H. Peter Anvin";
 
 extern const char _binary_memdisk_bin_start[], _binary_memdisk_bin_end[];
 extern const char _binary_memdisk_bin_size[]; /* Weird, I know */
diff --git a/version b/version
index 84ec12a..eddff85 100644 (file)
--- a/version
+++ b/version
@@ -1 +1 @@
-3.71
+3.71 2008
index ee5c5c6..a08ce83 100755 (executable)
@@ -5,20 +5,35 @@
 
 use Fcntl;
 
+sub defx($$$) {
+    my($def, $name, $val) = @_;
+
+    $def =~ s/\</${name}/g;
+    $def =~ s/\@/${val}/g;
+
+    return $def."\n";
+}
+
 ($vfile, $vout, $def) = @ARGV;
 sysopen(VERSION, $vfile, O_RDONLY) or die "$0: Cannot open $vfile\n";
-$version = <VERSION>;
-chomp $version;
+$vfile = <VERSION>;
+chomp $vfile;
 close(VERSION);
 
-unless ( $version =~ /^([0-9]+)\.([0-9]+)$/ ) {
+unless ( $vfile =~ /^(([0-9]+)\.([0-9]+))\s+([0-9]+)$/ ) {
     die "$0: Cannot parse version format\n";
 }
-$vma = $1+0; $vmi = $2+0;
+$version = $1;
+$vma = $2+0;
+$vmi = $3+0;
+$year = $4;
 
 sysopen(VI, $vout, O_WRONLY|O_CREAT|O_TRUNC)
     or die "$0: Cannot create $vout: $!\n";
-print VI "$def VERSION \"$version\"\n";
-print VI "$def VER_MAJOR $vma\n";
-print VI "$def VER_MINOR $vmi\n";
+print VI defx($def, 'VERSION',       $version);
+print VI defx($def, 'VERSION_STR',   '"'.$version.'"');
+print VI defx($def, 'VERSION_MAJOR', $vma);
+print VI defx($def, 'VERSION_MINOR', $vmi);
+print VI defx($def, 'YEAR',          $year);
+print VI defx($def, 'YEAR_STR',      '"'.$year.'"');
 close(VI);