Three stages of the new tint build system:
 1) generate_core.sh extracts the core part from buildgcc script,
     most importantly the checksum calculation/verification functions.
 2) tintify_core.sh adds the tint-specific footer/header to the core,
     such as the properties of current version including its checksum.
 3) tint.sh - generated and "tintified" core script - builds a tint.
Signed-off-by: Mike Banon <mikebdp2@gmail.com>
Change-Id: Ib71f5b861ecf91949a5af12812258e60873f0498
Reviewed-on: https://review.coreboot.org/c/coreboot/+/50991
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
		
	
		
			
				
	
	
		
			471 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			471 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| diff -rupN tint-0.05/config.h tint/config.h
 | |
| --- tint-0.05/config.h	2001-12-08 00:03:24.000000000 +0100
 | |
| +++ tint/config.h	2021-02-09 08:00:00.000000000 +0200
 | |
| @@ -29,7 +29,15 @@
 | |
|   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | |
|   */
 | |
|  
 | |
| +#include <libpayload.h>
 | |
| +#include <curses.h>
 | |
| +
 | |
| +#define curs_set(x)
 | |
| +#define USE_RAND
 | |
| +
 | |
|  /* Score file */
 | |
| +#if 0
 | |
|  const char scorefile[] = SCOREFILE;
 | |
| +#endif
 | |
|  
 | |
|  #endif	/* #ifndef CONFIG_H */
 | |
| diff -rupN tint-0.05/engine.c tint/engine.c
 | |
| --- tint-0.05/engine.c	2005-07-17 13:26:22.000000000 +0200
 | |
| +++ tint/engine.c	2021-02-09 08:00:00.000000000 +0200
 | |
| @@ -27,10 +27,13 @@
 | |
|   * 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"
 | |
|  #include "io.h"
 | |
|  #include "engine.h"
 | |
| diff -rupN tint-0.05/engine.h tint/engine.h
 | |
| --- tint-0.05/engine.h	2001-12-07 16:48:08.000000000 +0100
 | |
| +++ tint/engine.h	2021-02-09 08:00:00.000000000 +0200
 | |
| @@ -29,7 +29,7 @@
 | |
|   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | |
|   */
 | |
|  
 | |
| -#include "typedefs.h"		/* bool */
 | |
| +#include "curses.h"		/* bool */
 | |
|  
 | |
|  /*
 | |
|   * Macros
 | |
| diff -rupN tint-0.05/io.c tint/io.c
 | |
| --- tint-0.05/io.c	2010-06-23 15:05:12.000000000 +0100
 | |
| +++ tint/io.c	2021-02-09 08:00:00.000000000 +0200
 | |
| @@ -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 "io.h"
 | |
|  
 | |
| @@ -68,7 +72,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;
 | |
| @@ -177,11 +185,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)
 | |
| @@ -199,6 +213,7 @@ int in_getch ()
 | |
|  		in_timeleft -= endtv.tv_usec;
 | |
|  		if (in_timeleft <= 0) in_timeleft = in_timetotal;
 | |
|  	 }
 | |
| +#endif
 | |
|     return ch;
 | |
|  }
 | |
|  
 | |
| diff -rupN tint-0.05/io.h tint/io.h
 | |
| --- tint-0.05/io.h	2010-06-23 14:55:03.000000000 +0100
 | |
| +++ tint/io.h	2021-02-09 08:00:00.000000000 +0200
 | |
| @@ -30,7 +30,6 @@
 | |
|   */
 | |
|  
 | |
|  #include <curses.h>
 | |
| -#include <wchar.h>
 | |
|  
 | |
|  /*
 | |
|   * Colors
 | |
| diff -rupN tint-0.05/Makefile tint/Makefile
 | |
| --- tint-0.05/Makefile	2010-06-23 15:06:11.000000000 +0200
 | |
| +++ tint/Makefile	2021-02-09 08:00:00.000000000 +0200
 | |
| @@ -0,0 +1,106 @@
 | |
| +
 | |
| +# -*- sh -*-
 | |
| +
 | |
| +#  Copyright (c) Abraham vd Merwe <abz@blio.net>
 | |
| +#  All rights reserved.
 | |
| +#
 | |
| +#  Redistribution and use in source and binary forms, with or without
 | |
| +#  modification, are permitted provided that the following conditions
 | |
| +#  are met:
 | |
| +#  1. Redistributions of source code must retain the above copyright
 | |
| +#     notice, this list of conditions and the following disclaimer.
 | |
| +#
 | |
| +#  2. Redistributions in binary form must reproduce the above copyright
 | |
| +#     notice, this list of conditions and the following disclaimer in the
 | |
| +#     documentation and/or other materials provided with the distribution.
 | |
| +#  3. Neither the name of the author nor the names of other contributors
 | |
| +#     may be used to endorse or promote products derived from this software
 | |
| +#     without specific prior written permission.
 | |
| +#
 | |
| +#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 | |
| +#  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 | |
| +#  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | |
| +#  ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 | |
| +#  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | |
| +#  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 | |
| +#  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 | |
| +#  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 | |
| +#  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.
 | |
| +
 | |
| +# in addition to the dependency below, create the file if it doesn't exist
 | |
| +# to silence warnings about a file that would be generated anyway.
 | |
| +$(if $(wildcard .xcompile),,$(eval $(shell ../../../../util/xcompile/xcompile $(XGCCPATH) > .xcompile || rm -f .xcompile)))
 | |
| +.xcompile: ../../../../util/xcompile/xcompile
 | |
| +
 | |
| +CONFIG_COMPILER_GCC := y
 | |
| +ARCH-y     := x86_32
 | |
| +
 | |
| +include .xcompile
 | |
| +
 | |
| +src := $(CURDIR)
 | |
| +srctree := $(src)
 | |
| +tint_obj := $(src)/build
 | |
| +
 | |
| +LIBCONFIG_PATH := $(realpath ../../../libpayload)
 | |
| +LIBPAYLOAD_DIR := $(tint_obj)/libpayload
 | |
| +HAVE_LIBPAYLOAD := $(wildcard $(LIBPAYLOAD_DIR)/lib/libpayload.a)
 | |
| +LIB_CONFIG ?= configs/defconfig-tinycurses
 | |
| +
 | |
| +# CFLAGS := -Wall -Werror -Os
 | |
| +CFLAGS := -Wall -g -Os
 | |
| +TARGET := tint
 | |
| +OBJS := $(TARGET).o engine.o io.o utils.o
 | |
| +
 | |
| +ARCH-y     := x86_32
 | |
| +
 | |
| +CC := $(CC_$(ARCH-y))
 | |
| +AS := $(AS_$(ARCH-y))
 | |
| +OBJCOPY := $(OBJCOPY_$(ARCH-y))
 | |
| +
 | |
| +LPCC := CC="$(CC)" $(LIBPAYLOAD_DIR)/bin/lpgcc
 | |
| +LPAS := AS="$(AS)" $(LIBPAYLOAD_DIR)/bin/lpas
 | |
| +
 | |
| +# 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) defconfig KBUILD_DEFCONFIG=$(LIB_CONFIG)
 | |
| +	$(Q)make -C $(LIBCONFIG_PATH) DESTDIR=$(tint_obj) install
 | |
| +endif
 | |
| +
 | |
| +clean:
 | |
| +	$(Q)rm -f $(TARGET).elf $(TARGET).debug *.o
 | |
| +	$(Q)rm .xcompile
 | |
| +
 | |
| +distclean: clean
 | |
| +	$(Q)rm -rf $(tint_obj)
 | |
| +
 | |
| +
 | |
| +.PHONY: all clean do-it-all depend with-depends without-depends debian postinst
 | |
| diff -rupN tint-0.05/tint.c tint/tint.c
 | |
| --- tint-0.05/tint.c	2010-08-08 19:42:50.000000000 +0200
 | |
| +++ tint/tint.c	2021-02-09 08:00:00.000000000 +0200
 | |
| @@ -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,8 +34,8 @@
 | |
|  #include <pwd.h>
 | |
|  #include <sys/types.h>
 | |
|  #include <unistd.h>
 | |
| +#endif
 | |
|  
 | |
| -#include "typedefs.h"
 | |
|  #include "utils.h"
 | |
|  #include "io.h"
 | |
|  #include "config.h"
 | |
| @@ -304,7 +304,7 @@ static void showstatus (engine_t *engine
 | |
|            /***************************************************************************/
 | |
|  
 | |
|  /* Header for scorefile */
 | |
| -#define SCORE_HEADER	"Tint 0.02b (c) Abraham vd Merwe - Scores"
 | |
| +#define SCORE_HEADER	"Tint 0.05 (c) Abraham vd Merwe - Scores"
 | |
|  
 | |
|  /* Header for score title */
 | |
|  static const char scoretitle[] = "\n\t   TINT HIGH SCORES\n\n\tRank   Score        Name\n\n";
 | |
| @@ -322,6 +322,7 @@ typedef struct
 | |
|     time_t timestamp;
 | |
|  } score_t;
 | |
|  
 | |
| +#if 0
 | |
|  static void getname (char *name)
 | |
|  {
 | |
|     struct passwd *pw = getpwuid (geteuid ());
 | |
| @@ -338,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);
 | |
| @@ -350,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"
 | |
| @@ -361,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;
 | |
| @@ -395,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;
 | |
| @@ -413,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;
 | |
| @@ -491,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] [-d] [-b char]\n");
 | |
| @@ -506,9 +517,11 @@ static void showhelp ()
 | |
|     fprintf (stderr,"  -b <char>    Use this character to draw blocks instead of spaces\n");
 | |
|     exit (EXIT_FAILURE);
 | |
|  }
 | |
| +#endif
 | |
|  
 | |
|  static void parse_options (int argc,char *argv[])
 | |
|  {
 | |
| +#if 0
 | |
|     int i = 1;
 | |
|     while (i < argc)
 | |
|  	 {
 | |
| @@ -544,10 +557,12 @@ static void parse_options (int argc,char
 | |
|  		  }
 | |
|  		i++;
 | |
|  	 }
 | |
| +#endif
 | |
|  }
 | |
|  
 | |
|  static void choose_level ()
 | |
|  {
 | |
| +#if 0
 | |
|     char buf[NAMELEN];
 | |
|  
 | |
|     do
 | |
| @@ -557,6 +572,8 @@ static void choose_level ()
 | |
|  		buf[strlen (buf) - 1] = '\0';
 | |
|  	 }
 | |
|     while (!str2int (&level,buf) || level < MINLEVEL || level > MAXLEVEL);
 | |
| +#endif
 | |
| +	level = 1;
 | |
|  }
 | |
|  
 | |
|            /***************************************************************************/
 | |
| @@ -569,6 +586,8 @@ int main (int argc,char *argv[])
 | |
|     int ch;
 | |
|     engine_t engine;
 | |
|     /* Initialize */
 | |
| +   if (CONFIG(LP_USB))
 | |
| +      usb_initialize();
 | |
|     rand_init ();							/* must be called before engine_init () */
 | |
|     engine_init (&engine,score_function);	/* must be called before using engine.curshape */
 | |
|     finished = shownext = FALSE;
 | |
| @@ -632,12 +651,14 @@ int main (int argc,char *argv[])
 | |
|  				  /* pause */
 | |
|  				case 'p':
 | |
|  				  out_setcolor (COLOR_WHITE,COLOR_BLACK);
 | |
| -				  out_gotoxy ((out_width () - 34) / 2,out_height () - 2);
 | |
| +				  out_gotoxy ((out_width () - 34) / 2,out_height () / 2);
 | |
|  				  out_printf ("Paused - Press any key to continue");
 | |
| +				  refresh ();
 | |
|  				  while ((ch = in_getch ()) == ERR) ;	/* Wait for a key to be pressed */
 | |
|  				  in_flush ();							/* Clear keyboard buffer */
 | |
| -				  out_gotoxy ((out_width () - 34) / 2,out_height () - 2);
 | |
| +				  out_gotoxy ((out_width () - 34) / 2,out_height () / 2);
 | |
|  				  out_printf ("                                  ");
 | |
| +				  refresh ();
 | |
|  				  break;
 | |
|  				  /* unknown keypress */
 | |
|  				default:
 | |
| @@ -672,12 +693,32 @@ int main (int argc,char *argv[])
 | |
|     while (!finished);
 | |
|     /* Restore console settings and exit */
 | |
|     io_close ();
 | |
| +#if 0
 | |
|     /* Don't bother the player if he want's to quit */
 | |
|     if (ch != 'q')
 | |
|  	 {
 | |
| +#endif
 | |
|  		showplayerstats (&engine);
 | |
| +#if 0
 | |
|  		savescores (GETSCORE (engine.score));
 | |
|  	 }
 | |
| +#endif
 | |
| +   printf("Press 'q' to reboot...\n");
 | |
| +   refresh();
 | |
| +   for (;;) {
 | |
| +   	in_flush ();
 | |
| +   	while ((ch = in_getch ()) == ERR) ;   /* Wait for a key to be pressed */
 | |
| +   	if (ch == 'q') { /* reboot */
 | |
| +   		outb(0x6, 0xcf9);
 | |
| +   		for(;;); //halt();
 | |
| +   	}
 | |
| +   	else {
 | |
| +   		in_flush ();
 | |
| +   	}
 | |
| +   }
 | |
| +
 | |
| +#if 0
 | |
|     exit (EXIT_SUCCESS);
 | |
| +#endif
 | |
|  }
 | |
|  
 | |
| diff -rupN tint-0.05/utils.c tint/utils.c
 | |
| --- tint-0.05/utils.c	2001-12-07 16:49:19.000000000 +0100
 | |
| +++ tint/utils.c	2021-02-09 08:00:00.000000000 +0200
 | |
| @@ -27,11 +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>
 | |
| -
 | |
| -#include "typedefs.h"
 | |
| +#endif
 | |
|  
 | |
|  /*
 | |
|   * Initialize random number generator
 | |
| @@ -61,6 +63,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 +72,4 @@ bool str2int (int *i,const char *str)
 | |
|     return TRUE;
 | |
|  }
 | |
|  
 | |
| +#endif
 | |
| diff -rupN tint-0.05/utils.h tint/utils.h
 | |
| --- tint-0.05/utils.h	2001-12-07 16:49:35.000000000 +0100
 | |
| +++ tint/utils.h	2021-02-09 08:00:00.000000000 +0200
 | |
| @@ -29,7 +29,7 @@
 | |
|   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | |
|   */
 | |
|  
 | |
| -#include "typedefs.h"
 | |
| +#include <curses.h>
 | |
|  
 | |
|  /*
 | |
|   * Initialize random number generator
 |