Add default libpayload build, xcompile, and lpgcc setup to tint.
authorMarc Jones <marc.jones@gmail.com>
Thu, 16 Sep 2010 21:36:44 +0000 (21:36 +0000)
committerMarc Jones <marc.jones@amd.com>
Thu, 16 Sep 2010 21:36:44 +0000 (21:36 +0000)
Signed-off-by: Marc Jones <marc.jones@gmail.com>
Acked-by: Peter Stuge <peter@stuge.se>
Acked-by: Myles Watson <mylesgw@gmail.com>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@5816 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1

payloads/external/tint/libpayload_tint.patch

index be9d8f071d59ca7ac5b2e747c5b493c42fbbf316..958741039daf66015fb670497e413a5cf2218fa3 100644 (file)
@@ -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 @@ diff -Naur tint-0.03b.orig/config.h tint-0.03b/config.h
 +#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 @@ diff -Naur tint-0.03b.orig/io.c tint-0.03b/io.c
  #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 @@ diff -Naur tint-0.03b.orig/io.c tint-0.03b/io.c
     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 @@ diff -Naur tint-0.03b.orig/io.c tint-0.03b/io.c
     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 @@ diff -Naur tint-0.03b.orig/tint.c tint-0.03b/tint.c
                        "\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 @@ diff -Naur tint-0.03b.orig/tint.c tint-0.03b/tint.c
                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 @@ diff -Naur tint-0.03b.orig/utils.c tint-0.03b/utils.c
  #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 @@ diff -Naur tint-0.03b.orig/utils.c tint-0.03b/utils.c
 +   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 @@ diff -Naur tint-0.03b.orig/utils.c tint-0.03b/utils.c
  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
++