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