1%% /u/sy/beebe/tex/bibclean/bibclean-2.16/README, Tue Jan 1 08:59:06 2013
2%% Edit by Nelson H. F. Beebe <beebe@math.utah.edu>
3%% /u/sy/beebe/tex/bibclean/2-11/README, Mon Oct 2 10:01:31 1995
4%% Edit by Nelson H. F. Beebe <beebe@sunrise>
5
6========================================================================
7
8==========
9Jump start
10==========
11
12As with most GNUware, you can build, test, and install this program on
13most UNIX systems by these simple steps
14
15csh et amici:
16 setenv CC ...your favorite C or C++ compiler...
17 ./configure && make all check install
18
19sh et amici:
20 CC=...your favorite C or C++ compiler...
21 export CC
22 ./configure && make all check install
23
24If you don't set the CC environment variable, then gcc (or cc, if gcc
25is not available) will be assumed.
26
27If you wish to undo a "make install", just do "make uninstall"; this
28will remove any files in system directories put there by "make
29install".
30
31See below for further details, and for instructions for non-UNIX systems.
32
33This program normally records the username and hostname of the builder;
34software distributions may wish to suppress that information by
35undefining HOST and USER at in the make command:
36
37 ./configure && env HOST= USER= make all check install
38
39
40============
41Introduction
42============
43
44This directory contains bibclean, a BibTeX prettyprinter, portability
45verifier, and syntax checker. It can be used to find errors in .bib
46files, as well as to standardize their format for readability and
47editing convenience. It can also be used to convert Scribe-format
48bibliographies to BibTeX form.
49
50Binary executables for IBM PC DOS, DEC Alpha OpenVMS, DEC VAX VMS, and
51Intel x86 Linux may be included in the distribution.
52
53If you do not require either the IBM PC DOS or LINUX, or the DEC VMS
54(Alpha and VAX) versions, then you can save about 2.5MB of disk space
55by deleting the ibmpc and vms subdirectories.
56
57The default pattern matching in bibclean.c is selected by
58HAVE_PATTERNS; with it, no regular-expression library support is
59needed. Should you wish to compile with regular-expression support
60instead of the HAVE_PATTERNS code, and your system does not have
61compile()/step (HAVE_REGEXP), or re_comp()/re_exec() (HAVE_RECOMP),
62you may be able to use the regex-?-??.tar.Z distribution from the Free
63Software Foundation, available on prep.ai.mit.edu in /pub/gnu.
64
65In most cases, the HAVE_PATTERNS code is recommended, since it will
66give identical results across all machines. I was prompted to write
67it after discovering that there was considerable variety in the
68regular expression library codes that resulted in different matching
69on different machines, a most unsatisfactory situation.
70
71Please report all problems, suggestions, and comments to the author:
72
73 Nelson H. F. Beebe
74 University of Utah
75 Department of Mathematics, 110 LCB
76 155 S 1400 E RM 233
77 Salt Lake City, UT 84112-0090
78 USA
79 Tel: +1 801 581 5254
80 FAX: +1 801 581 4148
81 Email: beebe@math.utah.edu, beebe@acm.org, beebe@computer.org (Internet)
82 WWW URL: http://www.math.utah.edu/~beebe/
83
84
85============
86Installation
87============
88
89Starting with version 2.10.1, bibclean has been adapted to use the GNU
90autoconf automatic configuration system for UNIX installations.
91
92GNU autoconf is run at the author's site to produce the configure
93script from configure.ac.
94
95The configure script is run at each installer's UNIX site to produce
96Makefile from Makefile.in, and config.h from config.hin. The
97configure script is a large (1800+ lines) Bourne shell program that
98investigates various aspects of the local C implementation, and
99records its conclusions in config.h. Interestingly, its probes
100uncovered a bug in one compiler: lcc 3.4b on Sun Solaris 2.x has an
101incorrect definition of toupper() in its ctype.h!
102
103autoconf, at least at the current 2.4 version, is not as C++-aware as
104it should be. The Makefile must carry out minor edits of the
105configure script to get it to even work with C++ compilers. The small
106test programs run by configure to determine the existence of assorted
107Standard C library functions all lead to incorrect conclusions for
108config.h, because they intentionally contain function prototypes with
109different argument types. Since C++ functions are compiled into
110external names that encode the function and argument types, along with
111the function name, these prototypes produce references to non-existent
112functions, causing program linking to fail. Fortunately, I've been
113able to fix this problem too with additional automatic edits, all
114carried out by "make configure".
115
116Should you do a "make maintainer-clean" [NOT recommended, except at the
117author's site], the configure script will be deleted, and you will
118need recent versions of both GNU m4 and autoconf correctly installed
119to reconstruct things, which can be done this way:
120
121 autoconf # Regenerate unedited configure
122 ./configure # Regenerate config.h and Makefile
123 rm configure # delete configure
124 make configure # Regenerate edited configure
125
126For convenience and safety, the distribution includes a subdirectory
127named save that contains read-only copies of the files Makefile,
128config.h, and configure created by autoconf and "make configure".
129This will allow recovery from a lost or damaged configure file.
130
131Suitable hand-crafted config.h files are provided for non-UNIX
132systems, and in the unlikely event of a failure of the configure
133script on a UNIX system, config.h can be manually produced from a copy
134of config.hin with a few minutes' editing work. If you do this,
135remember to save a copy of your config.h under a different name,
136because running configure will destroy it. If you have GNU autoconf
137installed (the installation is very simple and source code is
138available from prep.ai.mit.edu:/pub/gnu/autoconf-x.y.tar.gz), you
139might try augmenting config.hin instead, then run autoconf and
140configure.
141
142Thus, on UNIX, installation normally consists of just two steps
143(assuming a csh-compatible shell):
144
145 setenv CC ...your favorite C or C++ compiler...
146 ./configure && make all check install
147
148If you like, add OPT='your favorite optimization flags' to the make
149command; by default, only -g (debug) is assumed. If your compiler
150won't accept -g with other optimization levels, then set CFLAGS
151instead of OPT on the command line; be sure NOT to override any
152non-optimizing flags in the CFLAGS set in the Makefile.
153
154The GNU standard installation directories /usr/local/bin for binaries,
155and /usr/local/man/man1 for manual pages are assumed. The prefix
156/usr/local can be overridden by providing an alternate definition on
157the command line:
158
159 make prefix=/some/other/path install
160
161After installation, you can do
162 make distclean
163to restore the directories to their distribution state. You should
164also do this between builds for different architectures from the same
165source tree; neglecting to do to will almost certainly lead to
166failure, because the config.cache file created by configure will lead
167to an incorrect config.h for the next build.
168
169
170============
171UNIX Systems
172============
173
174The code can be compiled with either C (K&R or ISO/ANSI Standard C) or
175C++ compilers. With some C++ compilers, it may be necessary to supply
176additional switches for force the compiler to stay in C++ mode, rather
177than reverting to C mode (e.g. on DEC Alpha OSF/1, you must do
178setenv CC "cxx -x cxx").
179
180On UNIX systems, the only changes that you are likely to need in the
181Makefile are the settings of CC and CFLAGS, and possibly, DEFINES, and
182if you wish to do "make install", the settings of bindir, MANDIR, and
183MANEXT.
184
185If you are installing bibclean on a new system, you should definitely
186run "make check" before installing it on your system. For the target
187test-bibtex-2, latex is needed. For test-bibtex-2 and test-scribe-1,
188bibtex is needed. Sample output of "make check" from a UNIX system
189is given below.
190
191The code has been tested under more than 55 different C and C++
192compilers, and is in regular use to maintain the TeX User Group
193bibliography collection stored on ftp.math.utah.edu:/pub/tex/bib, as
194well as several other local bibliographies. These files total more
195than 1.08M lines and 62K bibliography entries. Some of these
196bibliographies are mirrored to the Comprehensive TeX Archive Network
197(CTAN) hosts. Do "finger ctan@pip.shsu.edu" to find a CTAN site on
198the Internet near you.
199
200bibclean is also used for the BibNet Project, which collects
201bibliographies in numerical analysis. The master collection is
202available on ftp.math.utah.edu:/pub/bibnet, and is mirrored from there
203to netlib servers at AT&T and Oak Ridge National Laboratory.
204
205If you port bibclean to a new system, please select maximal error and
206warning messages in your compiler, to better uncover problems. If you
207find massive numbers of errors complaining about function and argument
208type mismatches, it is likely that this can be remedied by suitable
209modifications of config.h. As C implementations move towards
210conformance with the December 1989 ISO/ANSI C Language Standard, the C
211language is a moving target that must be tracked by config.h, which is
212why that file is normally automatically generated on UNIX systems by
213the configure script. With C compilers, you can safely ignore
214complaints about implicit declaration of library functions; they are
215caused by deficiencies in the vendor-provided header files.
216
217If you have a C++ compiler, please try that as well. This code has
218been successfully compiled under at least 19 C++ compilers, and the
219stricter type checking has uncovered problems that slipped past other
220compilers.
221
222These programs have been successfully built with C and C++ compilers
223and tested on these systems for the 2.10.1 release:
224
225 DECstation 5000 ULTRIX 4.2 cc, gcc, g++, lcc
226 DEC Alpha OSF/1 3.0, 3.2c cc, c89, cxx, gcc, g++
227 HP 9000/375 BSD 4.3 cc, CC
228 HP 9000/735 HP-UX 9.0 cc, c89, CC, gcc, g++
229 IBM RS/6000 AIX 3.2 cc, c89, xlC, gcc, g++
230 Intel 486 Linux 1.3.15 gcc, g++
231 MIPS RC6280 RISCos 2.1.1AC cc
232 NeXT 68040 Mach 3.0 cc, cc -ObjC, gcc, g++
233 SGI 4D/210 IRIX 4.0.5c cc, gcc, lcc
234 SGI Indigo/2 IRIX 5.3 cc, CC, gcc, g++, lcc
235 SGI Power Challenge IRIX 6.0.1 cc, CC
236 Sun SPARCstation Solaris 2.3,2.4 cc, CC, gcc, g++, lcc
237 Sun SPARCstation SunOS 4.1.3 acc, cc, CC, gcc
238
239Further details are given below. Where builds have failed, it is
240usually because of conflicts between system header files.
241
242The author uses the build-all.sh script for these tests; it tries
243builds with every known compiler on the development systems. If your
244UNIX system has other compilers that can be tested, please send their
245full path names to the author.
246
247
248==========
249IBM PC DOS
250==========
251
252The ibmpc/dos/README file contains details of the builds and tests
253of bibclean under 8 IBM PC DOS C and C++ compilers, and instructions
254for building and testing bibclean with other compilers.
255
256Since bibclean uses no floating-point arithmetic, and PC DOS has no
257shared libraries, I expect that the executables will run on any
258version of DOS greater than 4.0. They may also run on earlier
259versions. At the time of writing, MS-DOS 6.22 is current, and the
260bibclean executables work fine on it.
261
262
263=================
264DEC Alpha OpenVMS
265=================
266
267The vms/alpha subdirectory contains these files for DEC Alpha OpenVMS:
268
269 bibclean.exe bibclean executable program
270 config.h hand-coded configuration file
271 recomp.com do @recomp foo to recompile foo.c
272 vmsclean.com do @vmsclean to cleanup after a build
273 vmsmake.com do @vmsmake to build bibclean
274 vmstest.com do @vmstest to test bibclean
275
276You will have to change one line in vmstest.com to define the disk
277location of bibclean.exe in the foreign command symbol for bibclean.
278
279Unlike the UNIX "make check", execution of vmstest.com does not
280require that latex or bibtex be installed on your system. [I didn't
281have either on the Alpha OpenVMS system that I built bibclean on.]
282
283
284===========
285DEC VAX VMS
286===========
287
288The vms/vax/README file contains details of the building and testing
289of bibclean on VAX VMS 6.1
290
291Unlike the UNIX "make check", execution of vmstest.com does not require
292that latex or bibtex be installed on your system. [I didn't have
293either on the VAX VMS system that I built bibclean on.]
294
295On versions of VMS before 6.1, you may find differences in the vmstest
296output between testbib1.bok (correct Sun) and testbib1.bib (VAX VMS);
297characters with octal values 211--215 and 240 disappear from the VAX
298VMS output. The reason is that on VAX VMS 5.4 (and likely other
299versions of VAX VMS) isspace() from <ctype.h> classifies those
300characters as spaces. This problem does NOT exist on DEC Alpha
301OpenVMS 1.5, or in VMS 6.1. As long as your .bib files do not use
302those six characters, execution should be correct; for portability,
303.bib files should restrict themselves to ASCII/ISO-8859 characters in
304the range 32--127, plus newline and tab.
305
306
307===================================
308Sample "make check" Output for UNIX
309===================================
310
311Here is a log of "make check" on Sun Solaris 2.5 using the native C++
312compiler, CC:
313
314 CC -c -I. -I. -DHAVE_CONFIG_H -g romtol.c
315 /bin/rm -f match.O
316 if [ -f match.o ] ; then /bin/mv match.o match.O ; fi
317 /bin/rm -f match.o
318 CC -I. -I. -DHAVE_CONFIG_H -g -DTEST -o match \
319 match.c romtol.o
320 /bin/rm -f match.o
321 if [ -f match.O ] ; then /bin/mv match.O match.o ; fi
322
323 ===================== begin match test =======================
324
325 ./match <match.dat >match.lst
326 There should be no differences found:
327 diff match.lok match.lst
328
329 ====================== end match test ========================
330
331 /bin/rm -f romtol.O
332 if [ -f romtol.o ] ; then /bin/mv romtol.o romtol.O ; fi
333 /bin/rm -f romtol.o
334 CC -I. -I. -DHAVE_CONFIG_H -g -DTEST -o romtol romtol.c
335 /bin/rm -f romtol.o
336 if [ -f romtol.O ] ; then /bin/mv romtol.O romtol.o ; fi
337
338 ===================== begin romtol test ======================
339
340 ./romtol <romtol.dat >romtol.lst
341 There should be no differences found:
342 diff romtol.lok romtol.lst
343
344 ====================== end romtol test =======================
345
346 CC -c -I. -I. -DHAVE_CONFIG_H -g bibclean.c
347 CC -c -I. -I. -DHAVE_CONFIG_H -g chek.c
348 CC -c -I. -I. -DHAVE_CONFIG_H -g do.c
349 CC -c -I. -I. -DHAVE_CONFIG_H -g fix.c
350 CC -c -I. -I. -DHAVE_CONFIG_H -g fndfil.c
351 CC -c -I. -I. -DHAVE_CONFIG_H -g isbn.c
352 CC -c -I. -I. -DHAVE_CONFIG_H -g keybrd.c
353 CC -c -I. -I. -DHAVE_CONFIG_H -g match.c
354 CC -I. -I. -g -c -DHOST=\"`hostname`\" -DUSER=\"beebe\" option.c
355 CC -c -I. -I. -DHAVE_CONFIG_H -g strist.c
356 CC -c -I. -I. -DHAVE_CONFIG_H -g strtol.c
357 CC -o bibclean -g bibclean.o chek.o do.o fix.o fndfil.o isbn.o keybrd.o match.o option.o romtol.o strist.o strtol.o
358 ild: (Performing full relink) too many files changed
359
360 ==================== begin BibTeX test 1 =====================
361
362
363 ./bibclean -init-file bibclean.ini testbib1.org >testbib1.bib 2>testbib1.err
364
365 There should be no differences found:
366 diff testbib1.bok testbib1.bib
367
368 There should be no differences found:
369 diff testbib1.eok testbib1.err
370
371 ===================== end BibTeX test 1 ======================
372
373
374 ==================== begin BibTeX test 2 =====================
375
376
377 ./bibclean -init-file bibclean.ini -no-check-values testbib2.org >testbib2.bib 2>testbib2.err
378
379 There should be no differences found:
380 diff testbib2.bok testbib2.bib
381
382 There should be no differences found:
383 diff testbib2.eok testbib2.err
384
385 latex testbib2.ltx >/dev/null
386
387 Expect 6 BibTeX warnings:
388 bibtex testbib2
389 Warning--empty year in Bennett
390 Warning--empty year in Cejchan
391 Warning--there's a number but no volume in Dubowsky:75
392 Warning--empty institution in Diver:88a
393 Warning--empty booktitle in Diver:88
394 Warning--empty year in Diver
395 (There were 6 warnings)
396
397 latex testbib2.ltx >/dev/null
398
399 latex testbib2.ltx
400 This is TeX, Version 3.1415 (C version 6.1)
401 (testbib2.ltx
402 LaTeX Version 2.09 <14 January 1991>
403 (/usr/local/lib/tex/latex/article.sty
404 Document Style `article' <16 Mar 88>.
405 (/usr/local/lib/tex/latex/art10.sty)) (testbib2.aux) (testbib2.bbl [1] [2]
406 [3]
407 Underfull \hbox (badness 1024) in paragraph at lines 261--264
408 [] []\tenrm L. M. Berkovich, V. P. Gerdt, Z. T. Kos-tova, and M. L.
409 [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16]) [17] (testbib2.aux)
410 )
411 (see the transcript file for additional information)
412 Output written on testbib2.dvi (17 pages, 49032 bytes).
413 Transcript written on testbib2.log.
414
415 ===================== end BibTeX test 2 ======================
416
417
418 ==================== begin BibTeX test 3 =====================
419
420
421 ./bibclean -init-file bibclean.ini -fix-font-change testbib3.org >testbib3.bib 2>testbib3.err
422
423 There should be no differences found:
424
425 There should be no differences found:
426 diff testbib3.eok testbib3.err
427
428 ===================== end BibTeX test 3 ======================
429
430
431 ==================== begin BibTeX test 4 =====================
432
433
434 ./bibclean -init-file bibclean.ini -fix-font-change testbib4.org >testbib4.bib 2>testbib4.err
435
436 There should be no differences found:
437
438 There should be no differences found:
439 diff testbib4.eok testbib4.err
440
441 ===================== end BibTeX test 4 ======================
442
443
444 ==================== begin BibTeX test 5 =====================
445
446
447 ./bibclean -init-file bibclean.ini -German-style testbib5.org >testbib5.bib 2>testbib5.err
448
449 There should be no differences found:
450
451 There should be no differences found:
452 diff testbib5.eok testbib5.err
453
454 ===================== end BibTeX test 5 ======================
455
456
457 ==================== begin BibTeX test 6 =====================
458
459 ./bibclean -init-file bibclean.ini testisxn.org >testisxn.bib 2>testisxn.err
460
461 There should be no differences found:
462 diff testisxn.bok testisxn.bib
463
464 There should be no differences found:
465 diff testisxn.eok testisxn.err
466
467 ===================== end BibTeX test 6 ======================
468
469
470 ==================== begin BibTeX test 7 =====================
471
472 ./bibclean -init-file bibclean.ini testcodn.org >testcodn.bib 2>testcodn.err
473
474 There should be no differences found:
475 diff testcodn.bok testcodn.bib
476
477 There should be no differences found:
478 diff testcodn.eok testcodn.err
479
480 ===================== end BibTeX test 7 ======================
481
482
483 ==================== begin Scribe test 1 =====================
484
485
486 ----------------------------------------------------
487
488 ./bibclean -init-file bibclean.ini -scribe -no-check testscr1.org >testscr1.bib
489
490 There should be no differences found:
491 diff testscr1.bok testscr1.bib
492
493 There should be no differences found:
494 diff testscr1.eok testscr1.err
495
496 Expect 5 BibTeX warnings
497 bibtex testscr1
498 Warning--empty publisher in hanson-67
499 Warning--can't use both volume and number fields in kendeigh-52
500 Warning--empty author in singer-portion-chapter
501 Warning--empty author in singer-portion-volume
502 Warning--can't use both author and editor fields in wright-63
503 (There were 5 warnings)
504
505 ----------------------------------------------------
506
507 ./bibclean -init-file bibclean.ini -scribe -no-check testscr2.org >testscr2.bib
508
509 There should be no differences found:
510 diff testscr2.bok testscr2.bib
511
512 There should be no differences found:
513 diff testscr2.eok testscr2.err
514
515 There should be no BibTeX warnings:
516 bibtex testscr2
517 ===================== end Scribe test 1 ======================
518
519
520 ==================== begin Scribe test 2 =====================
521
522 ./bibclean -init-file bibclean.ini -scribe -file -no-check testscr2.org \
523 >testscr2.bib 2>testscr2.err
524
525 There should be no differences found:
526 diff testscr2.bok testscr2.bib
527
528 There should be no differences found:
529 diff testscr2.eok testscr2.err
530
531
532 ./bibclean -init-file bibclean.ini -scribe -file -no-check -no-par testscr2.org \
533 >testscr2.bi2 2>testscr2.er2
534 make: [test-scribe-2] Error 1 (ignored)
535
536 There should be no differences found:
537 diff testscr2.bo2 testscr2.bi2
538
539 There should be no differences found:
540 diff testscr2.eo2 testscr2.er2
541
542 ===================== end Scribe test 2 ======================
543
544
545 ==================== begin Scribe test 3 =====================
546
547 ./bibclean -init-file bibclean.ini -scribe -no-check testscr3.org >testscr3.bib 2>testscr3.err
548
549 There should be no differences found:
550 diff testscr3.bok testscr3.bib
551
552 There should be no differences found:
553 diff testscr3.eok testscr3.err
554
555 ===================== end Scribe test 3 ======================
556
557
558
559=====================================
560Details of UNIX installation attempts
561=====================================
562
563Clean builds and validations with "setenv CC xxx && ./configure &&
564make && make check" have been achieved on these systems:
565
566 DEC Alpha OSF/1 3.0
567 /bin/cc
568 /usr/ccs/bin/c89
569 /usr/ccs/bin/cc
570 /usr/local/bin/g++
571 /usr/local/bin/gcc
572 /usr/ucb/cc
573
574 For /bin/cxx, compiler switches to c89 for .c files, and
575 then gets an error which arises because
576 /usr/include/sys/signal.h:468: error: Missing ")".
577 stack_t is not defined by types.h except in Standard C
578 or C++ mode.
579
580 Recent versions of cxx have switch "-x cxx" to force
581 use of C++ compilation for .c files, but older ones do
582 not. On one such old system, I made an experiment
583 with changing extensions from .c to .cxx and updating
584 the Makefile accordingly. The build failed with:
585 ``Fatal: An attempt to allocate memory failed.''
586 during compilation of bibclean.cxx, and with
587 conflicting declarations of swab() from
588 /usr/include/unistd.h and /usr/include/cxx/string.h
589 during compilation of fndfil.cxx. These are both
590 vendor problems that may be fixed in newer releases of
591 the C++ compiler.
592
593 DEC Alpha OSF/1 3.2C (Digital UNIX)
594 /usr/ucb/cxx
595
596 The problems with cxx experienced on OSF/1 3.0 have
597 all disappeared, and I regularly use "cxx -x cxx" as
598 my C/C++ compiler of choice on this system. [The
599 DEC 2100-5/250 on which the compiler is installed has
600 3 CPUs and 2GB of RAM, and each CPU does 250Mflops in
601 benchmarks, so it is a terrific development system!]
602
603 DECstation ULTRIX 4.3
604 /bin/cc
605 /usr/local/bin/g++
606 /usr/local/bin/gcc
607
608 Got many "warning: missing prototype" messages for
609 functions in system header files (because they are
610 still K&R style) with:
611 /usr/local/bin/lcc -A -A
612 but build completed and validated.
613
614 HP 9000/735 HP-UX 9.0.3
615 /bin/cc
616 /bin/c89
617 /usr/bin/CC
618 /usr/local/bin/g++
619 /usr/local/bin/gcc
620
621 For /bin/cc, the compiler warns
622
623 cc: "bibclean.c", line 3723: warning 30: Character
624 constant contains undefined escape sequence.
625 cc: "bibclean.c", line 3730: warning 30: Character
626 constant contains undefined escape sequence.
627
628 but the escape sequence ('\a') IS correctly translated.
629
630 HP 9000/735 HP-UX 10.0.1
631 /bin/cc
632 /bin/c89
633 /usr/bin/CC
634 /usr/local/bin/g++
635 /usr/local/bin/gcc
636
637 The warnings from /bin/cc no longer appear.
638
639 IBM RS/6000 AIX 3.2.5
640 /bin/cc
641 /bin/xlC
642 /usr/bin/c89
643 /usr/local/bin/g++
644 /usr/local/bin/gcc
645
646 IBM RS/6000 AIX 4.1
647 /bin/c89
648 /bin/xlC
649 /usr/bin/c89
650
651 Intel 486 Linux 1.3.15 and 1.3.97 (POSIX)
652 /usr/bin/g++
653 /usr/bin/gcc
654
655 MIPS RC 6280 RISCos 2.1.1AC
656 /bin/cc
657
658 NeXT Turbostation Mach 3.0
659 Compilation with any compiler produces failing links
660 with error: /bin/ld: multiple definitions of symbol _strtol
661 The configure.ac script attempts to deal with this by
662 AC_REPLACE_FUNCS(strtol), but that results in the created
663 Makefile having LIBOBJS=strtol. Building with
664 make LIBOBJS=
665 provides a temporary workaround.
666
667 /usr/local/bin/gcc
668 /bin/cc
669 /usr/local/bin/g++
670
671 Many compilation "warning: missing prototype", plus
672 bibclean.c:2774: undeclared identifier `__ctype'
673 bibclean.c:3158: type error: pointer expected
674 ...
675 for
676 /usr/local/bin/lcc -A -A
677 lcc on this system is an old version (1.9); the
678 current lcc elsewhere is 3.4b, but unfortunately,
679 lcc 3.x dropped support for the Motorola 68xxx
680 code generator. I'm therefore writing off lcc
681 on the NeXT as not viable for software development.
682
683 NeXT Turbostation Mach 3.1
684 /bin/cc
685 /usr/local/bin/g++
686 /usr/local/bin/gcc
687
688 Silicon Graphics Indigo IRIX 4.0.5F
689
690 /usr/bin/cc
691 /usr/local/bin/gcc
692 /usr/local/bin/lcc -A -A
693
694 Compilation fails with
695 /usr/local/bin/g++
696 because of conflicts between system header files and
697 g++ built-in library function declarations.
698
699 Silicon Graphics Indigo-2 IRIX 5.3
700 /bin/cc
701 /usr/local/bin/g++
702 /usr/local/bin/gcc
703 /usr/local/bin/lcc -A -A
704
705 Silicon Graphics Power Challenge IRIX 6.0.1
706 /bin/CC
707 /bin/cc
708
709 For
710 /usr/local/bin/g++
711 and
712 /usr/local/bin/gcc
713 (2.7.0) get assembler errors from generated code.
714
715 Sun SPARC 4/380 Sun SunOS 4.1.3
716 /bin/cc
717 /usr/lang/acc
718 /usr/lang/CC
719 /usr/local/bin/gcc
720 /usr/ucb/cc
721
722 Linking fails with
723 /usr/local/bin/g++
724 because of multiply defined symbols. These arise
725 because g++ generates inline C-style interfaces
726 to library functions like strchr(), but on this
727 system, the library also contains C-style functions
728 with the same name, so linking produces multiple
729 definitions, and failure. Curiously, g++ 2.7.0 on
730 other systems, including Sun Solaris 2.x, does not
731 generate these interface functions, and so does not
732 cause problems there.
733
734 Compilation fails with
735 /usr/local/bin/lcc -A -A
736 because of a conflict in the definition of size_t
737 between /usr/include/sys/stdtypes.h and
738 /usr/local/include/lcc-3.4b/sparc-sun/stdlib.h.
739
740 Sun SPARC 20 Sun Solaris 2.3
741 /opt/SUNWspro/bin/cc
742 /opt/SUNWspro/bin/CC
743 /usr/local/bin/gcc
744 /usr/ucb/cc
745
746 Linking failed for
747 /usr/local/bin/g++
748 with MANY multiply-defined symbols (e.g. memchr in bibclean
749 and fndfil)
750
751 No problem on Solaris 2.4 with g++!
752
753 The reason that configure says
754 checking for strcspn... (cached) no
755 checking for strdup... (cached) no
756 checking for strspn... (cached) no
757 checking for strstr... (cached) no
758 checking for strtod... (cached) no
759 checking for strtol... (cached) no
760 is that it generates a test program with
761 char $ac_func();
762 as the prototype. With C++, that is a separate
763 function that cannot be found in the library. That is
764 also why LIBOBJS is being set incorrectly.
765
766 *** Need to check out g++ and lcc on this system ***
767 Build failed for
768 /usr/local/bin/lcc -A -A
769 with message
770 configure: error: can not run test program while cross compiling
771 This happens because configure uses -g, which blows
772 compilation because of unknown opcode ".stabd" errors
773 in assembler.
774
775 Can be fixed by manually changing configure line
776 test "${CFLAGS+set}" = set || CFLAGS="-g"
777 to
778 test "${CFLAGS+set}" = set || CFLAGS=""
779
780 There is another problem: STDC_HEADERS is not defined,
781 because a test program created by configure detects an
782 error in toupper(). This was traced to a bug in lcc's
783 ctype.h, and has been reported to the lcc-bugs list.
784 A manual patch to config.h solves the problem.
785
786===============================[The End]===============================
787