Generate C file / header for svn version string

It's now easier to force rebuild of files depending on the svn revision

version.c/version.h are generated once with new tools/genversion.sh
Changes in the VCS are still not auto detected, so you'll have to remove
builddir/version.* if you want to change the string in your binaries

APPSVERSION is now called RBVERSION and is defined in the generated
header instead of being defined by the Makefiles
appsversion is now called rbversion (the plugin api number didn't change
since old modules are still binary compatible)

Change some bootloaders to use knwon-at-buildtime RBVERSION instead of
"%s" + rbversion

You'll need to run make clean to regenerate dependencies after the
removal of apps/version.h

To build binaries with a different version string, hand-edit
tools/version.sh or tools/genversion.sh (which calls the former)

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26320 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Rafaël Carré 2010-05-27 09:41:46 +00:00
parent 6ca9f232a8
commit 5d236b2bfd
40 changed files with 99 additions and 102 deletions

View File

@ -120,8 +120,6 @@
/*#define AUTOROCK*/ /* define this to check for "autostart.rock" on boot */
const char appsversion[]=APPSVERSION;
static void init(void);
#ifdef HAVE_SDL

View File

@ -172,7 +172,7 @@ static const char* info_getname(int selected_item, void *data,
{
case INFO_VERSION:
snprintf(buffer, buffer_len, "%s: %s",
str(LANG_VERSION), appsversion);
str(LANG_VERSION), rbversion);
break;
case INFO_BUFFER: /* buffer */
@ -259,7 +259,7 @@ static int info_speak_item(int selected_item, void * data)
{
case INFO_VERSION: /* version */
talk_id(LANG_VERSION, false);
talk_spell(appsversion, true);
talk_spell(rbversion, true);
break;
case INFO_BUFFER: /* buffer */

View File

@ -621,7 +621,7 @@ int show_logo( void )
char version[32];
int font_h, font_w;
snprintf(version, sizeof(version), "Ver. %s", appsversion);
snprintf(version, sizeof(version), "Ver. %s", rbversion);
lcd_clear_display();
#if defined(SANSA_CLIP) || defined(SANSA_CLIPV2) || defined(SANSA_CLIPPLUS)
@ -646,7 +646,7 @@ int show_logo( void )
lcd_clear_display();
lcd_double_height(true);
lcd_puts(0, 0, rockbox);
lcd_puts_scroll(0, 1, appsversion);
lcd_puts_scroll(0, 1, rbversion);
#endif
lcd_update();

View File

@ -718,7 +718,7 @@ static const struct plugin_api rockbox_api = {
semaphore_release,
#endif
appsversion,
rbversion,
/* new stuff at the end, sort into place next time
the API gets incompatible */
};

View File

@ -885,7 +885,7 @@ int (*round_value_to_list32)(unsigned long value,
void (*semaphore_release)(struct semaphore *s);
#endif
const char *appsversion;
const char *rbversion;
/* new stuff at the end, sort into place next time
the API gets incompatible */
};

View File

@ -546,7 +546,7 @@ int main(void)
"will continue.\n\n",BATTERY_LOG);
rb->fdprintf(fd,
"Battery bench run for %s version %s\n\n"
,MODEL_NAME,rb->appsversion);
,MODEL_NAME,rb->rbversion);
rb->fdprintf(fd,
"Battery type: %d mAh Buffer Entries: %d\n"
@ -578,7 +578,7 @@ int main(void)
rb->fdprintf(fd, "\n--File already present. Resuming Benchmark--\n");
rb->fdprintf(fd,
"Battery bench run for %s version %s\n\n"
,MODEL_NAME,rb->appsversion);
,MODEL_NAME,rb->rbversion);
rb->close(fd);
}

View File

@ -411,7 +411,7 @@ int flash_rockbox(const char *filename, int section)
rb->memset(&hdr, 0, sizeof(struct flash_header));
hdr.magic = FLASH_MAGIC;
hdr.length = len;
// rb->strncpy(hdr.version, APPSVERSION, sizeof(hdr.version)-1);
// rb->strncpy(hdr.version, rb->rbversion , sizeof(hdr.version)-1);
p16 = (uint16_t *)&hdr;
rb->snprintf(buf, sizeof(buf), "Programming...");

View File

@ -129,7 +129,7 @@ enum plugin_status plugin_start(
return PLUGIN_ERROR;
list = rb->get_settings_list(&setting_count);
rb->fdprintf(fd, "# .cfg file created by rockbox %s - "
"http://www.rockbox.org\r\n\r\n", rb->appsversion);
"http://www.rockbox.org\r\n\r\n", rb->rbversion);
rb->fdprintf(fd, "# -- Sound settings -- #\r\n");
for(i=0;i<setting_count;i++)

View File

@ -536,7 +536,7 @@ static bool settings_write_config(const char* filename, int options)
if (fd < 0)
return false;
fdprintf(fd, "# .cfg file created by rockbox %s - "
"http://www.rockbox.org\r\n\r\n", appsversion);
"http://www.rockbox.org\r\n\r\n", rbversion);
for(i=0; i<nb_settings; i++)
{
if (settings[i].cfg_name == NULL)

View File

@ -1,26 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2002 Björn Stenberg
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#ifndef _VERSION_H_
#define _VERSION_H_
extern const char appsversion[];
#endif

View File

@ -46,12 +46,8 @@ ifdef APPEXTRA
INCLUDES += $(patsubst %,-I%,$(subst :, ,$(APPEXTRA)))
endif
ifndef VERSION
VERSION=$(shell date +%y%m%d-%H%M)
endif
CFLAGS = $(GCCOPTS) $(INCLUDES) $(TARGET) $(DEFINES) \
-DAPPSVERSION=\"$(VERSION)\" $(EXTRA_DEFINES) -DMEM=${MEMORYSIZE}
CFLAGS = $(GCCOPTS) $(INCLUDES) $(TARGET) $(DEFINES) $(EXTRA_DEFINES) \
-DMEM=${MEMORYSIZE}
OBJS := $(SRC:%.c=$(OBJDIR)/%.o)
SOURCES = $(SRC)

View File

@ -29,6 +29,7 @@
#include "button.h"
#include "common.h"
#include "usb.h"
#include "version.h"
static void load_fw(unsigned char* ptr, unsigned int len)
@ -66,7 +67,7 @@ void main(void)
lcd_setfont(FONT_SYSFIXED);
reset_screen();
printf("Rockbox boot loader");
printf("Version %s", APPSVERSION);
printf("Version " RBVERSION);
ret = storage_init();
if(ret)

View File

@ -35,11 +35,11 @@
#include "font.h"
#include "lcd.h"
#include "usb-target.h"
#include "version.h"
#define TAR_CHUNK 512
#define TAR_HEADER_SIZE 157
const char version[] = APPSVERSION;
/* Where files sent via MTP are stored */
static const char basedir[] = "/Content/0b00/00/";
/* Can use memory after vector table up to 0x01f00000 */
@ -346,7 +346,7 @@ void main(void)
lcd_clear_display();
printf("Gigabeat S Rockbox Bootloader");
printf("Version %s", version);
printf("Version " RBVERSION);
/* Initialize KPP so we can poll the button states */
button_init_device();

View File

@ -45,11 +45,10 @@
#include "usb.h"
#include "mmu-arm.h"
#include "rtc.h"
#include "version.h"
#include <stdarg.h>
char version[] = APPSVERSION;
void shutdown(void)
{
/* We need to gracefully spin down the disk to prevent clicks. */
@ -174,7 +173,7 @@ void main(void)
verbose = true;
printf("Rockbox boot loader");
printf("Version %s", version);
printf("Version " RBVERSION);
sleep(50); /* ATA seems to error without this pause */

View File

@ -42,6 +42,8 @@
#include "power.h"
#include "powermgmt.h"
#include "file.h"
#include "version.h"
#include "pcf50606.h"
#include "common.h"
@ -58,8 +60,6 @@ int usb_screen(void)
return 0;
}
char version[] = APPSVERSION;
/* Reset the cookie for the crt0 crash check */
inline void __reset_cookie(void)
{
@ -188,7 +188,7 @@ void main(void)
}
printf("Rockbox boot loader");
printf("Version %s", version);
printf("Version " RBVERSION);
check_battery();

View File

@ -44,6 +44,7 @@
#include "common.h"
#include "hwcompat.h"
#include "usb.h"
#include "version.h"
#define XSC(X) #X
#define SC(X) XSC(X)
@ -56,9 +57,6 @@
/* A buffer to load the Linux kernel or Rockbox into */
unsigned char *loadbuffer = (unsigned char *)DRAM_START;
/* Bootloader version */
char version[] = APPSVERSION;
#if CONFIG_KEYPAD == IPOD_4G_PAD && !defined(IPOD_MINI)
/* check if number of seconds has past */
int timer_check(int clock_start, unsigned int usecs)
@ -335,7 +333,7 @@ void* main(void)
lcd_setfont(FONT_SYSFIXED);
printf("Rockbox boot loader");
printf("Version: %s", version);
printf("Version: " RBVERSION);
printf("IPOD version: 0x%08x", IPOD_HW_REVISION);
i=ata_init();

View File

@ -44,6 +44,7 @@
#include "power.h"
#include "file.h"
#include "common.h"
#include "version.h"
/* Safety measure - maximum allowed firmware image size.
The largest known current (October 2009) firmware is about 6.2MB so
@ -54,9 +55,6 @@
/* The buffer to load the firmware into - use an uncached alias of 0x08000000 */
unsigned char *loadbuffer = (unsigned char *)0x48000000;
/* Bootloader version */
char version[] = APPSVERSION;
extern int line;
void fatal_error(void)
@ -209,7 +207,7 @@ void main(void)
lcd_setfont(FONT_SYSFIXED);
printf("Rockbox boot loader");
printf("Version: %s", version);
printf("Version: " RBVERSION);
i = storage_init();

View File

@ -46,6 +46,7 @@
#include "eeprom_settings.h"
#include "rbunicode.h"
#include "common.h"
#include "version.h"
#include <stdarg.h>
@ -58,8 +59,6 @@
static bool recovery_mode = false;
#endif
char version[] = APPSVERSION;
/* Reset the cookie for the crt0 crash check */
inline void __reset_cookie(void)
{
@ -254,7 +253,7 @@ void failsafe_menu(void)
extern int line;
reset_screen();
printf("Bootloader %s", version);
printf("Bootloader " RBVERSION);
check_battery();
printf("=========================");
line += FAILSAFE_OPTIONS;
@ -502,7 +501,7 @@ void main(void)
lcd_setfont(FONT_SYSFIXED);
printf("Rockbox boot loader");
printf("Version %s", version);
printf("Version " RBVERSION);
/* No need to wait here more because lcd_init and others already do that. */
// sleep(HZ/50); /* Allow the button driver to check the buttons */

View File

@ -47,6 +47,7 @@
#include "common.h"
#include "rbunicode.h"
#include "isp1362.h"
#include "version.h"
#include <stdarg.h>
@ -55,8 +56,6 @@
#define DRAM_START 0x31000000
char version[] = APPSVERSION;
/* Reset the cookie for the crt0 crash check */
inline void __reset_cookie(void)
{
@ -210,7 +209,7 @@ void main(void)
lcd_setfont(FONT_SYSFIXED);
printf("Rockbox boot loader");
printf("Version %s", version);
printf("Version " RBVERSION);
sleep(HZ/50); /* Allow the button driver to check the buttons */
rec_button = ((button_status() & BUTTON_REC) == BUTTON_REC)

View File

@ -39,9 +39,7 @@
#include "i2c.h"
#include "backlight-target.h"
#include "power.h"
/* Bootloader version */
char version[] = APPSVERSION;
#include "version.h"
#define START_SECTOR_OF_ROM 1
#define ROMSECTOR_TO_HACK 63
@ -116,7 +114,7 @@ void* main(void)
lcd_setfont(FONT_SYSFIXED);
printf("Rockbox e200R installer");
printf("Version: %s", version);
printf("Version: " RBVERSION);
printf(MODEL_NAME);
printf("");

View File

@ -39,6 +39,7 @@
#include "crc32-mi4.h"
#include <string.h>
#include "power.h"
#include "version.h"
#if defined(SANSA_E200) || defined(PHILIPS_SA9200)
#include "i2c.h"
#include "backlight-target.h"
@ -95,9 +96,6 @@ extern int show_logo(void);
/* A buffer to load the original firmware or Rockbox into */
unsigned char *loadbuffer = (unsigned char *)DRAM_START;
/* Bootloader version */
char version[] = APPSVERSION;
/* Locations and sizes in hidden partition on Sansa */
#if (CONFIG_STORAGE & STORAGE_SD)
#define PPMI_SECTOR_OFFSET 1024
@ -525,7 +523,7 @@ void* main(void)
lcd_setfont(FONT_SYSFIXED);
printf("Rockbox boot loader");
printf("Version: %s", version);
printf("Version: " RBVERSION);
printf(MODEL_NAME);
i=storage_init();

View File

@ -54,7 +54,6 @@
#include "audiohw.h"
#include "rtc.h"
char version[] = APPSVERSION;
#define LONG_DELAY 200000
#define SHORT_DELAY 50000
#define PAUSE_DELAY 50000

View File

@ -47,7 +47,6 @@
#include <stdarg.h>
char version[] = APPSVERSION;
#define LONG_DELAY 200000
#define SHORT_DELAY 50000
#define PAUSE_DELAY 50000

View File

@ -45,7 +45,6 @@
#include <stdarg.h>
char version[] = APPSVERSION;
#define LONG_DELAY 200000
#define SHORT_DELAY 50000
#define PAUSE_DELAY 50000

View File

@ -46,6 +46,7 @@
#include "dma-target.h"
#include "uart-s3c2440.h"
#include "led-mini2440.h"
#include "version.h"
int main(void)
@ -78,7 +79,7 @@ int main(void)
verbose = true;
printf("Rockbox boot loader");
printf("Version %s", APPSVERSION);
printf("Version " RBVERSION);
rc = storage_init();
if(rc)

View File

@ -43,6 +43,7 @@
#include "file.h"
#include "common.h"
#include "version.h"
#include <stdarg.h>
@ -78,8 +79,6 @@ int usb_screen(void)
return 0;
}
char version[] = APPSVERSION;
static inline bool _charger_inserted(void)
{
return (GPIO1_READ & (1<<14)) ? false : true;
@ -233,7 +232,7 @@ static void bootmenu(void)
/* backbone of menu */
/* run the loader */
printf("Rockbox boot loader");
printf("Ver: %s", version);
printf("Ver: " RBVERSION);
check_battery();

View File

@ -45,6 +45,7 @@
#include "tsc2100.h"
#include "time.h"
#include "system-arm.h"
#include "version.h"
void main(void)
{
@ -83,7 +84,7 @@ void main(void)
verbose = true;
printf("Rockbox boot loader");
printf("Version %s", APPSVERSION);
printf("Version " RBVERSION);
/* Enter USB mode without USB thread */
if(usb_detect() == USB_INSERTED)

View File

@ -33,6 +33,7 @@
#include "disk.h"
#include "string.h"
#include "adc.h"
#include "version.h"
extern int show_logo(void);
extern void power_off(void);
@ -296,7 +297,7 @@ int main(void)
if(verbose)
reset_screen();
printf(MODEL_NAME" Rockbox Bootloader");
printf("Version "APPSVERSION);
printf("Version " RBVERSION);
#ifdef HAS_BUTTON_HOLD
if(button_hold())

View File

@ -57,7 +57,6 @@
#include "wmcodec.h"
#include "nand-target.h"
char version[] = APPSVERSION;
#define LONG_DELAY 200000
#define SHORT_DELAY 50000
#define PAUSE_DELAY 50000

View File

@ -23,13 +23,14 @@
#include "font.h"
#include <stdio.h>
#include <string.h>
#include "version.h"
#include "bitmaps/rockboxlogo.h"
#if LCD_WIDTH <= 128
#define BOOT_VERSION ("Boot " APPSVERSION)
#define BOOT_VERSION ("Boot " RBVERSION)
#else
#define BOOT_VERSION ("Boot Ver. " APPSVERSION)
#define BOOT_VERSION ("Boot Ver. " RBVERSION)
#endif
/* Ensure TEXT_XPOS is >= 0 */

View File

@ -43,6 +43,7 @@
#include "power.h"
#include "file.h"
#include "common.h"
#include "version.h"
/* Show the Rockbox logo - in show_logo.c */
extern int show_logo(void);
@ -50,8 +51,6 @@ extern int show_logo(void);
/* Address to load main Rockbox image to */
#define LOAD_ADDRESS 0x20000000 /* DRAM_START */
char version[] = APPSVERSION;
extern int line;
#define MAX_LOAD_SIZE (8*1024*1024) /* Arbitrary, but plenty. */
@ -152,7 +151,7 @@ void* main(void)
available for loading the firmware. Otherwise display the debug screen. */
#ifdef TCCBOOT
printf("Rockbox boot loader");
printf("Version %s", version);
printf("Version " RBVERSION);
printf("ATA");
rc = storage_init();

View File

@ -39,8 +39,6 @@
#include "file.h"
#include "common.h"
char version[] = APPSVERSION;
void* main(void)
{
int i;

View File

@ -39,7 +39,7 @@ bool action_userabort(int timeout)
\return
\description
const char *appsversion
const char *rbversion
\return version of the plugin API
\description

View File

@ -17,13 +17,14 @@ FIRMLIB_OBJ := $(call c2obj, $(FIRMLIB_SRC))
ifeq (,$(findstring -DARCHOS_PLAYER,$(TARGET)))
FIRMLIB_OBJ += $(BUILDDIR)/sysfont.o
endif
FIRMLIB_OBJ += $(BUILDDIR)/version.o
OTHER_SRC += $(FIRMLIB_SRC)
FIRMLIB = $(BUILDDIR)/firmware/libfirmware.a
SYSFONT = $(ROOTDIR)/fonts/08-Schumacher-Clean.bdf
CLEANOBJS += $(BUILDDIR)/sysfont.*
CLEANOBJS += $(BUILDDIR)/sysfont.* $(BUILDDIR)/version.*
# Limits for the built-in sysfont: ASCII for bootloaders, ISO8859-1 for normal builds
ifneq (,$(findstring -DBOOTLOADER,$(EXTRA_DEFINES)))
@ -43,3 +44,5 @@ $(BUILDDIR)/sysfont.o: $(SYSFONT) $(BUILDDIR)/sysfont.h
$(call PRINTS,CONVBDF $(subst $(ROOTDIR)/,,$<))$(TOOLSDIR)/convbdf -l $(MAXCHAR) -c -o $(BUILDDIR)/sysfont.c $<
$(call PRINTS,CC $(subst $(ROOTDIR)/,,$(BUILDDIR)/sysfont.c))$(CC) $(CFLAGS) -c $(BUILDDIR)/sysfont.c -o $@
$(BUILDDIR)/version.c $(BUILDDIR)/version.h:
$(TOOLSDIR)/genversion.sh $(BUILDDIR) $(TOOLSDIR)/version.sh $(ROOTDIR)

View File

@ -27,7 +27,7 @@ ifdef APPEXTRA
endif
CFLAGS = $(GCCOPTS) $(INCLUDES) $(TARGET) $(DEFINES) \
-DAPPSVERSION=\"$(VERSION)\" $(EXTRA_DEFINES) -DMEM=${MEMORYSIZE}
$(EXTRA_DEFINES) -DMEM=${MEMORYSIZE}
OBJS := $(SRC:%.c=$(OBJDIR)/%.o)
SOURCES = $(SRC)

View File

@ -28,7 +28,7 @@ VERSION=$(shell date +%y%m%d-%H%M)
endif
CFLAGS = $(GCCOPTS) $(INCLUDES) $(TARGET) $(DEFINES) \
-DAPPSVERSION=\"$(VERSION)\" $(EXTRA_DEFINES) -DMEM=${MEMORYSIZE}
$(EXTRA_DEFINES) -DMEM=${MEMORYSIZE}
OBJS := $(SRC:%.c=$(OBJDIR)/%.o)
SOURCES = $(SRC)

1
tools/configure vendored
View File

@ -3103,7 +3103,6 @@ export BUILDDIR=@PWD@
export LANGUAGE=@LANGUAGE@
export VOICELANGUAGE=@VOICELANGUAGE@
export MEMORYSIZE=@MEMORY@
export VERSION:=\$(shell \$(ROOTDIR)/tools/version.sh \$(ROOTDIR))
export BUILDDATE:=\$(shell date -u +'-DYEAR=%Y -DMONTH=%m -DDAY=%d')
export MKFIRMWARE=@TOOL@
export BMP2RB_MONO=@BMP2RB_MONO@

42
tools/genversion.sh Executable file
View File

@ -0,0 +1,42 @@
#!/bin/sh
# __________ __ ___.
# Open \______ \ ____ ____ | | _\_ |__ _______ ___
# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
# \/ \/ \/ \/ \/
# Usage: genversion.sh destination-dir path-to-version.sh [source-root]
# Generate version.[ch] files
VERSION=`$2 $3`
cat > "$1/_version.h" << EOF
/* Generated by genversion.sh */
extern const char rbversion[];
#define RBVERSION "$VERSION"
EOF
if [ -f "$1/version.h" ]
then if diff "$1/_version.h" "$1/version.h" > /dev/null
then mv "$1/_version.h" "$1/version.h"
else rm -f "$1/_version.h"
fi
else mv "$1/_version.h" "$1/version.h"
fi
cat > "$1/_version.c" << EOF
/* Generated by genversion.sh */
const char rbversion[] = "$VERSION";
EOF
if [ -f "$1/version.c" ]
then if diff "$1/_version.c" "$1/version.c" > /dev/null
then mv "$1/_version.c" "$1/version.c"
else rm -f "$1/_version.c"
fi
else mv "$1/_version.c" "$1/version.c"
fi

View File

@ -10,8 +10,7 @@
include $(TOOLSDIR)/functions.make
DEFINES = -DROCKBOX -DMEMORYSIZE=$(MEMORYSIZE) -DMEM=$(MEMORYSIZE) $(TARGET) \
-DTARGET_ID=$(TARGET_ID) -DTARGET_NAME=\"$(MODELNAME)\" \
-DAPPSVERSION=\"$(VERSION)\" $(BUILDDATE) \
-DTARGET_ID=$(TARGET_ID) -DTARGET_NAME=\"$(MODELNAME)\" $(BUILDDATE) \
$(EXTRA_DEFINES) # <-- -DSIMULATOR or not
INCLUDES = -I$(BUILDDIR) -I$(BUILDDIR)/lang $(TARGET_INC)

View File

@ -32,7 +32,7 @@ include $(TOOLSDIR)/makesrc.inc
OBJS := $(SRC:%.c=$(OBJDIR)/%.o)
DEFINES := -DHAVE_CONFIG_H -DGETTIMEOFDAY_TWO_ARGS -DSIMULATOR \
$(TARGET) -DAPPSVERSION=\"$(VERSION)\" -DMEM=${MEMORYSIZE} $(EXTRA_DEFINES)
$(TARGET) -DMEM=${MEMORYSIZE} $(EXTRA_DEFINES)
SOURCES = $(SRC)