Patches rtems-rc-4.5.0-1.diff from Ralf Corsepius <corsepiu@faw.uni-ulm.de>

that fixes numerous miscellaneous issues most related to the debug and
profile build stanzas:

  Fix for the "make debug" (1) issue and an analogous issue with "make
  profile" (untested).
    * Fixes to mcp750.cfg (make debug, directories) (2)
    * Updates/minor fixes for shgen (3)
    * Updates some custom/*.cfgs to use $(LINK.c) instead of  $(CC)
    * Leftovers from rtems-rc-4.5.0-[0|1].diff which somehow did not make it
      into cvs.
    * Cleanups to the perlscripts below tools/update/
    * Some unsorted minor fixes.

 Footnotes/Remarks:
    (1) Tested for all m68k, sh, sparc, unix and selected i386, ppc BSPs.

    Known problems: I can't build the debug variant for the m68k/mvme162 and
    m68k/mvme162lx (segmentation fault - signal 11 :)

    (2) Tested by building the BSP, but I doubt the debug-variant is
    functional. The flags used for the debug variant should be checked by
    knowledgeable persons and probably at runtime #:o)

    (3) I have updated shgen to use getopt_long (it should fall back to
    getopt if not available), enhanced the options, cleaned up some minor
    tweaks and added help2man support (rough automatic man-page generation).

  Technical notes:
    * make debug and make profile now work similar in target Makefile.ams as
    they did in old autoconf-Makefile.ins using leaf.cfg. Unlike the rules
    in leaf.cfg these Makefile.am also recurse once on themselves in
    directory Makefiles before or after recursing into subdirectories, not
    only in leaf-directories.
    To implement this behavior, I renamed the former automake/local.am into
    automake/host.am and extended local.am to provide this recursion.
    I.e. host.am implements the non-self-recursive variant, while local.am
    now implements the self-recursive behavior.
    => all Makefile.ams exploiting build-variants are supposed to include
    local.am
    => all Makefile.ams not exploiting build-variants should include host.am

    => Rules of thumb:
        - Only include one of both, either local.am or host.am into a
        Makefile.am.
        -Target-Makefile.ams should include local.am
        -Host-Makefile.ams should include host.am (Probably, you now understand
        the naming)
        - There are exceptions from these rules :)

    * Now, make debug|profile|all are independent of each other. However,
    each of them however triggers preinstall.

    * "make install" still decends into the subdirectories but does not
    trigger "all|profile|debug|preinstall" in target Makefile.am anymore.
    Besides triggering "install"-rules in some selected Makefile.ams, it
    only packs $(PROJECT_ROOT) into a tarballs and unpacks it to $(prefix).
    => "make install" alone is not enough to install RTEMS, now use
    make RTEMS_BSP=<bsps> [all] [debug] [profile]
    make RTEMS_BSP=<bsp> install

    I consider this to be a step back wrt. exploiting automake mechanisms,
    and expect this to be reverted if we abandon building target variants in
    favour of the standard convention of optionally overriding flags from
    the command line (i.e. instead of "make debug", GNU standards favor
    "make CFLAGS=<options> --prefix=<location>")
This commit is contained in:
Joel Sherrill
2000-02-25 15:03:10 +00:00
parent 77b2b0ec5b
commit 99eb5852f5
106 changed files with 240 additions and 196 deletions

View File

@@ -10,4 +10,4 @@ SUBDIRS = @subdirs@
DIST_SUBDIRS = generic hppa1.1 sh unix
include $(top_srcdir)/../../automake/subdirs.am
include $(top_srcdir)/../../automake/local.am
include $(top_srcdir)/../../automake/host.am

View File

@@ -6,4 +6,4 @@ AUTOMAKE_OPTIONS = foreign 1.4
ACLOCAL_AMFLAGS = -I $(RTEMS_TOPdir)/aclocal
noinst_SCRIPTS=size_rtems
include $(top_srcdir)/../../../automake/local.am
include $(top_srcdir)/../../../automake/host.am

View File

@@ -14,8 +14,8 @@ genoffsets.c
CPU_DIR=../../cpu/$(RTEMS_CPU)
INCLUDES = \
AM_CPPFLAGS = \
-I$(PROJECT_INCLUDE) \
-I$(CPU_DIR)
include $(top_srcdir)/../../../automake/local.am
include $(top_srcdir)/../../../automake/host.am

View File

@@ -2,7 +2,7 @@
## $Id$
##
AUTOMAKE_OPTIONS = foreign 1.4
AUTOMAKE_OPTIONS = foreign 1.4 no-installman
ACLOCAL_AMFLAGS = -I $(RTEMS_TOPdir)/aclocal
noinst_PROGRAMS=shgen
@@ -12,4 +12,11 @@ sci.h \
sci.c \
shgen.c
include $(top_srcdir)/../../../automake/local.am
if HELP2MAN
man_MANS = shgen.1
shgen.1: $(srcdir)/shgen.c
$(HELP2MAN) -N shgen >$@
endif
include $(top_srcdir)/../../../automake/host.am

View File

@@ -8,12 +8,15 @@ AC_CONFIG_AUX_DIR(../../..)
RTEMS_CANONICAL_TARGET_CPU
AM_INIT_AUTOMAKE(rtems-tools-cpu-sh,$RTEMS_VERSION,no)
AM_INIT_AUTOMAKE(rtems-tools-cpu-sh,0.4)
AM_MAINTAINER_MODE
AC_EXEEXT
AC_PROG_CC
AC_CHECK_LIB(m,fabs)
AC_CHECK_FUNCS(getopt_long)
AC_CHECK_PROGS(HELP2MAN,help2man)
AM_CONDITIONAL(HELP2MAN,test -n "$HELP2MAN" )
RTEMS_TOOLPATHS

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1998-1999 Ralf Corsepius (corsepiu@faw.uni-ulm.de)
* Copyright (c) 1998,1999,2000 Ralf Corsepius (corsepiu@faw.uni-ulm.de)
*
* See the file COPYING for copyright notice.
*/
@@ -11,25 +11,44 @@
#include "sci.h"
static void usage( char *prog )
static void usage( FILE* ofile, char *prog )
{
fprintf( stderr, "usage: %s [options] driver\n", prog );
fprintf( stderr, "options:\n" );
fprintf( stderr, "\t-M Phi .. processor frequency [MHz]\n" );
fprintf( stderr, "\t-K Phi .. processor frequency [KHz]\n" );
fprintf( stderr, "\t-H Phi .. processor frequency [Hz]\n" );
fprintf( stderr, "\t\t..default 20MHz" );
fprintf( stderr, "driver:\n" );
fprintf( stderr, "\tsci .. bitrate table for sci\n" );
exit ( 1 );
fprintf( ofile, "Usage: %s [options] driver\n", prog );
fprintf( ofile, "\nOptions:\n" );
fprintf( ofile, "Processor frequency (default 20MHz):\n") ;
fprintf( ofile, "\t-M Phi .. processor frequency [MHz]\n" );
fprintf( ofile, "\t-K Phi .. processor frequency [KHz]\n" );
fprintf( ofile, "\t-H Phi .. processor frequency [Hz]\n" );
fprintf( ofile, "Driver:\n" );
fprintf( ofile, "\tsci .. bitrate table for sci\n" );
fprintf( ofile, "\nWritten by Ralf Corsepius <corsepiu@faw.uni-ulm.de>\n" );
fprintf( ofile, "\nCopyright (c) 1998,1999,2000\tRalf Corsepius\n" );
}
#if HAVE_GETOPT_LONG
#define NOARG 0
#define HASARG 1
#define OPTARG 2
static struct option long_options[] =
{
{ "version", NOARG, NULL, 'v' },
{ "help", NOARG, NULL, 'h' },
{ "mega-hertz", HASARG, NULL, 'M' },
{ "kilo-hertz", HASARG, NULL, 'K' },
{ "hertz", HASARG, NULL, 'H' },
{ 0, 0, 0, 0 }
};
#endif
static void shgen_header( FILE *file )
{
fprintf( file,
"/*\n * DO NOT EDIT - this file is automatically generated by shgen 0.3\n" );
"/*\n * DO NOT EDIT - this file is automatically generated by shgen %s\n",
VERSION );
fprintf( file,
" * Copyright (c) 1998-1999, Ralf Corsepius (corsepiu@faw.uni-ulm.de)\n */\n" );
" * Copyright (c) 1998,1999,2000 Ralf Corsepius (corsepiu@faw.uni-ulm.de)\n */\n" );
fprintf( file,
"\n/* This file is not copyrighted */\n\n" );
}
@@ -37,8 +56,14 @@ static void shgen_header( FILE *file )
int main( int argc, char *argv[] )
{
double Phi = 20.0 ;
while ( ( optopt = getopt( argc, argv, "M:K:H:" ) ) > 0 )
#if HAVE_GETOPT_LONG
int option_index = 0 ;
while( ( optopt = getopt_long( argc, argv, "M:K:H:hv",
long_options, &option_index ) ) > 0 )
#else
while ( ( optopt = getopt( argc, argv, "M:K:H:hv" ) ) > 0 )
#endif
{
switch ( optopt )
{
@@ -51,17 +76,27 @@ int main( int argc, char *argv[] )
Phi = Phi * 1000.0;
break ;
case 'H' :
sscanf( optarg, "%lf", &Phi );
sscanf( optarg, "%lf", &Phi );
break ;
case 'h' :
usage( stdout, argv[0] );
exit(0);
case 'v' :
fprintf( stdout, "%s version %s\n", argv[0], VERSION );
exit(0);
default :
usage( argv[0] );
usage( stderr, argv[0] );
exit(1);
break ;
}
}
if ( argc - optind != 1 )
usage( argv[0] );
{
fprintf( stderr, "%s: Missing argument: driver\n", argv[0] );
exit(1);
}
shgen_header( stdout );
if ( strcmp( argv[optind], "sci" ) == 0 )
@@ -69,7 +104,10 @@ int main( int argc, char *argv[] )
shgen_gensci( stdout, Phi );
}
else
usage( argv[0] );
{
fprintf( stderr, "%s: Invalid argument: driver\n", argv[0] );
exit(1);
}
return 0 ;
}

View File

@@ -9,4 +9,4 @@ noinst_PROGRAMS=gensize
gensize_SOURCES=gensize.c
include $(top_srcdir)/../../../automake/local.am
include $(top_srcdir)/../../../automake/host.am