445 lines
10 KiB
Diff
445 lines
10 KiB
Diff
Patch tint 0.03b to be usable as coreboot payload, linked against
|
|
the libpayload library.
|
|
|
|
Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
|
|
|
|
|
|
Add default libpayload build, xcompile, and lpgcc setup to tint.
|
|
|
|
Signed-off-by: Marc Jones <marc.jones@gmail.com>
|
|
|
|
diff -rupN tintorig/Makefile tint/Makefile
|
|
--- tintorig/Makefile 2005-07-17 05:30:54.000000000 -0600
|
|
+++ tint/Makefile 2010-08-23 18:06:24.671875000 -0600
|
|
@@ -28,6 +28,65 @@
|
|
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
+$(if $(wildcard .xcompile),,$(eval $(shell bash ./xcompile.sh &> .xcompile)))
|
|
+include .xcompile
|
|
+
|
|
+LIBCONFIG_PATH := ../libpayload
|
|
+LIBPAYLOAD_DIR := ./libpayloadbin
|
|
+LPCC := $(LIBPAYLOAD_DIR)/libpayload/bin/lpgcc
|
|
+LPAS := $(LIBPAYLOAD_DIR)/libpayload/bin/lpas
|
|
+HAVE_LIBPAYLOAD := $(wildcard $(LIBPAYLOAD_DIR)/libpayload/lib/libpayload.a)
|
|
+LIB_CONFIG ?= defconfig
|
|
+
|
|
+# CFLAGS := -Wall -Werror -Os
|
|
+CFLAGS := -Wall -g -Os
|
|
+TARGET := tint
|
|
+OBJS := $(TARGET).o engine.o io.o utils.o
|
|
+
|
|
+# Make is silent per default, but 'make V=1' will show all compiler calls.
|
|
+ifneq ($(V),1)
|
|
+Q := @
|
|
+endif
|
|
+
|
|
+all: $(TARGET).elf
|
|
+# printf" CC $(CC)\n"
|
|
+
|
|
+$(TARGET).elf: $(OBJS) libpayload
|
|
+ $(Q)printf " LPCC $(subst $(shell pwd)/,,$(@))\n"
|
|
+ $(Q)$(LPCC) -o $@ $(OBJS)
|
|
+ $(Q)$(OBJCOPY) --only-keep-debug $@ tint.debug
|
|
+ $(Q)$(OBJCOPY) --strip-debug $@
|
|
+ $(Q)$(OBJCOPY) --add-gnu-debuglink=tint.debug $@
|
|
+
|
|
+%.o: %.c libpayload
|
|
+ $(Q)printf " LPCC $(subst $(shell pwd)/,,$(@))\n"
|
|
+ $(Q)$(LPCC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
|
|
+
|
|
+%.S.o: %.S libpayload
|
|
+ $(Q)printf " LPAS $(subst $(shell pwd)/,,$(@))\n"
|
|
+ $(Q)$(LPAS) $(ASFLAGS) --32 -o $@ $<
|
|
+
|
|
+ifneq ($(strip $(HAVE_LIBPAYLOAD)),)
|
|
+libpayload:
|
|
+ $(Q)printf "Found Libpayload $(LIBPAYLOAD_DIR).\n"
|
|
+else
|
|
+libpayload:
|
|
+ $(Q)printf "Building libpayload @ $(LIBCONFIG_PATH).\n"
|
|
+ $(Q)make -C $(LIBCONFIG_PATH) distclean
|
|
+ $(Q)make -C $(LIBCONFIG_PATH) $(LIB_CONFIG)
|
|
+ $(Q)make -C $(LIBCONFIG_PATH) DESTDIR=$(shell pwd)/$(LIBPAYLOAD_DIR) install
|
|
+endif
|
|
+
|
|
+clean:
|
|
+ $(Q)rm -f $(TARGET).elf $(TARGET).debug *.o
|
|
+ $(Q)rm .xcompile
|
|
+
|
|
+distclean: clean
|
|
+ $(Q)rm -rf $(LIBPAYLOAD_DIR)
|
|
+
|
|
+# Original tint targets
|
|
+ifdef $(UNUSED)
|
|
+
|
|
#CROSS = arm-linux-
|
|
|
|
bindir = $(DESTDIR)/usr/games
|
|
@@ -110,3 +169,4 @@ clean:
|
|
distclean: clean
|
|
$(MAKE) -C debian clean
|
|
|
|
+endif
|
|
diff -rupN tintorig/config.h tint/config.h
|
|
--- tintorig/config.h 2001-12-07 16:03:24.000000000 -0700
|
|
+++ tint/config.h 2010-01-27 13:59:18.000000000 -0700
|
|
@@ -29,7 +29,16 @@
|
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
|
|
+#include <libpayload.h>
|
|
+#include <curses.h>
|
|
+#define random(x) rand(x)
|
|
+#define srandom(x) srand(x)
|
|
+#define curs_set(x)
|
|
+
|
|
+
|
|
/* Score file */
|
|
+#if 0
|
|
const char scorefile[] = SCOREFILE;
|
|
+#endif
|
|
|
|
#endif /* #ifndef CONFIG_H */
|
|
diff -rupN tintorig/engine.c tint/engine.c
|
|
--- tintorig/engine.c 2005-07-17 05:26:22.000000000 -0600
|
|
+++ tint/engine.c 2010-01-27 13:59:18.000000000 -0700
|
|
@@ -27,8 +27,12 @@
|
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
|
|
+#include "config.h"
|
|
+
|
|
+#if 0
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
+#endif
|
|
|
|
#include "typedefs.h"
|
|
#include "utils.h"
|
|
diff -rupN tintorig/io.c tint/io.c
|
|
--- tintorig/io.c 2001-12-07 08:48:20.000000000 -0700
|
|
+++ tint/io.c 2010-01-27 13:59:18.000000000 -0700
|
|
@@ -27,9 +27,13 @@
|
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
|
|
+#include "config.h"
|
|
+
|
|
+#if 0
|
|
#include <stdarg.h> /* va_list(), va_start(), va_end() */
|
|
#include <sys/time.h> /* gettimeofday() */
|
|
#include <unistd.h> /* gettimeofday() */
|
|
+#endif
|
|
|
|
#include <curses.h>
|
|
|
|
@@ -70,7 +74,11 @@ static int in_timeleft;
|
|
/* Initialize screen */
|
|
void io_init ()
|
|
{
|
|
+ curses_enable_serial(0);
|
|
+ curses_enable_vga(1);
|
|
initscr ();
|
|
+ halfdelay(1);
|
|
+ timeout(1);
|
|
start_color ();
|
|
curs_set (CURSOR_INVISIBLE);
|
|
out_attr = A_NORMAL;
|
|
@@ -176,11 +184,17 @@ void out_beep ()
|
|
/* Read a character. Please note that you MUST call in_timeout() before in_getch() */
|
|
int in_getch ()
|
|
{
|
|
+#if 0
|
|
struct timeval starttv,endtv;
|
|
+#endif
|
|
int ch;
|
|
+#if 0
|
|
timeout (in_timeleft / 1000);
|
|
gettimeofday (&starttv,NULL);
|
|
+#endif
|
|
ch = getch ();
|
|
+ mdelay(150);
|
|
+#if 0
|
|
gettimeofday (&endtv,NULL);
|
|
/* Timeout? */
|
|
if (ch == ERR)
|
|
@@ -198,6 +212,7 @@ int in_getch ()
|
|
in_timeleft -= endtv.tv_usec;
|
|
if (in_timeleft <= 0) in_timeleft = in_timetotal;
|
|
}
|
|
+#endif
|
|
return ch;
|
|
}
|
|
|
|
diff -rupN tintorig/tint.c tint/tint.c
|
|
--- tintorig/tint.c 2005-07-17 05:26:43.000000000 -0600
|
|
+++ tint/tint.c 2010-08-23 18:13:53.281250000 -0600
|
|
@@ -1,4 +1,3 @@
|
|
-
|
|
/*
|
|
* Copyright (c) Abraham vd Merwe <abz@blio.net>
|
|
* All rights reserved.
|
|
@@ -27,6 +26,7 @@
|
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
|
|
+#if 0
|
|
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
@@ -34,6 +34,7 @@
|
|
#include <pwd.h>
|
|
#include <sys/types.h>
|
|
#include <unistd.h>
|
|
+#endif
|
|
|
|
#include "typedefs.h"
|
|
#include "utils.h"
|
|
@@ -321,6 +322,7 @@ typedef struct
|
|
time_t timestamp;
|
|
} score_t;
|
|
|
|
+#if 0
|
|
static void getname (char *name)
|
|
{
|
|
struct passwd *pw = getpwuid (geteuid ());
|
|
@@ -337,7 +339,9 @@ static void getname (char *name)
|
|
name[NAMELEN - 1] = '\0';
|
|
}
|
|
}
|
|
+#endif
|
|
|
|
+#if 0
|
|
static void err1 ()
|
|
{
|
|
fprintf (stderr,"Error creating %s\n",scorefile);
|
|
@@ -349,10 +353,11 @@ static void err2 ()
|
|
fprintf (stderr,"Error writing to %s\n",scorefile);
|
|
exit (EXIT_FAILURE);
|
|
}
|
|
+#endif
|
|
|
|
void showplayerstats (engine_t *engine)
|
|
{
|
|
- fprintf (stderr,
|
|
+ printf (
|
|
"\n\t PLAYER STATISTICS\n\n\t"
|
|
"Score %11d\n\t"
|
|
"Efficiency %11d\n\t"
|
|
@@ -360,6 +365,7 @@ void showplayerstats (engine_t *engine)
|
|
GETSCORE (engine->score),engine->status.efficiency,GETSCORE (engine->score) / getsum ());
|
|
}
|
|
|
|
+#if 0
|
|
static void createscores (int score)
|
|
{
|
|
FILE *handle;
|
|
@@ -394,7 +400,9 @@ static void createscores (int score)
|
|
fprintf (stderr,"%s",scoretitle);
|
|
fprintf (stderr,"\t 1* %7d %s\n\n",score,scores[0].name);
|
|
}
|
|
+#endif
|
|
|
|
+#if 0
|
|
static int cmpscores (const void *a,const void *b)
|
|
{
|
|
int result;
|
|
@@ -412,7 +420,9 @@ static int cmpscores (const void *a,cons
|
|
/* timestamps is equal */
|
|
return 0;
|
|
}
|
|
+#endif
|
|
|
|
+#if 0
|
|
static void savescores (int score)
|
|
{
|
|
FILE *handle;
|
|
@@ -490,11 +500,13 @@ static void savescores (int score)
|
|
}
|
|
fprintf (stderr,"\n");
|
|
}
|
|
+#endif
|
|
|
|
/***************************************************************************/
|
|
/***************************************************************************/
|
|
/***************************************************************************/
|
|
|
|
+#if 0
|
|
static void showhelp ()
|
|
{
|
|
fprintf (stderr,"USAGE: tint [-h] [-l level] [-n]\n");
|
|
@@ -504,9 +516,11 @@ static void showhelp ()
|
|
fprintf (stderr," -d Draw vertical dotted lines\n");
|
|
exit (EXIT_FAILURE);
|
|
}
|
|
+#endif
|
|
|
|
static void parse_options (int argc,char *argv[])
|
|
{
|
|
+#if 0
|
|
int i = 1;
|
|
while (i < argc)
|
|
{
|
|
@@ -536,10 +550,12 @@ static void parse_options (int argc,char
|
|
}
|
|
i++;
|
|
}
|
|
+#endif
|
|
}
|
|
|
|
static void choose_level ()
|
|
{
|
|
+#if 0
|
|
char buf[NAMELEN];
|
|
|
|
do
|
|
@@ -549,6 +565,8 @@ static void choose_level ()
|
|
buf[strlen (buf) - 1] = '\0';
|
|
}
|
|
while (!str2int (&level,buf) || level < MINLEVEL || level > MAXLEVEL);
|
|
+#endif
|
|
+ level = 1;
|
|
}
|
|
|
|
/***************************************************************************/
|
|
@@ -663,8 +681,15 @@ int main (int argc,char *argv[])
|
|
if (ch != 'q')
|
|
{
|
|
showplayerstats (&engine);
|
|
+#if 0
|
|
savescores (GETSCORE (engine.score));
|
|
+#endif
|
|
}
|
|
+ printf("Bye.\n");
|
|
+ refresh();
|
|
+ for(;;); //halt();
|
|
+#if 0
|
|
exit (EXIT_SUCCESS);
|
|
+#endif
|
|
}
|
|
|
|
diff -rupN tintorig/utils.c tint/utils.c
|
|
--- tintorig/utils.c 2001-12-07 08:49:19.000000000 -0700
|
|
+++ tint/utils.c 2010-01-27 13:59:18.000000000 -0700
|
|
@@ -27,9 +27,13 @@
|
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
|
|
+#include "config.h"
|
|
+
|
|
+#if 0
|
|
#include <stdlib.h>
|
|
#include <time.h>
|
|
#include <limits.h>
|
|
+#endif
|
|
|
|
#include "typedefs.h"
|
|
|
|
@@ -41,8 +45,11 @@ void rand_init ()
|
|
#ifdef USE_RAND
|
|
srand (time (NULL));
|
|
#else
|
|
+#if 0
|
|
srandom (time (NULL));
|
|
#endif
|
|
+ srandom (123);
|
|
+#endif
|
|
}
|
|
|
|
/*
|
|
@@ -61,6 +68,7 @@ int rand_value (int range)
|
|
* Convert an str to long. Returns TRUE if successful,
|
|
* FALSE otherwise.
|
|
*/
|
|
+#if 0
|
|
bool str2int (int *i,const char *str)
|
|
{
|
|
char *endptr;
|
|
@@ -69,3 +77,4 @@ bool str2int (int *i,const char *str)
|
|
return TRUE;
|
|
}
|
|
|
|
+#endif
|
|
diff -rupN tintorig/xcompile.sh tint/xcompile.sh
|
|
--- tintorig/xcompile.sh 1969-12-31 17:00:00.000000000 -0700
|
|
+++ tint/xcompile.sh 2010-03-10 15:34:51.421875000 -0700
|
|
@@ -0,0 +1,76 @@
|
|
+#!/bin/bash
|
|
+
|
|
+CONFIG=defconfig
|
|
+SCRIPT_DIR=`dirname "$0"`
|
|
+
|
|
+for make in make gmake gnumake; do
|
|
+ if [ "`$make --version 2>/dev/null | grep -c GNU`" -gt 0 ]; then
|
|
+ MAKE=$make
|
|
+ break
|
|
+ fi
|
|
+done
|
|
+
|
|
+GCCPREFIX=invalid
|
|
+for gccprefixes in `pwd`/$SCRIPT_DIR/../../util/crossgcc/xgcc/bin/i386-elf- i386-elf- ""; do
|
|
+ TMP=`mktemp /tmp/temp.XXXX`
|
|
+ echo "mov %eax, %eax" > ${TMP}.s
|
|
+ printf "\x7fELF" > ${TMP}.compare
|
|
+ if which ${gccprefixes}as 2>/dev/null >/dev/null; then
|
|
+ printf ""
|
|
+ else
|
|
+ continue
|
|
+ fi
|
|
+ if ${gccprefixes}as --32 -o ${TMP}.o ${TMP}.s; then
|
|
+ dd bs=4 count=1 if=${TMP}.o > ${TMP}.test 2>/dev/null
|
|
+ if cmp ${TMP}.test ${TMP}.compare; then
|
|
+ GCCPREFIX=$gccprefixes
|
|
+ rm -f $TMP ${TMP}.s ${TMP}.o ${TMP}.compare ${TMP}.test
|
|
+ break
|
|
+ fi
|
|
+ fi
|
|
+ rm -f $TMP ${TMP}.s ${TMP}.o ${TMP}.compare ${TMP}.test
|
|
+done
|
|
+
|
|
+if [ "$GCCPREFIX" = "invalid" ]; then
|
|
+ echo no suitable gcc found
|
|
+ exit 1
|
|
+fi
|
|
+
|
|
+#MAKEFLAGS=" \
|
|
+# AS=\"${GCCPREFIX}as --32\" \
|
|
+# CC=\"${GCCPREFIX}gcc -m32\" \
|
|
+# AR=\"${GCCPREFIX}ar\" \
|
|
+# LD=\"${GCCPREFIX}ld -b elf32-i386\" \
|
|
+# STRIP=\"${GCCPREFIX}strip\" \
|
|
+# NM=\"${GCCPREFIX}nm\" \
|
|
+# HOSTCC=gcc \
|
|
+# -j \
|
|
+#"
|
|
+
|
|
+cat << afteroptions
|
|
+export AS:=${GCCPREFIX}as --32
|
|
+export CC:=${GCCPREFIX}gcc -m32
|
|
+export CPP:=${GCCPREFIX}cpp
|
|
+export AR:=${GCCPREFIX}ar
|
|
+export LD:=${GCCPREFIX}ld -b elf32-i386
|
|
+export STRIP:=${GCCPREFIX}strip
|
|
+export NM:=${GCCPREFIX}nm
|
|
+export OBJCOPY:=${GCCPREFIX}objcopy
|
|
+export OBJDUMP:=${GCCPREFIX}objdump
|
|
+export HOSTCC:=gcc
|
|
+afteroptions
|
|
+
|
|
+# Should we let the payload build libpayload or do it for them?
|
|
+#test -d ./build || (
|
|
+# BUILDDIR=$PWD
|
|
+# cd ../libpayload
|
|
+# $MAKE distclean
|
|
+# cp configs/$CONFIG .config
|
|
+# $MAKE oldconfig
|
|
+# eval $MAKE $MAKEFLAGS
|
|
+# eval $MAKE $MAKEFLAGS DESTDIR=$BUILDDIR/build install
|
|
+# cd ..
|
|
+#)
|
|
+
|
|
+# eval $MAKE -C $SCRIPT_DIR $MAKEFLAGS
|
|
+
|