Author: mjones Date: Thu Sep 16 23:36:44 2010 New Revision: 5816 URL: https://tracker.coreboot.org/trac/coreboot/changeset/5816
Log: Add default libpayload build, xcompile, and lpgcc setup to tint.
Signed-off-by: Marc Jones marc.jones@gmail.com Acked-by: Peter Stuge peter@stuge.se Acked-by: Myles Watson mylesgw@gmail.com
Modified: trunk/payloads/external/tint/libpayload_tint.patch
Modified: trunk/payloads/external/tint/libpayload_tint.patch ============================================================================== --- trunk/payloads/external/tint/libpayload_tint.patch Thu Sep 16 23:04:54 2010 (r5815) +++ trunk/payloads/external/tint/libpayload_tint.patch Thu Sep 16 23:36:44 2010 (r5816) @@ -1,15 +1,94 @@ Patch tint 0.03b to be usable as coreboot payload, linked against -the libpayload library. +the libpayload library.
Signed-off-by: Uwe Hermann uwe@hermann-uwe.de
-diff -Naur tint-0.03b.orig/config.h tint-0.03b/config.h ---- tint-0.03b.orig/config.h 2001-12-08 00:03:24.000000000 +0100 -+++ tint-0.03b/config.h 2008-04-11 22:19:35.000000000 +0200 + +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) @@ -21,31 +100,31 @@ +#if 0 const char scorefile[] = SCOREFILE; +#endif - + #endif /* #ifndef CONFIG_H */ -diff -Naur tint-0.03b.orig/engine.c tint-0.03b/engine.c ---- tint-0.03b.orig/engine.c 2005-07-17 13:26:22.000000000 +0200 -+++ tint-0.03b/engine.c 2008-04-11 22:19:35.000000000 +0200 +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 -Naur tint-0.03b.orig/io.c tint-0.03b/io.c ---- tint-0.03b.orig/io.c 2001-12-07 16:48:20.000000000 +0100 -+++ tint-0.03b/io.c 2008-04-11 22:19:35.000000000 +0200 +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 @@ -53,10 +132,10 @@ #include <sys/time.h> /* gettimeofday() */ #include <unistd.h> /* gettimeofday() */ +#endif - + #include <curses.h> - -@@ -70,7 +74,11 @@ + +@@ -70,7 +74,11 @@ static int in_timeleft; /* Initialize screen */ void io_init () { @@ -68,7 +147,7 @@ start_color (); curs_set (CURSOR_INVISIBLE); out_attr = A_NORMAL; -@@ -176,11 +184,17 @@ +@@ -176,11 +184,17 @@ void out_beep () /* Read a character. Please note that you MUST call in_timeout() before in_getch() */ int in_getch () { @@ -86,102 +165,62 @@ gettimeofday (&endtv,NULL); /* Timeout? */ if (ch == ERR) -@@ -198,6 +212,7 @@ +@@ -198,6 +212,7 @@ int in_getch () in_timeleft -= endtv.tv_usec; if (in_timeleft <= 0) in_timeleft = in_timetotal; } +#endif return ch; } - -diff -Naur tint-0.03b.orig/Makefile tint-0.03b/Makefile ---- tint-0.03b.orig/Makefile 2005-07-17 13:30:54.000000000 +0200 -+++ tint-0.03b/Makefile 2008-04-11 22:19:35.000000000 +0200 -@@ -28,6 +28,36 @@ - # 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. - -+LIBPAYLOAD_DIR := ../libpayload -+CC := $(LIBPAYLOAD_DIR)/bin/lpgcc -+AS := $(LIBPAYLOAD_DIR)/bin/lpas -+# CFLAGS := -Wall -Werror -Os -+CFLAGS := -Wall -Os -+TARGET := tint -+OBJS := $(TARGET).o engine.o io.o utils.o -+ -+all: $(TARGET).elf -+ -+$(TARGET).elf: $(OBJS) -+ $(CC) -o $@ $(OBJS) -+ -+%.o: %.c -+ $(CC) $(CFLAGS) -c -o $@ $< -+ -+%.S.o: %.S -+ $(AS) --32 -o $@ $< -+ -+clean: -+ rm -f $(TARGET).elf *.o -+ -+distclean: clean -+ -+ -+ -+ -+ -+ifdef $(UNUSED) -+ - #CROSS = arm-linux- - - bindir = $(DESTDIR)/usr/games -@@ -110,3 +140,4 @@ - distclean: clean - $(MAKE) -C debian clean - -+endif -diff -Naur tint-0.03b.orig/tint.c tint-0.03b/tint.c ---- tint-0.03b.orig/tint.c 2005-07-17 13:26:43.000000000 +0200 -+++ tint-0.03b/tint.c 2008-04-11 22:19:35.000000000 +0200 -@@ -27,6 +27,7 @@ + +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 +35,7 @@ +@@ -34,6 +34,7 @@ #include <pwd.h> #include <sys/types.h> #include <unistd.h> +#endif - + #include "typedefs.h" #include "utils.h" -@@ -321,6 +323,7 @@ +@@ -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 +340,9 @@ +@@ -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 +354,11 @@ +@@ -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, @@ -189,83 +228,83 @@ "\n\t PLAYER STATISTICS\n\n\t" "Score %11d\n\t" "Efficiency %11d\n\t" -@@ -360,6 +366,7 @@ +@@ -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 +401,9 @@ +@@ -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 +421,9 @@ +@@ -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 +501,13 @@ +@@ -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 +517,11 @@ +@@ -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 +551,12 @@ +@@ -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 +566,8 @@ +@@ -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 +682,15 @@ +@@ -663,8 +681,15 @@ int main (int argc,char *argv[]) if (ch != 'q') { showplayerstats (&engine); @@ -273,21 +312,21 @@ savescores (GETSCORE (engine.score)); +#endif } -+ mvprintw(10, 10, "Bye."); ++ printf("Bye.\n"); + refresh(); -+ halt(); ++ for(;;); //halt(); +#if 0 exit (EXIT_SUCCESS); +#endif } - -diff -Naur tint-0.03b.orig/utils.c tint-0.03b/utils.c ---- tint-0.03b.orig/utils.c 2001-12-07 16:49:19.000000000 +0100 -+++ tint-0.03b/utils.c 2008-04-11 22:19:35.000000000 +0200 + +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 @@ -295,10 +334,10 @@ #include <time.h> #include <limits.h> +#endif - + #include "typedefs.h" - -@@ -41,8 +45,11 @@ + +@@ -41,8 +45,11 @@ void rand_init () #ifdef USE_RAND srand (time (NULL)); #else @@ -308,9 +347,9 @@ + srandom (123); +#endif } - + /* -@@ -61,6 +68,7 @@ +@@ -61,6 +68,7 @@ int rand_value (int range) * Convert an str to long. Returns TRUE if successful, * FALSE otherwise. */ @@ -318,8 +357,88 @@ bool str2int (int *i,const char *str) { char *endptr; -@@ -69,3 +77,4 @@ +@@ -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 ++