replaced SCUMMVM_VERSION/SCUMMVM_CVS by gScummVMVersion/gScummVMBuildDate/gScummVMFullVersion; made engine.o depend on all other .o files, so that the build date in it is always up-to-date

svn-id: r9032
This commit is contained in:
Max Horn 2003-07-15 02:16:33 +00:00
parent cc8334638b
commit b05e7de7bb
13 changed files with 80 additions and 29 deletions

View File

@ -58,6 +58,11 @@ CPPFLAGS:= $(DEFINES) $(INCLUDES)
# Include the build instructions for all modules
-include $(addsuffix /module.mk,$(MODULES))
# Make engine.o depend on all other object files. This way if anything is
# changed, it causes engine.cpp to be recompiled. This in turn ensures that
# the build date in gScummVMBuildDate is correct.
common/engine.o: $(OBJS)
# HACK temporary fix to get compilation on OS X (and possibly others) working again
OBJS:=common/engine.o $(OBJS)

View File

@ -872,11 +872,11 @@ void MidiDriver_ADLIB::close() {
uint i;
for (i = 0; i < ARRAYSIZE(_voices); ++i) {
if (_voices [i]._part)
mc_off (&_voices [i]);
mc_off(&_voices [i]);
}
// Detach the premix callback handler
_mixer->setupPremix (0, 0);
_mixer->setupPremix(0, 0);
// Turn off the OPL emulation
// YM3812Shutdown();

View File

@ -819,7 +819,7 @@ void drawBlankGameSelection() {
void drawVideoDevice() {
char info[100];
sprintf(info, "Video device : %s %s - CVS %s PPC %s", gfx_device_name[_gfx_device], gfx_device_options_name[_gfx_option], SCUMMVM_VERSION, getBuildDate());
sprintf(info, "Video device : %s %s - CVS %s PPC %s", gfx_device_name[_gfx_device], gfx_device_options_name[_gfx_option], gScummVMVersion, getBuildDate());
drawString(info, 10, 0, 2, 1);
/*
printString(video_device, 10, 270, 2, 0);

View File

@ -653,7 +653,7 @@ void doPaint() {
DrawText(hDC, TEXT("http://www.scummvm.org"), -1, &rcClient, DT_CENTER | DT_SINGLELINE);
rcClient.left = 0;
rcClient.top = 90;
DrawText(hDC, TEXT(SCUMMVM_VERSION), -1, &rcClient, DT_CENTER | DT_SINGLELINE);
DrawText(hDC, TEXT(gScummVMVersion), -1, &rcClient, DT_CENTER | DT_SINGLELINE);
rcClient.left = 0;
rcClient.top = 110;
DrawText(hDC, TEXT("http://arisme.free.fr"), -1, &rcClient, DT_CENTER | DT_SINGLELINE);

View File

@ -25,6 +25,49 @@
#include "timer.h"
#include "sound/mixer.h"
/*
* Version string and build date string. These can be used by anything that
* wants to display this information to the user (e.g. about dialog).
*
* Note: it would be very nice if we could instead of (or in addition to) the
* build date present a date which corresponds to the date our source files
* were last changed. To understand the difference, imagine that a user
* makes a checkout of CVS on January 1, then after a week compiles it
* (e.g. after doing a 'make clean'). The build date then will say January 8
* even though the files were last changed on January 1.
*
* Another problem is that __DATE__/__TIME__ depend on the local time zone.
*
* It's clear that such a "last changed" date would be much more useful to us
* for feedback purposes. After all, when somebody files a bug report, we
* don't care about the build date, we want to know which date their checkout
* was made. This is even more important now since anon CVS lags a few
* days behind developer CVS.
*
* So, how could we implement this? At least on unix systems, a special script
* could do it. Basically, that script would run over all .cpp/.h files and
* parse the CVS 'Header' keyword we have in our file headers.
* That line contains a date/time in GMT. Now, the script just has to collect
* all these times and find the latest. This time then would be inserted into
* a header file or so (common/date.h ?) which engine.cpp then could
* include and put into a global variable analog to gScummVMBuildDate.
*
* Drawback: scanning all source/header files will be rather slow. Also, this
* only works on systems which can run powerful enough scripts (so I guess
* Visual C++ would be out of the game here? don't know VC enough to be sure).
*
* Another approach would be to somehow get CVS to update a global file
* (e.g. LAST_CHANGED) whenever any checkins are made. That would be
* faster and work w/o much "logic" on the client side, in particular no
* scripts have to be run. The problem with this is that I am not even
* sure it's actually possible! Modifying files during commit time is trivial
* to setup, but I have no idea if/how one can also change files which are not
* currently being commit'ed.
*/
const char *gScummVMVersion = "0.5.0pre-cvs";
const char *gScummVMBuildDate = __DATE__ " " __TIME__;
const char *gScummVMFullVersion = "ScummVM 0.5.0pre-cvs (" __DATE__ " " __TIME__ ")";
/* FIXME - BIG HACK for MidiEmu */
OSystem *g_system = 0;
SoundMixer *g_mixer = 0;

View File

@ -24,9 +24,9 @@
#include "scummsys.h"
#include "system.h"
#define SCUMMVM_VERSION "0.5.0pre-cvs"
#define SCUMMVM_CVS "2003-07-xx"
extern const char *gScummVMVersion; // e.g. "0.4.1"
extern const char *gScummVMBuildDate; // e.g. "2003-06-24"
extern const char *gScummVMFullVersion; // e.g. "ScummVM 0.4.1 (2003-06-24)"
enum GameId {
GID_SCUMM_FIRST = 1,

View File

@ -437,8 +437,7 @@ void GameDetector::parseCommandLine(int argc, char **argv) {
break;
case 'v':
CHECK_OPTION();
printf("ScummVM " SCUMMVM_VERSION "\nBuilt on " __DATE__ " "
__TIME__ "\n");
printf("%s\n", gScummVMFullVersion);
exit(1);
case 'w':
_saveconfig = true;

View File

@ -178,7 +178,7 @@ int main(int argc, char *argv[]) {
// Read the config file
g_config = new Config(scummhome, "scummvm");
g_config->set("versioninfo", SCUMMVM_VERSION);
g_config->set("versioninfo", gScummVMVersion);
// Parse the command line information
detector._saveconfig = false;

View File

@ -1,5 +1,5 @@
#! /bin/sh
VER=`sed -n -e 's/ CVS//' -e 's/^#define SCUMMVM_VERSION "\(.*\)"/\1/p' common/engine.h``date +%Y%m%d`
VER=`sed -n -e 's/ CVS//' -e 's/^const char \*gScummVMVersion = "\(.*\)"/\1/p' common/engine.cpp``date +%Y%m%d`
sed "s/@VERSION@/$VER/g" debian/changelog.in > debian/changelog

View File

@ -66,8 +66,8 @@ ConsoleDialog::ConsoleDialog(NewGui *gui, int _realWidth)
_scrollBar->setTarget(this);
// Display greetings & prompt
print("ScummVM "SCUMMVM_VERSION" (" SCUMMVM_CVS ")\n");
print("Console is ready\n");
print(gScummVMFullVersion);
print("\nConsole is ready\n");
_promptStartPos = _promptEndPos = -1;

View File

@ -175,9 +175,7 @@ void EditGameDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 dat
LauncherDialog::LauncherDialog(NewGui *gui, GameDetector &detector)
: Dialog(gui, 0, 0, 320, 200), _detector(detector) {
// Show game name
new StaticTextWidget(this, 10, 8, 300, kLineHeight,
"ScummVM "SCUMMVM_VERSION " (" SCUMMVM_CVS ")",
kTextAlignCenter);
new StaticTextWidget(this, 10, 8, 300, kLineHeight, gScummVMFullVersion, kTextAlignCenter);
// Add three buttons at the bottom
addButton(1 * (_w - kButtonWidth) / 6, _h - 24, "Quit", kQuitCmd, 'Q');

View File

@ -580,8 +580,8 @@ void OptionsDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 data
AboutDialog::AboutDialog(NewGui *gui, Scumm *scumm)
: ScummDialog(gui, scumm, 30, 20, 260, 124) {
addButton((_w - kButtonWidth)/2, 100, queryCustomString(23), kCloseCmd, 'C'); // Close dialog - FIXME
new StaticTextWidget(this, 10, 10, 240, 16, "ScummVM " SCUMMVM_VERSION " (" SCUMMVM_CVS ")", kTextAlignCenter);
new StaticTextWidget(this, 10, 20, 240, 16, "(built on " __DATE__ ")", kTextAlignCenter);
new StaticTextWidget(this, 10, 10, 240, 16, gScummVMFullVersion, kTextAlignCenter);
// new StaticTextWidget(this, 10, 20, 240, 16, "(built on " __DATE__ ")", kTextAlignCenter);
new StaticTextWidget(this, 10, 30, 240, 16, "http://www.scummvm.org", kTextAlignCenter);
new StaticTextWidget(this, 10, 50, 240, 16, "SCUMM Games (c) LucasArts", kTextAlignCenter);

View File

@ -1104,32 +1104,38 @@ int IMuseInternal::initialize(OSystem *syst, MidiDriver *native_midi) {
void IMuseInternal::initMidiDriver (MidiDriver *midi) {
// Open MIDI driver
midi->property (MidiDriver::PROP_OLD_ADLIB, _old_adlib_instruments ? 1 : 0);
midi->property(MidiDriver::PROP_OLD_ADLIB, _old_adlib_instruments ? 1 : 0);
int result = midi->open();
if (result)
error("IMuse initialization - %s", MidiDriver::getErrorName(result));
// In case we have an MT-32 attached.
initMT32 (midi);
initMT32(midi);
// Connect to the driver's timer
midi->setTimerCallback (midi, &IMuseInternal::midiTimerCallback);
midi->setTimerCallback(midi, &IMuseInternal::midiTimerCallback);
}
void IMuseInternal::initMT32 (MidiDriver *midi) {
byte buffer[32] = "\x41\x10\x16\x12\x00\x00\x00 ";
char info[256] = "ScummVM ";
int len;
// Compute version string (truncated to 20 chars max.)
strcat(info, gScummVMVersion);
len = strlen(info);
if (len > 20)
len = 20;
// Reset the MT-32
memcpy (&buffer[4], "\x7f\x00\x00\x01\x00", 5);
midi->sysEx (buffer, 9);
memcpy(&buffer[4], "\x7f\x00\x00\x01\x00", 5);
midi->sysEx(buffer, 9);
// Display a welcome message on MT-32 displays.
memcpy (&buffer[4], "\x20\x00\x00", 3);
memcpy (&buffer[7], " ", 20);
memcpy (buffer + 7 + (20 - strlen ("ScummVM " SCUMMVM_VERSION)) / 2,
"ScummVM " SCUMMVM_VERSION,
strlen ("ScummVM " SCUMMVM_VERSION));
memcpy(&buffer[4], "\x20\x00\x00", 3);
memcpy(&buffer[7], " ", 20);
memcpy(buffer + 7 + (20 - len) / 2, info, len);
byte checksum = 0;
for (int i = 4; i < 27; ++i)
checksum -= buffer[i];
@ -1163,7 +1169,7 @@ void IMuseInternal::handleDeferredCommands (MidiDriver *midi) {
if (!ptr->time_left)
continue;
if (ptr->time_left <= advance) {
doCommand (ptr->a, ptr->b, ptr->c, ptr->d, ptr->e, ptr->f, 0, 0);
doCommand(ptr->a, ptr->b, ptr->c, ptr->d, ptr->e, ptr->f, 0, 0);
ptr->time_left = advance;
}
ptr->time_left -= advance;