summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafaël Carré <rafael.carre@gmail.com>2010-05-27 09:41:46 +0000
committerRafaël Carré <rafael.carre@gmail.com>2010-05-27 09:41:46 +0000
commit5d236b2bfda7b460e6b970c3b6f6dc539b14020e (patch)
tree27316274323f1de2f7da190f269061d1c4280847
parent6ca9f232a817ed6717354ae68812f67b08cbc2a9 (diff)
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
-rw-r--r--apps/main.c2
-rw-r--r--apps/menus/main_menu.c4
-rw-r--r--apps/misc.c4
-rw-r--r--apps/plugin.c2
-rw-r--r--apps/plugin.h2
-rw-r--r--apps/plugins/battery_bench.c4
-rw-r--r--apps/plugins/iriver_flash.c2
-rw-r--r--apps/plugins/settings_dumper.c2
-rw-r--r--apps/settings.c2
-rw-r--r--apps/version.h26
-rw-r--r--bootloader/Makefile8
-rw-r--r--bootloader/creativezvm.c3
-rw-r--r--bootloader/gigabeat-s.c4
-rw-r--r--bootloader/gigabeat.c5
-rw-r--r--bootloader/iaudio_coldfire.c6
-rw-r--r--bootloader/ipod.c6
-rw-r--r--bootloader/ipodnano2g.c6
-rw-r--r--bootloader/iriver_h1x0.c7
-rw-r--r--bootloader/iriver_h300.c5
-rw-r--r--bootloader/main-e200r-installer.c6
-rw-r--r--bootloader/main-pp.c6
-rw-r--r--bootloader/meizu_m3.c1
-rw-r--r--bootloader/meizu_m6sl.c1
-rw-r--r--bootloader/meizu_m6sp.c1
-rw-r--r--bootloader/mini2440.c3
-rw-r--r--bootloader/mpio_hd200.c5
-rw-r--r--bootloader/mrobe500.c3
-rw-r--r--bootloader/ondavx747.c3
-rw-r--r--bootloader/samsung_yps3.c1
-rw-r--r--bootloader/show_logo.c5
-rw-r--r--bootloader/telechips.c5
-rw-r--r--bootloader/tpj1022.c2
-rw-r--r--docs/PLUGIN_API.new2
-rw-r--r--firmware/firmware.make5
-rw-r--r--flash/bootbox/Makefile2
-rw-r--r--gdb/Makefile2
-rwxr-xr-xtools/configure1
-rwxr-xr-xtools/genversion.sh42
-rw-r--r--tools/root.make3
-rw-r--r--uisimulator/common/Makefile2
40 files changed, 99 insertions, 102 deletions
diff --git a/apps/main.c b/apps/main.c
index e4b9286b4e..e8043a79d4 100644
--- a/apps/main.c
+++ b/apps/main.c
@@ -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
diff --git a/apps/menus/main_menu.c b/apps/menus/main_menu.c
index 59a72e1ad7..76ceaa483e 100644
--- a/apps/menus/main_menu.c
+++ b/apps/menus/main_menu.c
@@ -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 */
diff --git a/apps/misc.c b/apps/misc.c
index 95c0dd6e34..747abe076b 100644
--- a/apps/misc.c
+++ b/apps/misc.c
@@ -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();
diff --git a/apps/plugin.c b/apps/plugin.c
index 83f27ea249..d626ef6488 100644
--- a/apps/plugin.c
+++ b/apps/plugin.c
@@ -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 */
};
diff --git a/apps/plugin.h b/apps/plugin.h
index 7e198c97bd..a6b864ba44 100644
--- a/apps/plugin.h
+++ b/apps/plugin.h
@@ -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 */
};
diff --git a/apps/plugins/battery_bench.c b/apps/plugins/battery_bench.c
index 165ce54634..945abe924d 100644
--- a/apps/plugins/battery_bench.c
+++ b/apps/plugins/battery_bench.c
@@ -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);
}
diff --git a/apps/plugins/iriver_flash.c b/apps/plugins/iriver_flash.c
index 3f5490e754..24542a9398 100644
--- a/apps/plugins/iriver_flash.c
+++ b/apps/plugins/iriver_flash.c
@@ -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...");
diff --git a/apps/plugins/settings_dumper.c b/apps/plugins/settings_dumper.c
index ea69353e17..93c4f67657 100644
--- a/apps/plugins/settings_dumper.c
+++ b/apps/plugins/settings_dumper.c
@@ -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++)
diff --git a/apps/settings.c b/apps/settings.c
index 6349372326..25593e55ac 100644
--- a/apps/settings.c
+++ b/apps/settings.c
@@ -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)
diff --git a/apps/version.h b/apps/version.h
deleted file mode 100644
index 73828ddfc5..0000000000
--- a/apps/version.h
+++ /dev/null
@@ -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
diff --git a/bootloader/Makefile b/bootloader/Makefile
index 3272510051..07f347ee16 100644
--- a/bootloader/Makefile
+++ b/bootloader/Makefile
@@ -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)
diff --git a/bootloader/creativezvm.c b/bootloader/creativezvm.c
index 6469de7c29..73968c3b3f 100644
--- a/bootloader/creativezvm.c
+++ b/bootloader/creativezvm.c
@@ -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)
diff --git a/bootloader/gigabeat-s.c b/bootloader/gigabeat-s.c
index 7c429a9b65..dcff26c4de 100644
--- a/bootloader/gigabeat-s.c
+++ b/bootloader/gigabeat-s.c
@@ -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();
diff --git a/bootloader/gigabeat.c b/bootloader/gigabeat.c
index 81c069469d..7a634b329c 100644
--- a/bootloader/gigabeat.c
+++ b/bootloader/gigabeat.c
@@ -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 */
diff --git a/bootloader/iaudio_coldfire.c b/bootloader/iaudio_coldfire.c
index a3b318bbbc..5639a0e59b 100644
--- a/bootloader/iaudio_coldfire.c
+++ b/bootloader/iaudio_coldfire.c
@@ -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();
diff --git a/bootloader/ipod.c b/bootloader/ipod.c
index ee555793d0..af4c1576bb 100644
--- a/bootloader/ipod.c
+++ b/bootloader/ipod.c
@@ -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();
diff --git a/bootloader/ipodnano2g.c b/bootloader/ipodnano2g.c
index 14b5bbce20..b2b2138f78 100644
--- a/bootloader/ipodnano2g.c
+++ b/bootloader/ipodnano2g.c
@@ -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();
diff --git a/bootloader/iriver_h1x0.c b/bootloader/iriver_h1x0.c
index f16a5128c9..1afbafa830 100644
--- a/bootloader/iriver_h1x0.c
+++ b/bootloader/iriver_h1x0.c
@@ -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 */
diff --git a/bootloader/iriver_h300.c b/bootloader/iriver_h300.c
index d15efb9b72..893532cac7 100644
--- a/bootloader/iriver_h300.c
+++ b/bootloader/iriver_h300.c
@@ -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)
diff --git a/bootloader/main-e200r-installer.c b/bootloader/main-e200r-installer.c
index 0a7b56b1b6..defdea4574 100644
--- a/bootloader/main-e200r-installer.c
+++ b/bootloader/main-e200r-installer.c
@@ -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("");
diff --git a/bootloader/main-pp.c b/bootloader/main-pp.c
index 4f1fe2a4e1..37f42eda43 100644
--- a/bootloader/main-pp.c
+++ b/bootloader/main-pp.c
@@ -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();
diff --git a/bootloader/meizu_m3.c b/bootloader/meizu_m3.c
index 61aa3cecbe..7c0a5bca2d 100644
--- a/bootloader/meizu_m3.c
+++ b/bootloader/meizu_m3.c
@@ -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
diff --git a/bootloader/meizu_m6sl.c b/bootloader/meizu_m6sl.c
index 0b335bec8a..c230ec3c08 100644
--- a/bootloader/meizu_m6sl.c
+++ b/bootloader/meizu_m6sl.c
@@ -47,7 +47,6 @@
#include <stdarg.h>
-char version[] = APPSVERSION;
#define LONG_DELAY 200000
#define SHORT_DELAY 50000
#define PAUSE_DELAY 50000
diff --git a/bootloader/meizu_m6sp.c b/bootloader/meizu_m6sp.c
index 064d3fc8df..c57fe91b22 100644
--- a/bootloader/meizu_m6sp.c
+++ b/bootloader/meizu_m6sp.c
@@ -45,7 +45,6 @@
#include <stdarg.h>
-char version[] = APPSVERSION;
#define LONG_DELAY 200000
#define SHORT_DELAY 50000
#define PAUSE_DELAY 50000
diff --git a/bootloader/mini2440.c b/bootloader/mini2440.c
index d735084c6a..f4441c3730 100644
--- a/bootloader/mini2440.c
+++ b/bootloader/mini2440.c
@@ -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)
diff --git a/bootloader/mpio_hd200.c b/bootloader/mpio_hd200.c
index a031234b5a..8062f7ef22 100644
--- a/bootloader/mpio_hd200.c
+++ b/bootloader/mpio_hd200.c
@@ -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();
diff --git a/bootloader/mrobe500.c b/bootloader/mrobe500.c
index 9052cbdc3c..d6ca58e009 100644
--- a/bootloader/mrobe500.c
+++ b/bootloader/mrobe500.c
@@ -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)
diff --git a/bootloader/ondavx747.c b/bootloader/ondavx747.c
index 994f45d78d..4dfc78d58c 100644
--- a/bootloader/ondavx747.c
+++ b/bootloader/ondavx747.c
@@ -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())
diff --git a/bootloader/samsung_yps3.c b/bootloader/samsung_yps3.c
index 3cf5cb70ec..d4eff81e01 100644
--- a/bootloader/samsung_yps3.c
+++ b/bootloader/samsung_yps3.c
@@ -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
diff --git a/bootloader/show_logo.c b/bootloader/show_logo.c
index 09c6dbd4aa..3273034d05 100644
--- a/bootloader/show_logo.c
+++ b/bootloader/show_logo.c
@@ -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 */
diff --git a/bootloader/telechips.c b/bootloader/telechips.c
index 98f8bebc38..9e9e75c183 100644
--- a/bootloader/telechips.c
+++ b/bootloader/telechips.c
@@ -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();
diff --git a/bootloader/tpj1022.c b/bootloader/tpj1022.c
index db709d1b58..159dcc63cd 100644
--- a/bootloader/tpj1022.c
+++ b/bootloader/tpj1022.c
@@ -39,8 +39,6 @@
#include "file.h"
#include "common.h"
-char version[] = APPSVERSION;
-
void* main(void)
{
int i;
diff --git a/docs/PLUGIN_API.new b/docs/PLUGIN_API.new
index 1989386661..75c82d447b 100644
--- a/docs/PLUGIN_API.new
+++ b/docs/PLUGIN_API.new
@@ -39,7 +39,7 @@ bool action_userabort(int timeout)
\return
\description
-const char *appsversion
+const char *rbversion
\return version of the plugin API
\description
diff --git a/firmware/firmware.make b/firmware/firmware.make
index 52b5a19cc6..105fe7e111 100644
--- a/firmware/firmware.make
+++ b/firmware/firmware.make
@@ -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)
diff --git a/flash/bootbox/Makefile b/flash/bootbox/Makefile
index 7ef5364a6e..754f95dd49 100644
--- a/flash/bootbox/Makefile
+++ b/flash/bootbox/Makefile
@@ -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)
diff --git a/gdb/Makefile b/gdb/Makefile
index 83181999f3..0cd9990cd1 100644
--- a/gdb/Makefile
+++ b/gdb/Makefile
@@ -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)
diff --git a/tools/configure b/tools/configure
index d091e3258d..9654cc67f9 100755
--- a/tools/configure
+++ b/tools/configure
@@ -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@
diff --git a/tools/genversion.sh b/tools/genversion.sh
new file mode 100755
index 0000000000..cf8d999e5b
--- /dev/null
+++ b/tools/genversion.sh
@@ -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
+
diff --git a/tools/root.make b/tools/root.make
index f2373f5f7d..ddea297ccf 100644
--- a/tools/root.make
+++ b/tools/root.make
@@ -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)
diff --git a/uisimulator/common/Makefile b/uisimulator/common/Makefile
index ef68230153..f54df57b27 100644
--- a/uisimulator/common/Makefile
+++ b/uisimulator/common/Makefile
@@ -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)