summaryrefslogtreecommitdiffstats
path: root/tools/cpu/sh
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--tools/cpu/sh/Makefile.am18
-rw-r--r--tools/cpu/sh/configure.in5
-rw-r--r--tools/cpu/sh/shgen.c78
3 files changed, 73 insertions, 28 deletions
diff --git a/tools/cpu/sh/Makefile.am b/tools/cpu/sh/Makefile.am
index 2eb28edb70..541f1758b5 100644
--- a/tools/cpu/sh/Makefile.am
+++ b/tools/cpu/sh/Makefile.am
@@ -2,14 +2,18 @@
## $Id$
##
-AUTOMAKE_OPTIONS = foreign 1.4
+AUTOMAKE_OPTIONS = foreign 1.4 no-installman
ACLOCAL_AMFLAGS = -I $(RTEMS_TOPdir)/aclocal
-noinst_PROGRAMS=shgen
+noinst_PROGRAMS = shgen
-shgen_SOURCES = \
-sci.h \
-sci.c \
-shgen.c
+shgen_SOURCES = 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
diff --git a/tools/cpu/sh/configure.in b/tools/cpu/sh/configure.in
index 0b718ef87e..368e95b79b 100644
--- a/tools/cpu/sh/configure.in
+++ b/tools/cpu/sh/configure.in
@@ -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
diff --git a/tools/cpu/sh/shgen.c b/tools/cpu/sh/shgen.c
index c101388ad8..6fc262d694 100644
--- a/tools/cpu/sh/shgen.c
+++ b/tools/cpu/sh/shgen.c
@@ -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 ;
}