238 lines
10 KiB
Plaintext
238 lines
10 KiB
Plaintext
(ER - 7/08/99)
|
|
|
|
These are a few notes on the autoconf porting that is being done.
|
|
|
|
Autoconf automaticcaly provides #defines (in config.h) that describe
|
|
the system that ng-spice is being compiled on. Thus, all the os_xxx.h
|
|
files should no longer be necessary.
|
|
|
|
|
|
Here is a (as complete as possible) list of new #defines and their
|
|
corresponding #defines in the old build system:
|
|
|
|
|
|
|
|
|
|
#define HAS_VAX_FPERRORS - unused (should remove the code)
|
|
#define MAXPOSINT 4294967295 - don't know about that one
|
|
#define MAX_EXP_ARG 87.0 - same
|
|
|
|
---------- Operating System (os_xxx.h) parameters:
|
|
|
|
----- Enabling flags
|
|
#define AVAIL_MFB -DWANT_MFB passed to cpp
|
|
#define AVAIL_X11 X_DISPLAY_MISSING (reversed)
|
|
|
|
----- String or character constants
|
|
#define DIR_CWD "." now in spice.h
|
|
#define DIR_PATHSEP "/" now in spice;h
|
|
#define DIR_TERM '/' now in spice.h
|
|
|
|
On Unix, I don't think that there are other possibilities.
|
|
We should get rid of those.
|
|
|
|
|
|
----- sprintf( ) format strings
|
|
#define TEMPFORMAT "/tmp/%s%d" /* sprintf format for creating temp files */
|
|
#define SYSTEM_MAIL "mail -s \"%s (%s) Bug Report\" %s" /* mail command */
|
|
#define SYSTEM_PLOT5LPR "lpr -P%s -g %s" /* For printing Unix plot(5) files */
|
|
#define SYSTEM_PSLPR "lpr -P%s %s" /* For printing postscript files */
|
|
|
|
|
|
Same for these I guess...
|
|
|
|
|
|
|
|
----- System capabilities
|
|
#define HAS_ACCESS HAVE_ACCES
|
|
#define HAS_ASCII not handled yet
|
|
#define HAS_ATRIGH HAVE_ATANH HAVE_ACOSH HAVE_ASINH
|
|
#define HAS_BCOPY HAVE_BCOPY
|
|
#define HAS_BSDDIRS HAVE_DIR_H
|
|
#define HAS_BSDRANDOM unused
|
|
#define HAS_BSDRLIMIT HAVE_GETRLIMIT
|
|
#define HAS_BSDRUSAGE HAVE_GETRUSAGE
|
|
#define HAS_BSDSOCKETS unused
|
|
#define HAS_BSDTIME HAVE_GETTIMEOFDAY
|
|
#define HAS_BSDTTY HAVE_SGTTY_H
|
|
#define HAS_CHDIR removed
|
|
#define HAS_CLEARERR removed
|
|
#define HAS_CTYPE HAVE_CTYPE_H
|
|
#define HAS_DOSDIRS dos only - should remove code
|
|
#define HAS_DUP2 HAVE_DUP2
|
|
#define HAS_ENVIRON removed
|
|
#define HAS_EXIT1 vms only - should remove the code
|
|
#define HAS_FCNTL HAVE_FCNTL_H
|
|
#define HAS_FTIME HAVE_FTIME
|
|
#define HAS_GETCWD HAVE_GETCWD
|
|
#define HAS_GETPID removed
|
|
#define HAS_GETPW HAVE_PWD_H
|
|
#define HAS_GETWD HAVE_GETWD
|
|
#define HAS_INDEX HAVE_INDEX
|
|
#define HAS_NO_IEEE_LOGB HAVE_LOGB HAVE_SCALB HAVE_SCALBN
|
|
#define HAS_NO_IEEE_LOGB_DECL removed
|
|
#define HAS_ISATTY HAVE_ISATTY
|
|
#define HAS_LONGJUMP removed
|
|
#define HAS_MINDATA dos only? - should remove code if so
|
|
#define HAS_NOINLINE dos only? - should remove code if so
|
|
#define HAS_NOVM dos only? - should remove code if so
|
|
#define HAS_NO_ATRIGH_DECL removed
|
|
#define HAS_PCTERM dos only - should remove code
|
|
#define HAS_POPEN HAVE_POPEN
|
|
#define HAS_QSORT HAVE_QSORT
|
|
#define HAS_SHORTMACRO dos only - should remove code
|
|
#define HAS_STAT STAT_MACROS_BROKEN (reversed)
|
|
#define HAS_STDLIB STDC_HEADERS
|
|
#define HAS_STRCHR HAVE_STRCHR
|
|
#define HAS_STRINGS STDC_HEADERS (reversed) not sure about that one!
|
|
#define HAS_SYSTEM removed
|
|
#define HAS_SYSVDIRS HAVE_DIRENT_H
|
|
#define HAS_SYSVRLIMIT HAVE_ULIMIT
|
|
#define HAS_SYSVRUSAGE HAVE_UTIME
|
|
#define HAS_SYSVTIME HAVE_TIME
|
|
#define HAS_SYSVTTY HAVE_TERMIO_H
|
|
#define HAS_TERMCAP HAVE_TERMCAP
|
|
#define HAS_TERMREAD don't know what to do with this one
|
|
#define HAS_UNIX_SIGS removed
|
|
#define HAS_UNLINK removed
|
|
#define HAS_VFORK HAVE_VFORK_H
|
|
#define HAS_VMSHACK vms only - should remove the code
|
|
#define HAS_VPERROR removed
|
|
#define HAS_WAIT HAVE_WAIT
|
|
|
|
plus a few others:
|
|
|
|
#define HAS_MEMAVL dos only - should remove code
|
|
#define HAS_FLAT_INCLUDES macos only - should remove code
|
|
#define HAS_BATCHSIM dos only - should remove code
|
|
|
|
|
|
|
|
----------------------------------------------------------------------------
|
|
|
|
PORTING SPICE3e1
|
|
|
|
Porting Spice3 to a new operating system usually consists of listing
|
|
the capabilities of that operating system in a new '.h' file and
|
|
including this '.h' file in the standard portability sequence. This
|
|
also needs to be done separately for the numerical capabilities of the
|
|
system hardware (this consist of only two parameters at present).
|
|
|
|
For each operating system there is a file in the "include/" directory
|
|
named "os_xxx.h", where xxx identifies the given operating system (ex.
|
|
"os_bsd.h", "os_aix.h"). These files are selectively #include-d by
|
|
"include/port.h". For a new operating system, you should add the
|
|
appropriate "#include" line to "include/port.h". Be sure to guard
|
|
the new "#include" line with "#ifdef/#endif", as is done with the other
|
|
operating system capability files. The same may also need to be done
|
|
for your hardware (for the file "hw_xxx.h"), though there is typically
|
|
very little difference in hardware.
|
|
|
|
Note that operating system which are a derivative of another supported
|
|
system can '#include' the "os_xxx.h" file from the other system. For
|
|
example, "os_aix.h" includes "os_sysv.h", which in turn includes
|
|
"os_unix.h".
|
|
|
|
The entries that can go into a "os_xxx.h" file are described below;
|
|
most are simple flags (e.g. HAS_xxxx). To turn on a flag, insert the
|
|
"#define" line for that flag; to turn off the flag, simply leave the
|
|
"#define" line out. Other entries are strings, others single-quoted
|
|
characters or numbers. Be sure to use the same type as the example
|
|
values shown.
|
|
|
|
There are always exceptions to the rule. Some incompatibilities
|
|
have not yet been dealt with cleanly; review the other "os_xxx.h"
|
|
files, the file "capabil.h", and the file "suffix.h" to understand
|
|
how some problems have been handled (note especially the lines like
|
|
"#define index strchr"). After trying to compile, you may yet find
|
|
non-portable code that is not guarded by one of the following
|
|
options. You are encouraged to alter the source code (".c" or ".h"
|
|
files) in the style of the current portability scheme.
|
|
|
|
Note: to enable X11 or MFB, the flag AVAIL_X11 or AVAIL_MFB,
|
|
respectively, must be included in the "os_xxx.h" file; this _was_ to
|
|
simplify the problems of forgetting to re-edit the "config.h" file,
|
|
but this is no longer necessary.
|
|
|
|
---------- Machine architecture numerics (hw_xxx.h) parameters:
|
|
(In the future this will be more complete and will be used for
|
|
tuning the accuracy or performance of the numerical algorithms)
|
|
|
|
#define HAS_VAX_FPERRORS /* Only for Vax */
|
|
#define MAXPOSINT 4294967295 /* == 2^32 - 1, maximum positive integer */
|
|
#define MAX_EXP_ARG 87.0 /* Approximate largest arg to exp() */
|
|
|
|
---------- Operating System (os_xxx.h) parameters:
|
|
|
|
----- Enabling flags
|
|
#define AVAIL_MFB /* If the MFB package can work on this system */
|
|
#define AVAIL_X11 /* If the X11 Window System can work */
|
|
|
|
----- String or character constants
|
|
#define DIR_CWD "." /* Current working directory */
|
|
#define DIR_PATHSEP "/" /* subdirectory separator */
|
|
#define DIR_TERM '/' /* Subdirectory component terminator */
|
|
|
|
----- sprintf( ) format strings
|
|
#define TEMPFORMAT "/tmp/%s%d" /* sprintf format for creating temp files */
|
|
#define SYSTEM_MAIL "mail -s \"%s (%s) Bug Report\" %s" /* mail command */
|
|
#define SYSTEM_PLOT5LPR "lpr -P%s -g %s" /* For printing Unix plot(5) files */
|
|
#define SYSTEM_PSLPR "lpr -P%s %s" /* For printing postscript files */
|
|
|
|
----- System capabilities
|
|
#define HAS_ACCESS /* access( ) */
|
|
#define HAS_ASCII /* eighth bit of a character is not used */
|
|
#define HAS_ATRIGH /* acosh( ), asinh( ), atanh( ) */
|
|
#define HAS_BCOPY /* bcopy( ), bzero( ) */
|
|
#define HAS_BSDDIRS /* <sys/dir.h> */
|
|
#define HAS_BSDRANDOM /* srandom( ) and random( ) */
|
|
#define HAS_BSDRLIMIT /* getrlimit( ) returns proc limits */
|
|
#define HAS_BSDRUSAGE /* getrusage( ) returns cpu usage */
|
|
#define HAS_BSDSOCKETS /* <net/inet.h>, socket( ), etc. */
|
|
#define HAS_BSDTIME /* gettimeofday( ) return time */
|
|
#define HAS_BSDTTY /* <sgtty.h> */
|
|
#define HAS_CHDIR /* for tree filesystems, chdir( ) */
|
|
#define HAS_CLEARERR /* clearerr( ), should be in stdio */
|
|
#define HAS_CTYPE /* <ctype.h>, iswhite( ), etc. */
|
|
#define HAS_DOSDIRS /* Emulate opendir, etc. */
|
|
#define HAS_DUP2 /* dup2(a, b) for shifting file descrs. */
|
|
#define HAS_ENVIRON /* getenv( ) */
|
|
#define HAS_EXIT1 /* If exit status of 1 is normal for procs */
|
|
#define HAS_FCNTL /* acosh( ), asinh( ), atanh( ) */
|
|
#define HAS_FTIME /* ftime( ), <times.h> */
|
|
#define HAS_GETCWD /* getcwd(buf, size) */
|
|
#define HAS_GETPID /* getpid( ) to identify processes */
|
|
#define HAS_GETPW /* getpwuid( ), etc. */
|
|
#define HAS_GETWD /* getwd(buf) */
|
|
#define HAS_INDEX /* index( ) instead of strchr( ) */
|
|
#define HAS_NO_IEEE_LOGB /* no logb( ) and scalb( ) functions */
|
|
#define HAS_NO_IEEE_LOGB_DECL /* logb( ) and scalb( ) not in math.h */
|
|
#define HAS_ISATTY /* isatty( ) */
|
|
#define HAS_LONGJUMP /* setjmp( ), longjmp( ) */
|
|
#define HAS_MINDATA /* Machine has limited data area */
|
|
#define HAS_NOINLINE /* Machine has limited data area */
|
|
#define HAS_NOVM /* Machine has limited data area */
|
|
#define HAS_NO_ATRIGH_DECL /* if asinh( ) is not in math.h */
|
|
#define HAS_PCTERM /* For MS-DOS, use PC graphics for MFB */
|
|
#define HAS_POPEN /* popen( ), pipe through shell command */
|
|
#define HAS_QSORT /* qsort( ) exists */
|
|
#define HAS_SHORTMACRO /* If the compiler can't handle long macros */
|
|
#define HAS_STAT /* stat( ) returns info on files */
|
|
#define HAS_STDLIB /* #include <stdlib.h> for libc defs */
|
|
#define HAS_STRCHR /* strchr( ) instead of index( ) */
|
|
#define HAS_STRINGS /* #include <strings.h> (else <string.h>) */
|
|
#define HAS_SYSTEM /* system( ), execute system command */
|
|
#define HAS_SYSVDIRS /* <dirent.h> */
|
|
#define HAS_SYSVRLIMIT /* ulimit( ) reports on proc size limit */
|
|
#define HAS_SYSVRUSAGE /* utimes( ) reports on cpu usage */
|
|
#define HAS_SYSVTIME /* time( ) returns seconds from 1970 */
|
|
#define HAS_SYSVTTY /* <termio.h> */
|
|
#define HAS_TERMCAP /* tgetxxx( ) */
|
|
#define HAS_TERMREAD /* Has "read" syscall from terminals */
|
|
#define HAS_UNIX_SIGS /* signal( ), kill( ) */
|
|
#define HAS_UNLINK /* unlink( ), for removing files */
|
|
#define HAS_VFORK /* BSD-ism, should not be necessary */
|
|
#define HAS_VMSHACK /* Stand on your head for VMS */
|
|
#define HAS_VPERROR /* perror( ) defined by standard '.h's */
|
|
#define HAS_WAIT /* wait( ) wait for processes */
|