Implement version information storage and retrieval for the bootrom and the osimage.

Use perl to create the version information (thereby re-creating the perl dependency and adding an svn dependency) but fall back in case of missing perl or svn
This commit is contained in:
henryk@ploetzli.ch 2009-08-28 06:40:44 +00:00
commit 8a6aec16d8
13 changed files with 171 additions and 13 deletions

View file

@ -20,6 +20,7 @@ ifeq ($(UNAME), Linux)
# Linux. (Todo: Add MacOS X if appropriate)
DELETE=rm -rf
MOVE=mv
COPY=cp
PATHSEP=/
DETECTED_OS=Linux
# You may/should set this in your environment
@ -31,6 +32,7 @@ else
# Assume that we are running on Windows.
DELETE=del /q
MOVE=ren
COPY=copy
PATHSEP=\\#
ARMLIB ?= ../../devkitARM/lib/gcc/arm-elf/4.1.0/interwork
DETECTED_OS=Windows
@ -77,6 +79,11 @@ $(OBJDIR)/%.s19: $(OBJDIR)/%.elf
--change-section-address .text-0x100000 \
--change-section-address .rodata-0x100000 $^ $@
# version.c should be remade on every compilation
.PHONY: version.c
version.c: default_version.c
perl ../tools/mkversion.pl .. > $@ || $(COPY) $^ $@
# Automatic dependency generation
DEPENDENCY_FILES = $(patsubst %.c,$(OBJDIR)/%.d,$(notdir $(THUMBSRC))) \
$(patsubst %.c,$(OBJDIR)/%.d,$(notdir $(ARMSRC))) \

9
common/default_version.c Normal file
View file

@ -0,0 +1,9 @@
#include <proxmark3.h>
/* This is the default version.c file that Makefile.common falls back to if perl is not available */
struct version_information __attribute__((section(".version_information"))) version_information = {
VERSION_INFORMATION_MAGIC,
1, /* version version 1 */
0, /* version information not present */
2, /* cleanliness couldn't be determined */
/* Remaining fields: zero */
};

View file

@ -1,10 +0,0 @@
#define VERSION "$Id $"
static const struct __attribute__((packed)) {
const char string[48];
unsigned int length;
unsigned int magic;
} version __attribute__((unused,section("versioninformation"))) = {
VERSION,
sizeof(VERSION),
0x48151623,
};