Erich, Keith, Enoch, Christian and all other interested parties...

To double check my luck I started with a clean Debian image
(2013-wheezy-raspian.img (armhf)) on a Raspberry pi  which comes complete
with all the build utilities - having only to add automake...

$cd /home
$ sudo apt-get install automake
    ...
$ git clone git://avra.git.sourceforge.net/gitroot/avra/avra
    ...
$ cd avra/src
    ...
After a number of iterations and failed compilations, the following works:
As the git clone had no configure.in, I copied that file from the
avra-1.3.0 tarball as well as Makefile.am.  (The Makefile.linux in
src/makefiles wouldn't build the target for reasons I can't figure out -
the avra-1.3.0 Makefile.am is wonderfully simple!)  For both files I
literally copied and pasted from my Desktop into the pi.

$sudo nano configure.in
    ...
$sudo nano Makefile.am
    ...

I followed the compile instructions for linux  in the avra/doc/README.txt
file running everything as sudo:

$ sudo aclocal
$ sudo autoconf
$ sudo automake -a

automake complains about missing files NEWS, README, AUTHORS, and
ChangeLog. (Seriously?)

$ sudo touch NEWS
$ sudo touch README
$ sudo touch AUTHORS
$ sudo touch ChangeLog

$ sudo automake -a
$ sudo ./configure
$ sudo make && sudo make install

compilation fails with similar (not the same) terminal messages as Erich
shows... ending in:

args.c:124:1: error: conflicting types for ‘read_args’
args.h:77:5: note: previous declaration of ‘read_args’ was here
make: *** [args.o] Error 1

Why two declarations for 'read_args'?
Using nano, I simply commented out line 77 in args.h (at the end of the
file):

struct args *alloc_args(int arg_count);
// int read_args(struct args *args, int argc, const char *argv[]);
int add_arg(struct data_list **last_data, const char *argv);
void free_args(struct args *args);
void define_arg(struct args *args, int index, int type, char letter, char
*long$
void define_arg_int(struct args *args, int index, int type, char letter,
char *$

#endif /* end of args.h */

$ sudo make

pi@raspberrypi /home/avra/src $ sudo make install
make[1]: Entering directory `/home/avra/src'
 /bin/mkdir -p '/usr/local/bin'
  /usr/bin/install -c avra '/usr/local/bin'
make[1]: Nothing to be done for `install-data-am'.
make[1]: Leaving directory `/home/avra/src'

occasionally things work.

To be continued...



On Mon, Aug 12, 2013 at 4:12 PM, Erich Waelde <ew.fo...@nassur.net> wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Hello Mark and all,
>
> On 08/07/2013 01:55 PM, Mark Malmros wrote:
> > If my "working" avra under Debian for Amforth 5.0 is of interest to
> anyone,
> > I'll track down the minor changes I've made and pass them along. Be
> > forewarned: as with life, I have no idea how I got here or what I am
> doing,
> > but occasionally it all seems to work.
>
> Yes, definitely of interest. Now, to make this more interesting to anyone
> else lurking on the list, I thought, I'll give it a try:
>
> $ mkdir tmp.avra; cd tmp.avra
> $ cp -a ...path-to-my-old-avra/ avra-1
> $ ls
> avra-1
> $ mkdir avra-2
> $ cd avra-2
> $ git clone git://avra.git.sourceforge.net/gitroot/avra/avra
> Cloning into 'avra'...
> remote: Counting objects: 528, done.
> remote: Compressing objects: 100% (435/435), done.
> remote: Total 528 (delta 276), reused 286 (delta 75)
> Receiving objects: 100% (528/528), 1.03 MiB | 442.00 KiB/s, done.
> Resolving deltas: 100% (276/276), done.
> Checking connectivity... done
> $ cd avra/src
> $ > make -f makefiles/Makefile.linux
> gcc -Wall -O3   -c -o avra.o avra.c
> avra.c: In function ‘main’:
> avra.c:136:5: warning: passing argument 3 of ‘read_args’ from incompatible
> pointer type [enabled by default]
>      c = read_args(args, argc, argv);
>      ^
> In file included from avra.c:34:0:
> args.h:77:5: note: expected ‘const char **’ but argument is of type ‘char
> **’
>  int read_args(struct args *args, int argc, const char *argv[]);
>      ^
> gcc -Wall -O3   -c -o device.o device.c
> gcc -Wall -O3   -c -o parser.o parser.c
> gcc -Wall -O3   -c -o expr.o expr.c
> gcc -Wall -O3   -c -o mnemonic.o mnemonic.c
> gcc -Wall -O3   -c -o directiv.o directiv.c
> gcc -Wall -O3   -c -o macro.o macro.c
> gcc -Wall -O3   -c -o file.o file.c
> gcc -Wall -O3   -c -o map.o map.c
> gcc -Wall -O3   -c -o coff.o coff.c
> coff.c: In function ‘write_coff_file’:
> coff.c:167:37: warning: variable ‘StringsOffset’ set but not used
> [-Wunused-but-set-variable]
>      int LinesOffset, SymbolsOffset, StringsOffset, RawOffset;
>                                      ^
> coff.c: In function ‘parse_stabs’:
> coff.c:495:49: warning: variable ‘pEnd’ set but not used
> [-Wunused-but-set-variable]
>      char *pString, *p2, *p3, *p4, *p5, *pType, *pEnd, *pp, *pJoined;
>                                                  ^
> coff.c: In function ‘parse_stabn’:
> coff.c:646:52: warning: variable ‘pEnd’ set but not used
> [-Wunused-but-set-variable]
>      char *p1, *p2, *p3, *p4, *pLabel, *pFunction, *pEnd;
>                                                     ^
> gcc -Wall -O3   -c -o args.o args.c
> args.c:124:1: error: conflicting types for ‘read_args’
>  read_args(struct args *args, int argc, char *argv[])
>  ^
> In file included from args.c:33:0:
> args.h:77:5: note: previous declaration of ‘read_args’ was here
>  int read_args(struct args *args, int argc, const char *argv[]);
>      ^
> make: *** [args.o] Error 1
>
> So it does not build. :-(
> But my old stuff does, so let's look at the diff
>
> # --- start-of-diff ------------------------------------
> diff -Naur avra-2/avra/src/args.c avra-1/src/args.c
> - --- avra-2/avra/src/args.c    2013-08-12 21:45:02.811727443 +0200
> +++ avra-1/src/args.c   2012-02-28 20:25:32.555406533 +0100
> @@ -52,7 +52,7 @@
>  }
>
>  const struct dataset *
> - -match_dataset(const struct dataset datasets[], const char *key)
> +match_dataset(const struct dataset const datasets[], const char *key)
>  {
>         const struct dataset *ds;
>         for (ds = datasets;
> @@ -66,7 +66,7 @@
>  }
>
>  void
> - -print_dataset(const struct dataset datasets[])
> +print_dataset(const struct dataset const datasets[])
>  {
>         const struct dataset *ds;
>         printf("either ");
> @@ -121,7 +121,7 @@
>  }
>
>  int
> - -read_args(struct args *args, int argc, char *argv[])
> +read_args(struct args *args, int argc, const char *argv[])
>  {
>         int i, j, k, ok, i_old;
>         struct data_list **last_data;
> diff -Naur avra-2/avra/src/avra.c avra-1/src/avra.c
> - --- avra-2/avra/src/avra.c    2013-08-12 21:45:02.811727443 +0200
> +++ avra-1/src/avra.c   2012-09-30 15:35:12.557700410 +0200
> @@ -38,6 +38,7 @@
>  #define debug 0
>
>  const char *title =
> +  "avra: 2012-08-16 ew a6e8b2957953810dae6467eeb4905bfc5ea6c33e\n"
>    "AVRA: advanced AVR macro assembler Version %i.%i.%i Build %i (%s)\n"
>    "Copyright (C) 1998-2010. Check out README file for more info\n"
>    "\n"
> @@ -95,7 +96,7 @@
>  static struct segment_info DATA_SEG;
>  static struct segment_info EEPROM_SEG;
>
> - -int main(int argc, char *argv[])
> +int main(int argc, const char *argv[])
>  {
>    int show_usage = False;
>    struct prog_info *pi;
> diff -Naur avra-2/avra/src/device.c avra-1/src/device.c
> - --- avra-2/avra/src/device.c  2013-08-12 21:45:02.811727443 +0200
> +++ avra-1/src/device.c 2012-09-30 15:34:49.199369981 +0200
> @@ -104,6 +104,7 @@
>    { "ATmega328P",       16384,     0x100,     2048,   1024,
> DF_NO_EICALL|DF_NO_EIJMP|DF_NO_ELPM|DF_NO_ESPM},
>    {   "ATmega32",       16384,      0x60,     2048,   1024,
> DF_NO_EICALL|DF_NO_EIJMP|DF_NO_ELPM|DF_NO_ESPM},
>    {  "ATmega603",       32768,      0x60,     4096,   2048,
> DF_NO_EICALL|DF_NO_EIJMP|DF_NO_MUL|DF_NO_MOVW|DF_NO_LPM_X|DF_NO_ELPM|DF_NO_SPM|DF_NO_ESPM|DF_NO_BREAK},
> +  { "ATmega644P",       32768,     0x100,     4096,   2048,
> DF_NO_EICALL|DF_NO_EIJMP|DF_NO_ELPM|DF_NO_ESPM},
>    {  "ATmega103",       65536,      0x60,     4096,   4096,
> DF_NO_EICALL|DF_NO_EIJMP|DF_NO_MUL|DF_NO_MOVW|DF_NO_LPM_X|DF_NO_ELPM_X|DF_NO_SPM|DF_NO_ESPM|DF_NO_BREAK},
> // 137 - EICALL - EIJMP - MUL(6) - MOVW - LPM_X(2) - ELPM_X(2) - SPM - ESPM
> - BREAK = 121
>    {  "ATmega104",       65536,      0x60,     4096,   4096,
> DF_NO_EICALL|DF_NO_EIJMP|DF_NO_ESPM}, // Old name for mega128
>    {  "ATmega128",       65536,     0x100,     4096,   4096,
> DF_NO_EICALL|DF_NO_EIJMP|DF_NO_ESPM}, // 137 - EICALL - EIJMP - ESPM = 134
> (Data sheet says 133 but it's wrong)
> @@ -145,6 +146,7 @@
>                 if(!nocase_strcmp(name, device_list[i].name)) {
>                         LastDevice=i;
>              def_dev(pi);
> +
>  pi->dseg->lo_addr=device_list[LastDevice].ram_start; /* fixme: set
> ram_start in the correct place */
>                         return(&device_list[i]);
>                 }
>                 i++;
> @@ -188,8 +190,7 @@
>         return(True);
>  }
>
> - -void
> - -list_devices(void)
> +void list_devices()
>  {
>    int i = 1;
>    printf("Device name | Flash size | RAM start | RAM size | EEPROM size |
>  Supported\n"
> diff -Naur avra-2/avra/src/stdextra.c avra-1/src/stdextra.c
> - --- avra-2/avra/src/stdextra.c        2013-08-12 21:45:02.811727443 +0200
> +++ avra-1/src/stdextra.c       2012-02-28 20:25:32.559406275 +0100
> @@ -191,7 +191,7 @@
>  snprint(char ** buf, size_t *limit, const char * const str) {
>         int rc;
>         rc = snprintf(*buf, *limit, "%s", str);
> - -     if (rc <= (int)*limit)
> +       if (rc <= *limit)
>                 *buf += rc, *limit -= rc;
>         else
>                 *limit = 0;
> @@ -213,7 +213,7 @@
>                         snprint(&ptr, &limit, ", ");
>         }
>         rc = snprintf(ptr, limit, "\"%s\"", str_list[i]);
> - -     if (rc <= (int)limit)
> +       if (rc <= limit)
>                 ptr += rc, limit -= rc;
>         else
>                 limit = 0;
> @@ -222,8 +222,7 @@
>  }
>
>  void
> - -test_print_list(void)
> - -{
> +test_print_list() {
>         static const char * const test_value[] = {
>                 "DEFAULT",
>                 "IGNORE",
> # --- end-of-diff --------------------------------------
>
> args.c has received a few "const" modifiers.
> avra.c has a change in the version message and one const
> stdextra.c has a missing cast (int) and a changed function header.
>
> all of these look innocent.
>
> devices.c has received an additional entry for atmega644p and
> the fix I already mentioned.
>
> Applying this patch makes avra compile.
>
> $ make -f makefiles/Makefile.linux
> gcc -Wall -O3   -c -o avra.o avra.c
> gcc -Wall -O3   -c -o device.o device.c
> gcc -Wall -O3   -c -o parser.o parser.c
> gcc -Wall -O3   -c -o expr.o expr.c
> gcc -Wall -O3   -c -o mnemonic.o mnemonic.c
> gcc -Wall -O3   -c -o directiv.o directiv.c
> gcc -Wall -O3   -c -o macro.o macro.c
> gcc -Wall -O3   -c -o file.o file.c
> gcc -Wall -O3   -c -o map.o map.c
> gcc -Wall -O3   -c -o coff.o coff.c
> coff.c: In function ‘write_coff_file’:
> coff.c:167:37: warning: variable ‘StringsOffset’ set but not used
> [-Wunused-but-set-variable]
>      int LinesOffset, SymbolsOffset, StringsOffset, RawOffset;
>                                      ^
> coff.c: In function ‘parse_stabs’:
> coff.c:495:49: warning: variable ‘pEnd’ set but not used
> [-Wunused-but-set-variable]
>      char *pString, *p2, *p3, *p4, *p5, *pType, *pEnd, *pp, *pJoined;
>                                                  ^
> coff.c: In function ‘parse_stabn’:
> coff.c:646:52: warning: variable ‘pEnd’ set but not used
> [-Wunused-but-set-variable]
>      char *p1, *p2, *p3, *p4, *pLabel, *pFunction, *pEnd;
>                                                     ^
> gcc -Wall -O3   -c -o args.o args.c
> gcc -Wall -O3   -c -o stdextra.o stdextra.c
> gcc -static -o avra avra.o device.o parser.o expr.o mnemonic.o directiv.o
> macro.o file.o map.o coff.o args.o stdextra.o -s
>
> $ ./avra --version
> avra: 2012-08-16 ew a6e8b2957953810dae6467eeb4905bfc5ea6c33e
> AVRA: advanced AVR macro assembler Version 1.3.0 Build 1 (8 May 2010)
> Copyright (C) 1998-2010. Check out README file for more info
>
>    AVRA is an open source assembler for Atmel AVR microcontroller family
>    It can be used as a replacement of 'AVRASM32.EXE' the original assembler
>    shipped with AVR Studio. We do not guarantee full compatibility for
> avra.
>
>    AVRA comes with NO WARRANTY, to the extent permitted by law.
>    You may redistribute copies of avra under the terms
>    of the GNU General Public License.
>    For more information about these matters, see the files named COPYING.
>
> I did this on 3 systems: Debian/unstable on amd64 and i486; Debian/squeeze
> on armv7l (ecafe)
> with identical results so far.
>
> So next I need to compile amforth with the executable and compare
> the hexfiles to those of wine+avrasm2.
>
> Cheers,
> Erich
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.14 (GNU/Linux)
> Comment: Using GnuPG with Icedove - http://www.enigmail.net/
>
> iQIcBAEBAgAGBQJSCUGyAAoJEHx024vXVRNQ46wP/irQeEEi4WtFl0BNVd5L7fD6
> ZaZGr/lGYZz/4QBlGDWvGCXRfa6d0moJrMrlfgcQ9JirkN+ElVfIRA9E5Vc3KvQF
> f3vjjA0EQ3tnrOG9IxQXG1P6lbLIU0Jib4z3S4PLuyPd/SyBoHcWTV207hRfqP9p
> hRwCUMXJw3tEgQz4mzE/3nLddKnyELMsEbsqWAvaRwYne5tKKN8upwQzSkz2AG73
> XPgzhkN05O3SPVkF/ghe+8myF0KSPAxW0LZqlG5i0RYGx/KG9BLQONjyjoThjfJB
> mCv7wQ0unWZPrSLkvFgCcwHJHTLF+BwP+iazq4eZkpeBi+rRwwgwHTKfaIDOj6lN
> 5u0p+pFFyQKoSYmDzawSVha0Pw72HscHLNzbgVOXOrRvX6DiZcCJ08Fl/BGTky7p
> gQj+zCHH/aYzte/CF0ypqef01NxnOl+un4RvOgGdkz8su2d1umaHpa/PTDEkZ8di
> gWrlO1Cr1IIzLOZlxNtJ9ObvuKUwVL83XN920lLm+4w2O0G8VR++B4bw1QtshRQt
> fo3wJjan8OO/H5AHzd68f8OgkpObjwkhx6m6HDT21WigUsBEMQ36P2+cAS+qq6uo
> vifigAQ90AajZfNslCNJxe4fOi7LKMHbixRzfxZG7VOwJwwkOQ35BAS/6GOZZcZc
> 1+wua+OTJPYbRRlnkfKH
> =gs2Q
> -----END PGP SIGNATURE-----
>
>
> ------------------------------------------------------------------------------
> Get 100% visibility into Java/.NET code with AppDynamics Lite!
> It's a free troubleshooting tool designed for production.
> Get down to code-level detail for bottlenecks, with <2% overhead.
> Download for free and get started troubleshooting in minutes.
> http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk
> _______________________________________________
> Amforth-devel mailing list for http://amforth.sf.net/
> Amforth-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/amforth-devel
>
------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite!
It's a free troubleshooting tool designed for production.
Get down to code-level detail for bottlenecks, with <2% overhead. 
Download for free and get started troubleshooting in minutes. 
http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk
_______________________________________________
Amforth-devel mailing list for http://amforth.sf.net/
Amforth-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/amforth-devel

Reply via email to