diff --git a/alliance/src/rdscif/Makefile.am b/alliance/src/rdscif/Makefile.am new file mode 100644 index 00000000..af437a64 --- /dev/null +++ b/alliance/src/rdscif/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = src diff --git a/alliance/src/rdscif/Makefile.in b/alliance/src/rdscif/Makefile.in new file mode 100644 index 00000000..22d9fb00 --- /dev/null +++ b/alliance/src/rdscif/Makefile.in @@ -0,0 +1,318 @@ +# Makefile.in generated automatically by automake 1.4 from Makefile.am + +# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include + +DESTDIR = + +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ + +top_builddir = . + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +transform = @program_transform_name@ + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +CC = @CC@ +INCLUDES = @INCLUDES@ +LDFLAGS = @LDFLAGS@ +RANLIB = @RANLIB@ + +SUBDIRS = src +mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs +CONFIG_CLEAN_FILES = +DIST_COMMON = Makefile.am Makefile.in configure configure.in + + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = gtar +GZIP_ENV = --best +all: all-redirect +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) + cd $(top_builddir) \ + && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status + + +config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck +$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) + cd $(srcdir) && $(AUTOCONF) + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. + +@SET_MAKE@ + +all-recursive install-data-recursive install-exec-recursive \ +installdirs-recursive install-recursive uninstall-recursive \ +check-recursive installcheck-recursive info-recursive dvi-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ + rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \ + rev="$$subdir $$rev"; \ + test "$$subdir" = "." && dot_seen=yes; \ + done; \ + test "$$dot_seen" = "no" && rev=". $$rev"; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + here=`pwd` && cd $(srcdir) \ + && mkid -f$$here/ID $$unique $(LISP) + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) + +mostlyclean-tags: + +clean-tags: + +distclean-tags: + -rm -f TAGS ID + +maintainer-clean-tags: + +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + -rm -rf $(distdir) + GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz + mkdir $(distdir)/=build + mkdir $(distdir)/=inst + dc_install_base=`cd $(distdir)/=inst && pwd`; \ + cd $(distdir)/=build \ + && ../configure --srcdir=.. --prefix=$$dc_install_base \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) dist + -rm -rf $(distdir) + @banner="$(distdir).tar.gz is ready for distribution"; \ + dashes=`echo "$$banner" | sed s/./=/g`; \ + echo "$$dashes"; \ + echo "$$banner"; \ + echo "$$dashes" +dist: distdir + -chmod -R a+r $(distdir) + GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) + -rm -rf $(distdir) +dist-all: distdir + -chmod -R a+r $(distdir) + GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) + -rm -rf $(distdir) +distdir: $(DISTFILES) + -rm -rf $(distdir) + mkdir $(distdir) + -chmod 777 $(distdir) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(distdir) && pwd`; \ + distdir=`cd $(distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --foreign Makefile + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + if test -d $$d/$$file; then \ + cp -pr $$/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done + for subdir in $(SUBDIRS); do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + chmod 777 $(distdir)/$$subdir; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \ + || exit 1; \ + fi; \ + done +info-am: +info: info-recursive +dvi-am: +dvi: dvi-recursive +check-am: all-am +check: check-recursive +installcheck-am: +installcheck: installcheck-recursive +install-exec-am: +install-exec: install-exec-recursive + +install-data-am: +install-data: install-data-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-recursive +uninstall-am: +uninstall: uninstall-recursive +all-am: Makefile +all-redirect: all-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: installdirs-recursive +installdirs-am: + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: +mostlyclean-am: mostlyclean-tags mostlyclean-generic + +mostlyclean: mostlyclean-recursive + +clean-am: clean-tags clean-generic mostlyclean-am + +clean: clean-recursive + +distclean-am: distclean-tags distclean-generic clean-am + +distclean: distclean-recursive + -rm -f config.status + +maintainer-clean-am: maintainer-clean-tags maintainer-clean-generic \ + distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-recursive + -rm -f config.status + +.PHONY: install-data-recursive uninstall-data-recursive \ +install-exec-recursive uninstall-exec-recursive installdirs-recursive \ +uninstalldirs-recursive all-recursive check-recursive \ +installcheck-recursive info-recursive dvi-recursive \ +mostlyclean-recursive distclean-recursive clean-recursive \ +maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ +distclean-tags clean-tags maintainer-clean-tags distdir info-am info \ +dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ +install-exec install-data-am install-data install-am install \ +uninstall-am uninstall all-redirect all-am all installdirs-am \ +installdirs mostlyclean-generic distclean-generic clean-generic \ +maintainer-clean-generic clean mostlyclean distclean maintainer-clean + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/alliance/src/rdscif/configure b/alliance/src/rdscif/configure new file mode 100755 index 00000000..fef6087b --- /dev/null +++ b/alliance/src/rdscif/configure @@ -0,0 +1,1634 @@ +#! /bin/sh + +# Guess values for system-dependent variables and create Makefiles. +# Generated automatically using autoconf version 2.13 +# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. + +# Defaults: +ac_help= +ac_default_prefix=/usr/local +# Any additions from configure.in: + +# Initialize some variables set by options. +# The variables have the same names as the options, with +# dashes changed to underlines. +build=NONE +cache_file=./config.cache +exec_prefix=NONE +host=NONE +no_create= +nonopt=NONE +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +target=NONE +verbose= +x_includes=NONE +x_libraries=NONE +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +# Initialize some other variables. +subdirs= +MFLAGS= MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} +# Maximum number of lines to put in a shell here document. +ac_max_here_lines=12 + +ac_prev= +for ac_option +do + + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + case "$ac_option" in + -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) ac_optarg= ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case "$ac_option" in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir="$ac_optarg" ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build="$ac_optarg" ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file="$ac_optarg" ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir="$ac_optarg" ;; + + -disable-* | --disable-*) + ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then + { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } + fi + ac_feature=`echo $ac_feature| sed 's/-/_/g'` + eval "enable_${ac_feature}=no" ;; + + -enable-* | --enable-*) + ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then + { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } + fi + ac_feature=`echo $ac_feature| sed 's/-/_/g'` + case "$ac_option" in + *=*) ;; + *) ac_optarg=yes ;; + esac + eval "enable_${ac_feature}='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix="$ac_optarg" ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he) + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat << EOF +Usage: configure [options] [host] +Options: [defaults in brackets after descriptions] +Configuration: + --cache-file=FILE cache test results in FILE + --help print this message + --no-create do not create output files + --quiet, --silent do not print \`checking...' messages + --version print the version of autoconf that created configure +Directory and file names: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [same as prefix] + --bindir=DIR user executables in DIR [EPREFIX/bin] + --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] + --libexecdir=DIR program executables in DIR [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data in DIR + [PREFIX/share] + --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data in DIR + [PREFIX/com] + --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] + --libdir=DIR object code libraries in DIR [EPREFIX/lib] + --includedir=DIR C header files in DIR [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] + --infodir=DIR info documentation in DIR [PREFIX/info] + --mandir=DIR man documentation in DIR [PREFIX/man] + --srcdir=DIR find the sources in DIR [configure dir or ..] + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM + run sed PROGRAM on installed program names +EOF + cat << EOF +Host type: + --build=BUILD configure for building on BUILD [BUILD=HOST] + --host=HOST configure for HOST [guessed] + --target=TARGET configure for TARGET [TARGET=HOST] +Features and packages: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --x-includes=DIR X include files are in DIR + --x-libraries=DIR X library files are in DIR +EOF + if test -n "$ac_help"; then + echo "--enable and --with options recognized:$ac_help" + fi + exit 0 ;; + + -host | --host | --hos | --ho) + ac_prev=host ;; + -host=* | --host=* | --hos=* | --ho=*) + host="$ac_optarg" ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir="$ac_optarg" ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir="$ac_optarg" ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir="$ac_optarg" ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir="$ac_optarg" ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir="$ac_optarg" ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir="$ac_optarg" ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir="$ac_optarg" ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix="$ac_optarg" ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix="$ac_optarg" ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix="$ac_optarg" ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name="$ac_optarg" ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir="$ac_optarg" ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir="$ac_optarg" ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site="$ac_optarg" ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir="$ac_optarg" ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir="$ac_optarg" ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target="$ac_optarg" ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers) + echo "configure generated by autoconf version 2.13" + exit 0 ;; + + -with-* | --with-*) + ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then + { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } + fi + ac_package=`echo $ac_package| sed 's/-/_/g'` + case "$ac_option" in + *=*) ;; + *) ac_optarg=yes ;; + esac + eval "with_${ac_package}='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`echo $ac_option|sed -e 's/-*without-//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then + { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } + fi + ac_package=`echo $ac_package| sed 's/-/_/g'` + eval "with_${ac_package}=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes="$ac_optarg" ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries="$ac_optarg" ;; + + -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } + ;; + + *) + if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then + echo "configure: warning: $ac_option: invalid host type" 1>&2 + fi + if test "x$nonopt" != xNONE; then + { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } + fi + nonopt="$ac_option" + ;; + + esac +done + +if test -n "$ac_prev"; then + { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } +fi + +trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 + +# File descriptor usage: +# 0 standard input +# 1 file creation +# 2 errors and warnings +# 3 some systems may open it to /dev/tty +# 4 used on the Kubota Titan +# 6 checking for... messages and results +# 5 compiler messages saved in config.log +if test "$silent" = yes; then + exec 6>/dev/null +else + exec 6>&1 +fi +exec 5>./config.log + +echo "\ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. +" 1>&5 + +# Strip out --no-create and --no-recursion so they do not pile up. +# Also quote any args containing shell metacharacters. +ac_configure_args= +for ac_arg +do + case "$ac_arg" in + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) ;; + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) + ac_configure_args="$ac_configure_args '$ac_arg'" ;; + *) ac_configure_args="$ac_configure_args $ac_arg" ;; + esac +done + +# NLS nuisances. +# Only set these to C if already set. These must not be set unconditionally +# because not all systems understand e.g. LANG=C (notably SCO). +# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! +# Non-C LC_CTYPE values break the ctype check. +if test "${LANG+set}" = set; then LANG=C; export LANG; fi +if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi +if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi +if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo > confdefs.h + +# A filename unique to this package, relative to the directory that +# configure is in, which we can look for to find out if srcdir is correct. +ac_unique_file=src/cif_drive.c + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_prog=$0 + ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` + test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } + else + { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } + fi +fi +srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` + +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + echo "loading site script $ac_site_file" + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + echo "loading cache $cache_file" + . $cache_file +else + echo "creating cache $cache_file" + > $cache_file +fi + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +ac_exeext= +ac_objext=o +if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then + # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. + if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then + ac_n= ac_c=' +' ac_t=' ' + else + ac_n=-n ac_c= ac_t= + fi +else + ac_n= ac_c='\c' ac_t= +fi + + +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } +fi +ac_config_guess=$ac_aux_dir/config.guess +ac_config_sub=$ac_aux_dir/config.sub +ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# ./install, which can be erroneously created by make from ./install.sh. +echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 +echo "configure:556: checking for a BSD compatible install" >&5 +if test -z "$INSTALL"; then +if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":" + for ac_dir in $PATH; do + # Account for people who put trailing slashes in PATH elements. + case "$ac_dir/" in + /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + if test -f $ac_dir/$ac_prog; then + if test $ac_prog = install && + grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + else + ac_cv_path_install="$ac_dir/$ac_prog -c" + break 2 + fi + fi + done + ;; + esac + done + IFS="$ac_save_IFS" + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL="$ac_cv_path_install" + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL="$ac_install_sh" + fi +fi +echo "$ac_t""$INSTALL" 1>&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6 +echo "configure:609: checking whether build environment is sane" >&5 +# Just in case +sleep 1 +echo timestamp > conftestfile +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftestfile` + fi + if test "$*" != "X $srcdir/configure conftestfile" \ + && test "$*" != "X conftestfile $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + { echo "configure: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" 1>&2; exit 1; } + fi + + test "$2" = conftestfile + ) +then + # Ok. + : +else + { echo "configure: error: newly created file is older than distributed files! +Check your system clock" 1>&2; exit 1; } +fi +rm -f conftest* +echo "$ac_t""yes" 1>&6 +if test "$program_transform_name" = s,x,x,; then + program_transform_name= +else + # Double any \ or $. echo might interpret backslashes. + cat <<\EOF_SED > conftestsed +s,\\,\\\\,g; s,\$,$$,g +EOF_SED + program_transform_name="`echo $program_transform_name|sed -f conftestsed`" + rm -f conftestsed +fi +test "$program_prefix" != NONE && + program_transform_name="s,^,${program_prefix},; $program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s,\$\$,${program_suffix},; $program_transform_name" + +# sed with no file args requires a program. +test "$program_transform_name" = "" && program_transform_name="s,x,x," + +echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 +echo "configure:666: checking whether ${MAKE-make} sets \${MAKE}" >&5 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftestmake <<\EOF +all: + @echo 'ac_maketemp="${MAKE}"' +EOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftestmake +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$ac_t""yes" 1>&6 + SET_MAKE= +else + echo "$ac_t""no" 1>&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + + +PACKAGE=rdscif + +VERSION=2.1 + +if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then + { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; } +fi +cat >> confdefs.h <> confdefs.h <&6 +echo "configure:712: checking for working aclocal" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (aclocal --version) < /dev/null > /dev/null 2>&1; then + ACLOCAL=aclocal + echo "$ac_t""found" 1>&6 +else + ACLOCAL="$missing_dir/missing aclocal" + echo "$ac_t""missing" 1>&6 +fi + +echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 +echo "configure:725: checking for working autoconf" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (autoconf --version) < /dev/null > /dev/null 2>&1; then + AUTOCONF=autoconf + echo "$ac_t""found" 1>&6 +else + AUTOCONF="$missing_dir/missing autoconf" + echo "$ac_t""missing" 1>&6 +fi + +echo $ac_n "checking for working automake""... $ac_c" 1>&6 +echo "configure:738: checking for working automake" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (automake --version) < /dev/null > /dev/null 2>&1; then + AUTOMAKE=automake + echo "$ac_t""found" 1>&6 +else + AUTOMAKE="$missing_dir/missing automake" + echo "$ac_t""missing" 1>&6 +fi + +echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 +echo "configure:751: checking for working autoheader" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (autoheader --version) < /dev/null > /dev/null 2>&1; then + AUTOHEADER=autoheader + echo "$ac_t""found" 1>&6 +else + AUTOHEADER="$missing_dir/missing autoheader" + echo "$ac_t""missing" 1>&6 +fi + +echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 +echo "configure:764: checking for working makeinfo" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (makeinfo --version) < /dev/null > /dev/null 2>&1; then + MAKEINFO=makeinfo + echo "$ac_t""found" 1>&6 +else + MAKEINFO="$missing_dir/missing makeinfo" + echo "$ac_t""missing" 1>&6 +fi + + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# ./install, which can be erroneously created by make from ./install.sh. +echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 +echo "configure:789: checking for a BSD compatible install" >&5 +if test -z "$INSTALL"; then +if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":" + for ac_dir in $PATH; do + # Account for people who put trailing slashes in PATH elements. + case "$ac_dir/" in + /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + if test -f $ac_dir/$ac_prog; then + if test $ac_prog = install && + grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + else + ac_cv_path_install="$ac_dir/$ac_prog -c" + break 2 + fi + fi + done + ;; + esac + done + IFS="$ac_save_IFS" + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL="$ac_cv_path_install" + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL="$ac_install_sh" + fi +fi +echo "$ac_t""$INSTALL" 1>&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +# Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:844: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_CC="gcc" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:874: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_prog_rejected=no + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + break + fi + done + IFS="$ac_save_ifs" +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# -gt 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + set dummy "$ac_dir/$ac_word" "$@" + shift + ac_cv_prog_CC="$@" + fi +fi +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + if test -z "$CC"; then + case "`uname -s`" in + *win32* | *WIN32*) + # Extract the first word of "cl", so it can be a program name with args. +set dummy cl; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:925: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_CC="cl" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + ;; + esac + fi + test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } +fi + +echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 +echo "configure:957: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +cat > conftest.$ac_ext << EOF + +#line 968 "configure" +#include "confdefs.h" + +main(){return(0);} +EOF +if { (eval echo configure:973: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + ac_cv_prog_cc_works=yes + # If we can't run a trivial program, we are probably using a cross compiler. + if (./conftest; exit) 2>/dev/null; then + ac_cv_prog_cc_cross=no + else + ac_cv_prog_cc_cross=yes + fi +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_cv_prog_cc_works=no +fi +rm -fr conftest* +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 +if test $ac_cv_prog_cc_works = no; then + { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } +fi +echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 +echo "configure:999: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 +cross_compiling=$ac_cv_prog_cc_cross + +echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 +echo "configure:1004: checking whether we are using GNU C" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + ac_cv_prog_gcc=yes +else + ac_cv_prog_gcc=no +fi +fi + +echo "$ac_t""$ac_cv_prog_gcc" 1>&6 + +if test $ac_cv_prog_gcc = yes; then + GCC=yes +else + GCC= +fi + +ac_test_CFLAGS="${CFLAGS+set}" +ac_save_CFLAGS="$CFLAGS" +CFLAGS= +echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 +echo "configure:1032: checking whether ${CC-cc} accepts -g" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + echo 'void f(){}' > conftest.c +if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then + ac_cv_prog_cc_g=yes +else + ac_cv_prog_cc_g=no +fi +rm -f conftest* + +fi + +echo "$ac_t""$ac_cv_prog_cc_g" 1>&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS="$ac_save_CFLAGS" +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi + +echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 +echo "configure:1064: checking how to run the C preprocessor" >&5 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then +if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + # This must be in double quotes, not single quotes, because CPP may get + # substituted into the Makefile and "${CC-cc}" will confuse make. + CPP="${CC-cc} -E" + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. + cat > conftest.$ac_ext < +Syntax Error +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1085: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + : +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + CPP="${CC-cc} -E -traditional-cpp" + cat > conftest.$ac_ext < +Syntax Error +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1102: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + : +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + CPP="${CC-cc} -nologo -E" + cat > conftest.$ac_ext < +Syntax Error +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1119: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + : +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + CPP=/lib/cpp +fi +rm -f conftest* +fi +rm -f conftest* +fi +rm -f conftest* + ac_cv_prog_CPP="$CPP" +fi + CPP="$ac_cv_prog_CPP" +else + ac_cv_prog_CPP="$CPP" +fi +echo "$ac_t""$CPP" 1>&6 + +echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 +echo "configure:1144: checking for ANSI C header files" >&5 +if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#include +#include +#include +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1157: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + ac_cv_header_stdc=yes +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_header_stdc=no +fi +rm -f conftest* + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. +cat > conftest.$ac_ext < +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "memchr" >/dev/null 2>&1; then + : +else + rm -rf conftest* + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. +cat > conftest.$ac_ext < +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "free" >/dev/null 2>&1; then + : +else + rm -rf conftest* + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. +if test "$cross_compiling" = yes; then + : +else + cat > conftest.$ac_ext < +#define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int main () { int i; for (i = 0; i < 256; i++) +if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); +exit (0); } + +EOF +if { (eval echo configure:1224: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + : +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_header_stdc=no +fi +rm -fr conftest* +fi + +fi +fi + +echo "$ac_t""$ac_cv_header_stdc" 1>&6 +if test $ac_cv_header_stdc = yes; then + cat >> confdefs.h <<\EOF +#define STDC_HEADERS 1 +EOF + +fi + +echo $ac_n "checking for working const""... $ac_c" 1>&6 +echo "configure:1248: checking for working const" >&5 +if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <j = 5; +} +{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; +} + +; return 0; } +EOF +if { (eval echo configure:1302: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_c_const=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_c_const=no +fi +rm -f conftest* +fi + +echo "$ac_t""$ac_cv_c_const" 1>&6 +if test $ac_cv_c_const = no; then + cat >> confdefs.h <<\EOF +#define const +EOF + +fi + +# Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1325: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_RANLIB="ranlib" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":" +fi +fi +RANLIB="$ac_cv_prog_RANLIB" +if test -n "$RANLIB"; then + echo "$ac_t""$RANLIB" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + +INCLUDES=-I${ALLIANCE_TOP}/include +LDFLAGS=-L${ALLIANCE_TOP}/lib + + + + +trap '' 1 2 15 +cat > confcache <<\EOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs. It is not useful on other systems. +# If it contains results you don't want to keep, you may remove or edit it. +# +# By default, configure uses ./config.cache as the cache file, +# creating it if it does not exist already. You can give configure +# the --cache-file=FILE option to use a different cache file; that is +# what configure does when it calls configure scripts in +# subdirectories, so they share the cache. +# Giving --cache-file=/dev/null disables caching, for debugging configure. +# config.status only pays attention to the cache file if you give it the +# --recheck option to rerun configure. +# +EOF +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +(set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote substitution + # turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + -e "s/'/'\\\\''/g" \ + -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' + ;; + esac >> confcache +if cmp -s $cache_file confcache; then + : +else + if test -w $cache_file; then + echo "updating cache $cache_file" + cat confcache > $cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# Any assignment to VPATH causes Sun make to only execute +# the first set of double-colon rules, so remove it if not needed. +# If there is a colon in the path, we need to keep it. +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' +fi + +trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +cat > conftest.defs <<\EOF +s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g +s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g +s%\[%\\&%g +s%\]%\\&%g +s%\$%$$%g +EOF +DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` +rm -f conftest.defs + + +# Without the "./", some shells look in PATH for config.status. +: ${CONFIG_STATUS=./config.status} + +echo creating $CONFIG_STATUS +rm -f $CONFIG_STATUS +cat > $CONFIG_STATUS </dev/null | sed 1q`: +# +# $0 $ac_configure_args +# +# Compiler output produced by configure, useful for debugging +# configure, is in ./config.log if it exists. + +ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" +for ac_option +do + case "\$ac_option" in + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" + exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; + -version | --version | --versio | --versi | --vers | --ver | --ve | --v) + echo "$CONFIG_STATUS generated by autoconf version 2.13" + exit 0 ;; + -help | --help | --hel | --he | --h) + echo "\$ac_cs_usage"; exit 0 ;; + *) echo "\$ac_cs_usage"; exit 1 ;; + esac +done + +ac_given_srcdir=$srcdir +ac_given_INSTALL="$INSTALL" + +trap 'rm -fr `echo " +Makefile +src/Makefile +" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 +EOF +cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF +$ac_vpsub +$extrasub +s%@SHELL@%$SHELL%g +s%@CFLAGS@%$CFLAGS%g +s%@CPPFLAGS@%$CPPFLAGS%g +s%@CXXFLAGS@%$CXXFLAGS%g +s%@FFLAGS@%$FFLAGS%g +s%@DEFS@%$DEFS%g +s%@LDFLAGS@%$LDFLAGS%g +s%@LIBS@%$LIBS%g +s%@exec_prefix@%$exec_prefix%g +s%@prefix@%$prefix%g +s%@program_transform_name@%$program_transform_name%g +s%@bindir@%$bindir%g +s%@sbindir@%$sbindir%g +s%@libexecdir@%$libexecdir%g +s%@datadir@%$datadir%g +s%@sysconfdir@%$sysconfdir%g +s%@sharedstatedir@%$sharedstatedir%g +s%@localstatedir@%$localstatedir%g +s%@libdir@%$libdir%g +s%@includedir@%$includedir%g +s%@oldincludedir@%$oldincludedir%g +s%@infodir@%$infodir%g +s%@mandir@%$mandir%g +s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g +s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g +s%@INSTALL_DATA@%$INSTALL_DATA%g +s%@PACKAGE@%$PACKAGE%g +s%@VERSION@%$VERSION%g +s%@ACLOCAL@%$ACLOCAL%g +s%@AUTOCONF@%$AUTOCONF%g +s%@AUTOMAKE@%$AUTOMAKE%g +s%@AUTOHEADER@%$AUTOHEADER%g +s%@MAKEINFO@%$MAKEINFO%g +s%@SET_MAKE@%$SET_MAKE%g +s%@CC@%$CC%g +s%@CPP@%$CPP%g +s%@RANLIB@%$RANLIB%g +s%@INCLUDES@%$INCLUDES%g + +CEOF +EOF + +cat >> $CONFIG_STATUS <<\EOF + +# Split the substitutions into bite-sized pieces for seds with +# small command number limits, like on Digital OSF/1 and HP-UX. +ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. +ac_file=1 # Number of current file. +ac_beg=1 # First line for current file. +ac_end=$ac_max_sed_cmds # Line after last line for current file. +ac_more_lines=: +ac_sed_cmds="" +while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file + else + sed "${ac_end}q" conftest.subs > conftest.s$ac_file + fi + if test ! -s conftest.s$ac_file; then + ac_more_lines=false + rm -f conftest.s$ac_file + else + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f conftest.s$ac_file" + else + ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" + fi + ac_file=`expr $ac_file + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_cmds` + fi +done +if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat +fi +EOF + +cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF +for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` + ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + *) ac_file_in="${ac_file}.in" ;; + esac + + # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. + + # Remove last slash and all that follows it. Not all systems have dirname. + ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + # The file is in a subdirectory. + test ! -d "$ac_dir" && mkdir "$ac_dir" + ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" + # A "../" for each directory in $ac_dir_suffix. + ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` + else + ac_dir_suffix= ac_dots= + fi + + case "$ac_given_srcdir" in + .) srcdir=. + if test -z "$ac_dots"; then top_srcdir=. + else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; + /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; + *) # Relative path. + srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" + top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + case "$ac_given_INSTALL" in + [/$]*) INSTALL="$ac_given_INSTALL" ;; + *) INSTALL="$ac_dots$ac_given_INSTALL" ;; + esac + + echo creating "$ac_file" + rm -f "$ac_file" + configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." + case "$ac_file" in + *Makefile*) ac_comsub="1i\\ +# $configure_input" ;; + *) ac_comsub= ;; + esac + + ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + sed -e "$ac_comsub +s%@configure_input@%$configure_input%g +s%@srcdir@%$srcdir%g +s%@top_srcdir@%$top_srcdir%g +s%@INSTALL@%$INSTALL%g +" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file +fi; done +rm -f conftest.s* + +EOF +cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF + +exit 0 +EOF +chmod +x $CONFIG_STATUS +rm -fr confdefs* $ac_clean_files +test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 + diff --git a/alliance/src/rdscif/configure.in b/alliance/src/rdscif/configure.in new file mode 100644 index 00000000..d4fdf21b --- /dev/null +++ b/alliance/src/rdscif/configure.in @@ -0,0 +1,51 @@ +dnl +dnl This file is part of the Alliance CAD System +dnl Copyright (C) Laboratoire LIP6 - Département ASIM +dnl Universite Pierre et Marie Curie +dnl +dnl Home page : http://www-asim.lip6.fr/alliance/ +dnl E-mail support : mailto:alliance-support@asim.lip6.fr +dnl +dnl This library is free software; you can redistribute it and/or modify it +dnl under the terms of the GNU Library General Public License as published +dnl by the Free Software Foundation; either version 2 of the License, or (at +dnl your option) any later version. +dnl +dnl Alliance VLSI CAD System is distributed in the hope that it will be +dnl useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +dnl Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License along +dnl with the GNU C Library; see the file COPYING. If not, write to the Free +dnl Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +dnl +dnl Purpose : Auto stuffing Alliance +dnl Almost ten years since I wrote this stuff, I just can't +dnl believe it +dnl Date : 01/02/2002 +dnl Author : Frederic Petrot +dnl $Id: configure.in,v 1.1 2002/03/13 13:38:16 fred Exp $ +dnl +dnl + +AC_INIT(src/cif_drive.c) +AM_INIT_AUTOMAKE(rdscif, 2.1) +AC_PROG_INSTALL +AC_PROG_CC +AC_HEADER_STDC +AC_C_CONST +AC_PROG_RANLIB + +changequote(,)dnl +INCLUDES=-I${ALLIANCE_TOP}/include +LDFLAGS=-L${ALLIANCE_TOP}/lib +changequote([,])dnl + +AC_SUBST(INCLUDES) +AC_SUBST(LDFLAGS) + +AC_OUTPUT([ +Makefile +src/Makefile +]) diff --git a/alliance/src/rdscif/src/Makefile.am b/alliance/src/rdscif/src/Makefile.am new file mode 100644 index 00000000..a23e34ec --- /dev/null +++ b/alliance/src/rdscif/src/Makefile.am @@ -0,0 +1,2 @@ +lib_LIBRARIES = libRcf.a +libRcf_a_SOURCES = cif_drive.c cif_error.c cif_parse.c rcf.h cif.h cif_drive.h cif_error.h cif_parse.h diff --git a/alliance/src/rdscif/src/Makefile.in b/alliance/src/rdscif/src/Makefile.in new file mode 100644 index 00000000..55c24cda --- /dev/null +++ b/alliance/src/rdscif/src/Makefile.in @@ -0,0 +1,317 @@ +# Makefile.in generated automatically by automake 1.4 from Makefile.am + +# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include + +DESTDIR = + +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ + +top_builddir = .. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +transform = @program_transform_name@ + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +CC = @CC@ +INCLUDES = @INCLUDES@ +LDFLAGS = @LDFLAGS@ +RANLIB = @RANLIB@ + +lib_LIBRARIES = libRcf.a +libRcf_a_SOURCES = cif_drive.c cif_error.c cif_parse.c rcf.h cif.h cif_drive.h cif_error.h cif_parse.h +mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs +CONFIG_CLEAN_FILES = +LIBRARIES = $(lib_LIBRARIES) + + +DEFS = @DEFS@ -I. -I$(srcdir) +CPPFLAGS = @CPPFLAGS@ +LIBS = @LIBS@ +libRcf_a_LIBADD = +libRcf_a_OBJECTS = cif_drive.o cif_error.o cif_parse.o +AR = ar +CFLAGS = @CFLAGS@ +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ +DIST_COMMON = Makefile.am Makefile.in + + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = gtar +GZIP_ENV = --best +DEP_FILES = .deps/cif_drive.P .deps/cif_error.P .deps/cif_parse.P +SOURCES = $(libRcf_a_SOURCES) +OBJECTS = $(libRcf_a_OBJECTS) + +all: all-redirect +.SUFFIXES: +.SUFFIXES: .S .c .o .s +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + + +mostlyclean-libLIBRARIES: + +clean-libLIBRARIES: + -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES) + +distclean-libLIBRARIES: + +maintainer-clean-libLIBRARIES: + +install-libLIBRARIES: $(lib_LIBRARIES) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(libdir) + @list='$(lib_LIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + echo " $(INSTALL_DATA) $$p $(DESTDIR)$(libdir)/$$p"; \ + $(INSTALL_DATA) $$p $(DESTDIR)$(libdir)/$$p; \ + else :; fi; \ + done + @$(POST_INSTALL) + @list='$(lib_LIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + echo " $(RANLIB) $(DESTDIR)$(libdir)/$$p"; \ + $(RANLIB) $(DESTDIR)$(libdir)/$$p; \ + else :; fi; \ + done + +uninstall-libLIBRARIES: + @$(NORMAL_UNINSTALL) + list='$(lib_LIBRARIES)'; for p in $$list; do \ + rm -f $(DESTDIR)$(libdir)/$$p; \ + done + +.s.o: + $(COMPILE) -c $< + +.S.o: + $(COMPILE) -c $< + +mostlyclean-compile: + -rm -f *.o core *.core + +clean-compile: + +distclean-compile: + -rm -f *.tab.c + +maintainer-clean-compile: + +libRcf.a: $(libRcf_a_OBJECTS) $(libRcf_a_DEPENDENCIES) + -rm -f libRcf.a + $(AR) cru libRcf.a $(libRcf_a_OBJECTS) $(libRcf_a_LIBADD) + $(RANLIB) libRcf.a + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + here=`pwd` && cd $(srcdir) \ + && mkid -f$$here/ID $$unique $(LISP) + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) + +mostlyclean-tags: + +clean-tags: + +distclean-tags: + -rm -f TAGS ID + +maintainer-clean-tags: + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) + +subdir = src + +distdir: $(DISTFILES) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(top_distdir) && pwd`; \ + distdir=`cd $(distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --foreign src/Makefile + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + if test -d $$d/$$file; then \ + cp -pr $$/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done + +DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :) + +-include $(DEP_FILES) + +mostlyclean-depend: + +clean-depend: + +distclean-depend: + -rm -rf .deps + +maintainer-clean-depend: + +%.o: %.c + @echo '$(COMPILE) -c $<'; \ + $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $< + @-cp .deps/$(*F).pp .deps/$(*F).P; \ + tr ' ' '\012' < .deps/$(*F).pp \ + | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ + >> .deps/$(*F).P; \ + rm .deps/$(*F).pp + +%.lo: %.c + @echo '$(LTCOMPILE) -c $<'; \ + $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $< + @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \ + < .deps/$(*F).pp > .deps/$(*F).P; \ + tr ' ' '\012' < .deps/$(*F).pp \ + | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ + >> .deps/$(*F).P; \ + rm -f .deps/$(*F).pp +info-am: +info: info-am +dvi-am: +dvi: dvi-am +check-am: all-am +check: check-am +installcheck-am: +installcheck: installcheck-am +install-exec-am: install-libLIBRARIES +install-exec: install-exec-am + +install-data-am: +install-data: install-data-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-am +uninstall-am: uninstall-libLIBRARIES +uninstall: uninstall-am +all-am: Makefile $(LIBRARIES) +all-redirect: all-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: + $(mkinstalldirs) $(DESTDIR)$(libdir) + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: +mostlyclean-am: mostlyclean-libLIBRARIES mostlyclean-compile \ + mostlyclean-tags mostlyclean-depend mostlyclean-generic + +mostlyclean: mostlyclean-am + +clean-am: clean-libLIBRARIES clean-compile clean-tags clean-depend \ + clean-generic mostlyclean-am + +clean: clean-am + +distclean-am: distclean-libLIBRARIES distclean-compile distclean-tags \ + distclean-depend distclean-generic clean-am + +distclean: distclean-am + +maintainer-clean-am: maintainer-clean-libLIBRARIES \ + maintainer-clean-compile maintainer-clean-tags \ + maintainer-clean-depend maintainer-clean-generic \ + distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-am + +.PHONY: mostlyclean-libLIBRARIES distclean-libLIBRARIES \ +clean-libLIBRARIES maintainer-clean-libLIBRARIES uninstall-libLIBRARIES \ +install-libLIBRARIES mostlyclean-compile distclean-compile \ +clean-compile maintainer-clean-compile tags mostlyclean-tags \ +distclean-tags clean-tags maintainer-clean-tags distdir \ +mostlyclean-depend distclean-depend clean-depend \ +maintainer-clean-depend info-am info dvi-am dvi check check-am \ +installcheck-am installcheck install-exec-am install-exec \ +install-data-am install-data install-am install uninstall-am uninstall \ +all-redirect all-am all installdirs mostlyclean-generic \ +distclean-generic clean-generic maintainer-clean-generic clean \ +mostlyclean distclean maintainer-clean + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/alliance/src/rdscif/src/cif.h b/alliance/src/rdscif/src/cif.h new file mode 100644 index 00000000..da5433ed --- /dev/null +++ b/alliance/src/rdscif/src/cif.h @@ -0,0 +1,56 @@ +#ifndef __P +# if defined(__STDC__) || defined(__GNUC__) +# define __P(x) x +# else +# define __P(x) () +# endif +#endif +/*------------------------------------------------------------\ +| | +| Tool : RDSCIF | +| | +| File : cif.h | +| | +| Authors : Petrot Frederic & Jacomme Ludovic | +| --------- | +| Date : The king ^ 04/07/93 | +| | +\------------------------------------------------------------*/ + +# ifndef RDSCIF_CIF +# define RDSCIF_CIF + +/*------------------------------------------------------------\ +| | +| Constants | +| | +\------------------------------------------------------------*/ + +/* Fred the king, has written this line !!!! */ + +# define CIF_UNIT 100 + +/* You can't beleive it ?, but it's true !! */ + +/*------------------------------------------------------------\ +| | +| Macro | +| | +\------------------------------------------------------------*/ +/*------------------------------------------------------------\ +| | +| Types | +| | +\------------------------------------------------------------*/ +/*------------------------------------------------------------\ +| | +| Variables | +| | +\------------------------------------------------------------*/ +/*------------------------------------------------------------\ +| | +| Functions | +| | +\------------------------------------------------------------*/ + +# endif diff --git a/alliance/src/rdscif/src/cif_drive.c b/alliance/src/rdscif/src/cif_drive.c new file mode 100644 index 00000000..49cac86a --- /dev/null +++ b/alliance/src/rdscif/src/cif_drive.c @@ -0,0 +1,718 @@ +/*------------------------------------------------------------\ +| | +| Tool : RDSCIF | +| | +| File : cif_drive.c | +| | +| Authors : Petrot Frederic & Jacomme Ludovic | +| --------- --------- | +| Date : The king ^ 04/07/93 ^ The slave | +| | +\------------------------------------------------------------*/ +/*------------------------------------------------------------\ +| | +| Include Files | +| | +\------------------------------------------------------------*/ + +# include +# include +# include + +# include +# include +# include +# include +# include +# include +# include +# include + +# include "cif.h" +# include "cif_error.h" +# include "cif_drive.h" + +/*------------------------------------------------------------\ +| | +| Constants | +| | +\------------------------------------------------------------*/ + + static char CifBuffer[ 256 ]; + + static long CIF_DS_A = 0; + static long CIF_DS_B = 0; + + static ptype_list *HEAD_CIF_MODEL = (ptype_list *)NULL; + static long CifModelIndex = 0; + + static int RDS_CIF_BERKLEY_DRIVER = 0; + + +/*------------------------------------------------------------\ +| | +| Types | +| | +\------------------------------------------------------------*/ +/*------------------------------------------------------------\ +| | +| Variables | +| | +\------------------------------------------------------------*/ +/*------------------------------------------------------------\ +| | +| Functions | +| | +\------------------------------------------------------------*/ +/*------------------------------------------------------------\ +| | +| rdstocifname | +| | +\------------------------------------------------------------*/ + + char *rdstocifname( Name ) + + char *Name; + { + char *Source; + char *Target; + char One; + + if ( Name == (char *)NULL ) + { + return( (char *)NULL ); + } + + One = 1; + + Source = Name; + Target = CifBuffer; + + while ( *Source != '\0' ) + { + if ( *Source == ' ' ) + { + if ( One ) + { + *Target++ = '['; + Source++; + + One = 0; + } + else + { + *Target++ = ']'; + *Target++ = '['; + Source++; + } + } + + if ( ( *Source == SEPAR ) && ( ! One ) ) + { + *Target++ = ']'; + One = 1; + } + + *Target++ = *Source++; + } + + if ( ! One ) + { + *Target++ = ']'; + } + + *Target = '\0'; + + return ( CifBuffer ); + } + +/*------------------------------------------------------------\ +| | +| r_cif_model_list | +| | +\------------------------------------------------------------*/ + + static ptype_list *r_cif_model_list( Figure ) + + rdsfig_list *Figure; + { + rdsins_list *Instance; + rdsfig_list *Model; + ptype_list *List; + + for ( Instance = Figure->INSTANCE; + Instance != (rdsins_list *)NULL; + Instance = Instance->NEXT ) + { + for ( List = HEAD_CIF_MODEL; + List != (ptype_list *)NULL; + List = List->NEXT ) + { + if (((rdsfig_list *)List->DATA)->NAME == Instance->FIGNAME ) + { + break; + } + } + + if ( List == (ptype_list *)NULL ) + { + for ( Model = HEAD_RDSFIG; + Model != (rdsfig_list *)NULL; + Model = Model->NEXT ) + { + if ( Model->NAME == Instance->FIGNAME ) break; + } + + if ( Model == (rdsfig_list *)NULL ) + { + ciferror( CIF_ERROR_MODEL, Instance->FIGNAME, 0 ); + } + + (void)r_cif_model_list( Model ); + } + + } + + HEAD_CIF_MODEL = addptype( HEAD_CIF_MODEL, + ++CifModelIndex, (char *)Figure ); + return( HEAD_CIF_MODEL ); + } + +/*------------------------------------------------------------\ +| | +| cif_model_list | +| | +\------------------------------------------------------------*/ + + ptype_list *cif_model_list( Figure ) + + rdsfig_list *Figure; + { + CifModelIndex = 0; + + if ( HEAD_CIF_MODEL != (ptype_list *)NULL ) + { + freeptype( HEAD_CIF_MODEL); + } + + HEAD_CIF_MODEL = NULL; + + return( r_cif_model_list( Figure ) ); + } + +/*------------------------------------------------------------\ +| | +| write_figure | +| | +\------------------------------------------------------------*/ + + void write_figure( File, Model ) + + FILE *File; + long Model; + { + (void)fprintf( File, "C%ld;\n", Model ); + } + +/*------------------------------------------------------------\ +| | +| write_instance | +| | +\------------------------------------------------------------*/ + + void write_instance( File, Name, Model, X, Y, Trans ) + + FILE *File; + char *Name; + long Model; + long X; + long Y; + long Trans; + { + char Buffer[ 100 ]; + + long Xcif; + long Ycif; + + Xcif = RDS_TO_CIF_UNIT( X ); + Ycif = RDS_TO_CIF_UNIT( Y ); + + switch ( Trans ) + { + case RDS_NOSYM : + (void)sprintf( Buffer, "T%ld, %ld", Xcif, Ycif ); + break; + case RDS_SYM_X : + (void)sprintf( Buffer, "MX T%ld, %ld", Xcif, Ycif ); + break; + case RDS_SYM_Y : + (void)sprintf( Buffer, "MY T%ld, %ld", Xcif, Ycif ); + break; + case RDS_SYMXY : + (void)sprintf( Buffer, "R-1, 0 T%ld, %ld", Xcif, Ycif ); + break; + case RDS_ROT_P : + (void)sprintf( Buffer, "R0, 1 T%ld, %ld", Xcif, Ycif ); + break; + case RDS_ROT_M : + (void)sprintf( Buffer, "R0, -1 T%ld, %ld", Xcif, Ycif ); + break; + case RDS_SY_RP : + (void)sprintf( Buffer, "MX R0, -1 T%ld, %ld", Xcif, Ycif ); + break; + case RDS_SY_RM : + (void)sprintf( Buffer, "MX R0, 1 T%ld, %ld", Xcif, Ycif ); + break; + default : + ciferror( CIF_ERROR_BAD_TRANS, Name, 0 ); + } + + if ( ! RDS_CIF_BERKLEY_DRIVER ) + { + (void)fprintf( File, "4I %s;", Name); + } + else + { + (void)fprintf( File, "91 %s;", Name); + } + + (void)fprintf( File, "C%ld %s;\n", Model, Buffer ); +} + +/*------------------------------------------------------------\ +| | +| write_connector | +| | +\------------------------------------------------------------*/ + + void write_connector( File, Name, Index, Width, X, Y, Dx, Dy, Layer, WriteLayer ) + + FILE *File; + char *Name; + long Index; + long Width; + long X; + long Y; + long Dx; + long Dy; + char *Layer; + char WriteLayer; + { + if ( Name == (char *)NULL ) + { + ciferror( CIF_ERROR_CONNECTOR_NAME, (char *)X, Y ); + } + + if ( WriteLayer ) + { + (void)fprintf( File, "L%s;\n", Layer ); + } + + Name = rdstocifname( Name ); + + if ( ! RDS_CIF_BERKLEY_DRIVER ) + { + (void)fprintf( File, "4X %s %ld %ld %ld %ld %s;\n", + Name, Index, + RDS_TO_CIF_UNIT( X ) + RDS_TO_CIF_UNIT( Dx ) / 2, + RDS_TO_CIF_UNIT( Y ) + RDS_TO_CIF_UNIT( Dy ) / 2, + RDS_TO_CIF_UNIT( Width ), Name ); + } + else + { + (void)fprintf( File, "94 %s %ld %ld %s;\n", + Name, + RDS_TO_CIF_UNIT( X ) + RDS_TO_CIF_UNIT( Dx ) / 2, + RDS_TO_CIF_UNIT( Y ) + RDS_TO_CIF_UNIT( Dy ) / 2, + Layer ); + } + } + +/*------------------------------------------------------------\ +| | +| write_rectangle | +| | +\------------------------------------------------------------*/ + + void write_rectangle( File, Name, X, Y, Dx, Dy, Layer, WriteLayer ) + + FILE *File; + char *Name; + long X; + long Y; + long Dx; + long Dy; + char *Layer; + char WriteLayer; + { + if ( WriteLayer ) + { + (void)fprintf( File, "L%s;\n", Layer ); + } + + if ( ( Name != (char *)NULL ) && + ( *Name != '*' ) && + ( *Name != '\0' ) ) + { + if ( ! RDS_CIF_BERKLEY_DRIVER ) + { + (void)fprintf( File, "4N %s %ld %ld;\n", + rdstocifname( Name ), + RDS_TO_CIF_UNIT( X ) + RDS_TO_CIF_UNIT( Dx ) / 2, + RDS_TO_CIF_UNIT( Y ) + RDS_TO_CIF_UNIT( Dy ) / 2); + } + else + { + (void)fprintf( File, "95 %s %ld %ld %ld %ld %s;\n", + rdstocifname( Name ), + RDS_TO_CIF_UNIT( Dx ), RDS_TO_CIF_UNIT( Dy ), + RDS_TO_CIF_UNIT( X ) + RDS_TO_CIF_UNIT( Dx ) / 2, + RDS_TO_CIF_UNIT( Y ) + RDS_TO_CIF_UNIT( Dy ) / 2, + Layer ); + } + } + + (void)fprintf( File, "B%ld %ld %ld %ld;\n", + RDS_TO_CIF_UNIT( ABSOLUTE( Dx ) ), + RDS_TO_CIF_UNIT( ABSOLUTE( Dy ) ), + RDS_TO_CIF_UNIT( X ) + RDS_TO_CIF_UNIT( Dx ) / 2, + RDS_TO_CIF_UNIT( Y ) + RDS_TO_CIF_UNIT( Dy ) / 2); + } + +/*------------------------------------------------------------\ +| | +| write_header | +| | +\------------------------------------------------------------*/ + + void write_header( File, Name ) + + FILE *File; + char *Name; + { + long Counter; + + (void)time( &Counter ); + (void)fprintf( File, "(rds to CIF driver cvs version $Revision: 1.1 $\n"); + (void)fprintf( File, "technology %s\n", RDS_TECHNO_NAME ); + (void)fprintf( File, "%s" , ctime( &Counter ) ); + (void)fprintf( File, "%s\n", Name ); + (void)fprintf( File, "%s);\n\n", mbkgetenv("USER") ); + } + +/*------------------------------------------------------------\ +| | +| write_header | +| | +\------------------------------------------------------------*/ + + void write_tail( File, X, Y, Dx, Dy ) + + FILE *File; + long X; + long Y; + long Dx; + long Dy; + { + (void)fprintf( File, "(AB : %.2f, %.2f %.2f, %.2f in micron); \n", + (float)X / RDS_UNIT, + (float)Y / RDS_UNIT, + (float)(X + Dx) / RDS_UNIT, + (float)(Y + Dy) / RDS_UNIT ); + } + +/*------------------------------------------------------------\ +| | +| write_model_header | +| | +\------------------------------------------------------------*/ + + void write_model_header( File, ModelName, ModelNum ) + + FILE *File; + char *ModelName; + long ModelNum; + { + (void)fprintf( File, "DS%ld %ld %ld;\n", ModelNum, CIF_DS_A, CIF_DS_B * 2 ); + (void)fprintf( File, "9 %s;\n", ModelName ); + } + +/*------------------------------------------------------------\ +| | +| write_model_abox | +| | +\------------------------------------------------------------*/ + + void write_model_abox( File, X, Y, Dx, Dy ) + + + FILE *File; + long X; + long Y; + long Dx; + long Dy; + { + (void)fprintf( File, "(AB : %.2f, %.2f %.2f, %.2f in micron);\n", + (float)X / RDS_UNIT, + (float)Y / RDS_UNIT, + (float)(X + Dx) / RDS_UNIT, + (float)(Y + Dy) / RDS_UNIT); + + if ( ! RDS_CIF_BERKLEY_DRIVER ) + { + (void)fprintf( File, "4A %ld %ld %ld %ld; \n", + RDS_TO_CIF_UNIT( X ), + RDS_TO_CIF_UNIT( Y ), + RDS_TO_CIF_UNIT( X + Dx ), + RDS_TO_CIF_UNIT( Y + Dy ) ); + } + } + +/*------------------------------------------------------------\ +| | +| write_model_tail | +| | +\------------------------------------------------------------*/ + + void write_model_tail( File ) + + FILE *File; + { + (void)fprintf( File, "DF;\n\n" ); + } + +/*------------------------------------------------------------\ +| | +| getcifmodel | +| | +\------------------------------------------------------------*/ + + long getcifmodel( Head, Name ) + + ptype_list *Head; + char *Name; + { + ptype_list *Scan; + + for ( Scan = Head; + Scan != (ptype_list *)NULL; + Scan = Scan->NEXT ) + { + if (((rdsfig_list *)Scan->DATA)->NAME == Name ) + { + return( Scan->TYPE ); + } + } + + return( 0 ); + } + +/*------------------------------------------------------------\ +| | +| compute_cif_unit | +| | +\------------------------------------------------------------*/ + + void compute_cif_unit() + { + /* why CIF_DS_A, CIF_DS_B ? + the simple of driving CIF would be to take both as 1, and have on + each coordinate a (x * CIF_UNIT)/rds_unit). + The interest here is to shorten the lenght of the numbers in the + CIF output, and to be able to express a precision better that a + centh of a micron. + CIF_DS_A and CIF_DS_B are defined as follow : + (CIF_DS_A / CIF_DS_B) * rds_unit = CIF_UNIT + see CIF documentation for details. + the coodinates for CIF will be computed like + (x * CIF_DS_B) / (CIF_DS_A * rds_unit). + The computation algorithm is equivalent to the one given in the + function RprComputeRdsUnit, so take a look there for details. + + Friendly, The king ... */ + + /* why 2 * CIF_UNIT ? + because all the rectangles in the CIF file are written like + BOXES, ie dx and dy must be even since we drive dx/2 dy/2 + and we don't want to lose any information! */ + int cif_unit = 2 * CIF_UNIT; + + if ( RDS_UNIT < cif_unit ) + { + for ( CIF_DS_A = 1, CIF_DS_B = 1; + ( CIF_DS_A * RDS_UNIT ) != ( cif_unit * CIF_DS_B ); + CIF_DS_B++ ) + { + for ( CIF_DS_A--; + ( CIF_DS_A * RDS_UNIT ) < ( cif_unit * CIF_DS_B ); + (CIF_DS_A)++ ); + + if ( ( CIF_DS_A * RDS_UNIT ) == ( cif_unit * CIF_DS_B ) ) break; + } + } + else + { + for ( CIF_DS_A = 1, CIF_DS_B = 1; + ( CIF_DS_A * RDS_UNIT ) != ( cif_unit * CIF_DS_B ); + CIF_DS_A++ ) + { + for ( CIF_DS_B--; + ( CIF_DS_A * RDS_UNIT ) > ( cif_unit * CIF_DS_B ); + CIF_DS_B++ ); + + if ( ( CIF_DS_A * RDS_UNIT ) == ( cif_unit * CIF_DS_B ) ) break; + } + } + } + +/*------------------------------------------------------------\ +| | +| drive_model | +| | +\------------------------------------------------------------*/ + + void drive_model( File, Model, Figure ) + + FILE *File; + ptype_list *Model; + rdsfig_list *Figure; +{ + rdsrec_list *Rectangle; + rdsins_list *Instance; + int Layer; + int WriteLayer; + long Index; + char *CifLayer; + + Index = 0; + + for ( Layer = 0; Layer < RDS_MAX_LAYER; Layer++ ) + { + if ( Layer == RDS_ABOX ) continue; + + CifLayer = GET_CIF_LAYER( Layer ); + + if ( CifLayer == RDS_CIF_LAYER_EMPTY ) continue; + + WriteLayer = 1; + + for ( Rectangle = Figure->LAYERTAB[ Layer ]; + Rectangle != (rdsrec_list *)NULL; + Rectangle = Rectangle->NEXT ) + { + /* drive connector : + put the connector name in vti cif dialect. + if the rds doesn't come from mbk, the type may be set but the + mbk pointer may be null. */ + + if ( ( ( IsRdsConExter( Rectangle ) ) || + ( IsRdsRefCon ( Rectangle ) ) ) && + ! IsRdsVia( Rectangle ) + ) + { + write_connector( File, + Rectangle->NAME, ++Index, + ( Rectangle->DX > Rectangle->DY ) ? + Rectangle->DX : Rectangle->DY, + Rectangle->X , Rectangle->Y, + Rectangle->DX , Rectangle->DY, + CifLayer, WriteLayer ); + } + + write_rectangle( File, + Rectangle->NAME, + Rectangle->X , Rectangle->Y, + Rectangle->DX, Rectangle->DY, + CifLayer, WriteLayer ); + /* layer choice : + + the layer is driven only once, since in cif when a layer is defined, + all further objects are build with this layer. This is close of the + rds representation, so the writting functions print a layer when the + parameter is not NULL, nothing if it is. The king ... */ + + WriteLayer = 0; + } + } + + for ( Instance = Figure->INSTANCE; + Instance != (rdsins_list *)NULL; + Instance = Instance->NEXT ) + { + write_instance( File, Instance->INSNAME, + getcifmodel( Model, Instance->FIGNAME ), + Instance->X, Instance->Y, + (long)Instance->TRANSF ); + } +} + +/*------------------------------------------------------------\ +| | +| cifsaverdsfig | +| | +\------------------------------------------------------------*/ + + void cifsaverdsfig( Figure ) + + rdsfig_list *Figure; + { + FILE *File; + ptype_list *Model; + ptype_list *List; + rdsrec_list *Abox; + + if ( mbkgetenv( "RDS_CIF_BERKLEY_DRIVER" ) != (char *)0 ) + { + RDS_CIF_BERKLEY_DRIVER = 1; + } + else + { + RDS_CIF_BERKLEY_DRIVER = 0; + } + + compute_cif_unit(); + + List = Model = (ptype_list *)reverse((chain_list *)cif_model_list( Figure ) ); + + if ( ( File = mbkfopen( Figure->NAME, "cif", "w" ) ) == NULL ) + { + ciferror( CIF_ERROR_FILE_OPEN, Figure->NAME, 0 ); + } + + write_header( File, Figure->NAME ); + + while ( Model != (ptype_list *)NULL ) + { + write_model_header( File, ((rdsfig_list *)Model->DATA)->NAME, + Model->TYPE ); + + Abox = ((rdsfig_list *)Model->DATA)->LAYERTAB[ RDS_ABOX ]; + + if ( Abox != (rdsrec_list *)NULL ) + { + write_model_abox( File, Abox->X, Abox->Y, + Abox->DX, Abox->DY ); + } + + drive_model( File, List, ((rdsfig_list *)Model->DATA) ); + write_model_tail( File ); + + Model = Model->NEXT; + } + + write_figure( File, getcifmodel( List, Figure->NAME ) ); + + Abox = Figure->LAYERTAB[ RDS_ABOX ]; + + if ( Abox != (rdsrec_list *)NULL ) + { + write_tail( File, Abox->X, Abox->Y, Abox->DX, Abox->DY ); + } + + (void)fprintf( File, "E \n"); + + if ( fclose( File ) ) + { + ciferror( CIF_ERROR_FILE_CLOSE, Figure->NAME, 0 ); + } + } diff --git a/alliance/src/rdscif/src/cif_drive.h b/alliance/src/rdscif/src/cif_drive.h new file mode 100644 index 00000000..0c81ffd7 --- /dev/null +++ b/alliance/src/rdscif/src/cif_drive.h @@ -0,0 +1,58 @@ +#ifndef __P +# if defined(__STDC__) || defined(__GNUC__) +# define __P(x) x +# else +# define __P(x) () +# endif +#endif +/*------------------------------------------------------------\ +| | +| Tool : RDSCIF | +| | +| File : cif_drive.h | +| | +| Authors : Petrot Frederic & Jacomme Ludovic | +| --------- | +| Date : The king ^ 04/07/93 | +| | +\------------------------------------------------------------*/ + +# ifndef RDSCIF_DRIVE +# define RDSCIF_DRIVE + +/*------------------------------------------------------------\ +| | +| Constants | +| | +\------------------------------------------------------------*/ +/*------------------------------------------------------------\ +| | +| Macro | +| | +\------------------------------------------------------------*/ +/* See the comment in CifComputUnit for the 2 * CIF_UNIT here */ +# define RDS_TO_CIF_UNIT( X ) \ + \ + ( ( ( ( X ) * 2 * CIF_UNIT / RDS_UNIT) * CIF_DS_B ) / CIF_DS_A ) + +# define ABSOLUTE( X ) \ + \ + ( ( ( X ) > 0 ) ? ( X ) : -( X ) ) + +/*------------------------------------------------------------\ +| | +| Types | +| | +\------------------------------------------------------------*/ +/*------------------------------------------------------------\ +| | +| Variables | +| | +\------------------------------------------------------------*/ +/*------------------------------------------------------------\ +| | +| Functions | +| | +\------------------------------------------------------------*/ + +# endif diff --git a/alliance/src/rdscif/src/cif_error.c b/alliance/src/rdscif/src/cif_error.c new file mode 100644 index 00000000..c2cf290c --- /dev/null +++ b/alliance/src/rdscif/src/cif_error.c @@ -0,0 +1,315 @@ +/*------------------------------------------------------------\ +| | +| Tool : RDSCIF | +| | +| File : cif_error.c | +| | +| Authors : Petrot Frederic & Jacomme Ludovic | +| --------- | +| Date : The king ^ 04/07/93 | +| | +\------------------------------------------------------------*/ +/*------------------------------------------------------------\ +| | +| Include Files | +| | +\------------------------------------------------------------*/ + +# include +# include +# include "cif_error.h" + +/*------------------------------------------------------------\ +| | +| Constants | +| | +\------------------------------------------------------------*/ +/*------------------------------------------------------------\ +| | +| Types | +| | +\------------------------------------------------------------*/ +/*------------------------------------------------------------\ +| | +| Variables | +| | +\------------------------------------------------------------*/ +/*------------------------------------------------------------\ +| | +| Functions | +| | +\------------------------------------------------------------*/ +/*------------------------------------------------------------\ +| | +| ciferror | +| | +\------------------------------------------------------------*/ + +void ciferror( Error, Text, Value ) + + char Error; + char *Text; + long Value; +{ + switch( Error ) + { + case CIF_ERROR_BAD_TRANS : + + (void)fprintf( stderr, + "cif109: Unknown instance transformation on `%s'\n", + Text ); + break; + + case CIF_ERROR_CONNECTOR_NAME : + + (void)fprintf( stderr, + "cif109: Rds connector (%ld, %ld) has no name !\n", + (long)Text, Value ); + break; + + case CIF_ERROR_FILE_OPEN : + + (void)fprintf( stderr, + "cif109: Could not open file `%s'\n", + Text ); + break; + + case CIF_ERROR_FILE_CLOSE : + + (void)fprintf( stderr, + "cif109: Could not close file `%s'\n", + Text ); + break; + + case CIF_ERROR_MODEL : + + (void)fprintf( stderr, + "cif109: Could not find model `%s'\n", + Text ); + break; + + case CIF_ERROR_EXPECTED_SEMI : + + (void)fprintf( stderr, + "cif109: Missing ';' line %ld\n", + Value ); + break; + + case CIF_ERROR_EXPECTED_SPACE : + + (void)fprintf( stderr, + "cif109: Missing space, line %ld\n", + Value ); + break; + + case CIF_ERROR_EXPECTED_NAME : + + (void)fprintf( stderr, + "cif109: Missing name, line %ld\n", + Value ); + break; + + case CIF_ERROR_EXPECTED_UNSIGNED : + + (void)fprintf( stderr, + "cif109: Missing unsigned integer, line %ld\n", + Value ); + break; + + case CIF_ERROR_EXPECTED_SIGNED : + + (void)fprintf( stderr, + "cif109: Missing signed integer, line %ld\n", + Value ); + break; + + case CIF_ERROR_EXPECTED_LAYER : + + (void)fprintf( stderr, + "cif109: Missing layer name, line %ld\n", + Value ); + break; + + case CIF_ERROR_EXPECTED_MANHATTAN : + + (void)fprintf( stderr, + "cif109: Expected manhattan distance, line %ld\n", + Value ); + break; + + case CIF_ERROR_EXPECTED_EOF : + + (void)fprintf( stderr, + "cif109: End of file expected, line %ld\n", + Value ); + break; + + case CIF_ERROR_UNEXPECTED_EOF : + + (void)fprintf( stderr, + "cif109: Unexpected end of file, line %ld\n", + Value ); + break; + + case CIF_ERROR_UNSIGNED_OVERFLOW : + + (void)fprintf( stderr, + "cif109: Unsigned integer overflow, line %ld\n", + Value ); + break; + + case CIF_ERROR_SIGNED_OVERFLOW : + + (void)fprintf( stderr, + "cif109: Signed integer overflow, line %ld\n", + Value ); + break; + + case CIF_ERROR_LAYER_UNKNOWN : + + (void)fprintf( stderr, + "cif109: Layer unknown, line %ld\n", + Value ); + break; + + case CIF_ERROR_POLYGON_EMPTY : + + (void)fprintf( stderr, + "cif109: Polygon empty, line %ld\n", + Value ); + break; + + case CIF_ERROR_POLYGON_OVERFLOW : + + (void)fprintf( stderr, + "cif109: Polygon overflow, line %ld\n", + Value ); + break; + + case CIF_ERROR_POLYGON_NOT_REC : + + (void)fprintf( stderr, + "cif109: Polygon not rectangular, line %ld\n", + Value ); + break; + + case CIF_ERROR_SYMBOL_STARTED : + + (void)fprintf( stderr, + "cif109: Symbol has already started, line %ld\n", + Value ); + break; + + case CIF_ERROR_SYMBOL_NOT_STARTED : + + (void)fprintf( stderr, + "cif109: Symbol hasn't started, line %ld\n", + Value ); + break; + + case CIF_ERROR_BAD_DEFINE : + + (void)fprintf( stderr, + "cif109: Bad define, line %ld\n", + Value ); + break; + + case CIF_ERROR_BAD_COMMAND : + + (void)fprintf( stderr, + "cif109: Bad command, line %ld\n", + Value ); + break; + + case CIF_ERROR_BAD_COMMENT : + + (void)fprintf( stderr, + "cif109: Bad comment, line %ld\n", + Value ); + break; + + case CIF_ERROR_BAD_CONNECTOR : + + (void)fprintf( stderr, + "cif109: Bad connector specification, line %ld\n", + Value ); + break; + + case CIF_ERROR_BAD_SYMBOL : + + (void)fprintf( stderr, + "cif109: Bad symbol specification, line %ld\n", + Value ); + break; + + case CIF_ERROR_SYMBOL_NOT_DEFINE : + + (void)fprintf( stderr, + "cif109: Symbol number %ld not define\n", + Value ); + break; + + case CIF_ERROR_BAD_MIRROR : + + (void)fprintf( stderr, + "cif109: Bad mirror specification, line %ld\n", + Value ); + break; + + case CIF_ERROR_NO_TOP_MODEL : + + (void)fprintf( stderr, + "cif109: there is no top model !\n" + ); + break; + } + + EXIT( 1 ); +} + +/*------------------------------------------------------------\ +| | +| cifwarning | +| | +\------------------------------------------------------------*/ + +void cifwarning( Warning, Text, Value ) + + char Warning; + char *Text; + long Value; +{ + switch( Warning ) + { + case CIF_WARNING_PHYSICAL_GRID : + + (void)fprintf( stderr, + "cif109: Rectangle not aligned on the physical grid !\n" + ); + break; + + case CIF_WARNING_UNCONNECTED_NODE : + + (void)fprintf( stderr, + "cif109: Node %s is not connected, in model %s !\n", + Text, (char *)Value + ); + break; + + case CIF_WARNING_ROUND_FLASH : + + (void)fprintf( stderr, + "cif109: Command round flash ignored, line %ld !\n", + Value + ); + break; + + case CIF_WARNING_USER_COMMAND : + + (void)fprintf( stderr, + "cif109: User command ignored, line %ld !\n", + Value + ); + break; + } +} diff --git a/alliance/src/rdscif/src/cif_error.h b/alliance/src/rdscif/src/cif_error.h new file mode 100644 index 00000000..d68792cd --- /dev/null +++ b/alliance/src/rdscif/src/cif_error.h @@ -0,0 +1,90 @@ +#ifndef __P +# if defined(__STDC__) || defined(__GNUC__) +# define __P(x) x +# else +# define __P(x) () +# endif +#endif +/*------------------------------------------------------------\ +| | +| Tool : RDSCIF | +| | +| File : cif_error.h | +| | +| Authors : Petrot Frederic & Jacomme Ludovic | +| --------- | +| Date : The king ^ 04/07/93 | +| | +\------------------------------------------------------------*/ + +# ifndef RDSCIF_ERROR +# define RDSCIF_ERROR + +/*------------------------------------------------------------\ +| | +| Constants | +| | +\------------------------------------------------------------*/ + +# define CIF_ERROR_BAD_TRANS 0 +# define CIF_ERROR_CONNECTOR_NAME 1 +# define CIF_ERROR_FILE_OPEN 2 +# define CIF_ERROR_FILE_CLOSE 3 +# define CIF_ERROR_MODEL 4 + +# define CIF_ERROR_EXPECTED_SEMI 5 +# define CIF_ERROR_EXPECTED_SPACE 6 +# define CIF_ERROR_EXPECTED_NAME 7 +# define CIF_ERROR_EXPECTED_SIGNED 8 +# define CIF_ERROR_EXPECTED_UNSIGNED 9 +# define CIF_ERROR_EXPECTED_LAYER 10 +# define CIF_ERROR_EXPECTED_MANHATTAN 11 +# define CIF_ERROR_EXPECTED_EOF 12 +# define CIF_ERROR_UNEXPECTED_EOF 13 +# define CIF_ERROR_SIGNED_OVERFLOW 14 +# define CIF_ERROR_UNSIGNED_OVERFLOW 15 +# define CIF_ERROR_LAYER_UNKNOWN 16 +# define CIF_ERROR_POLYGON_EMPTY 17 +# define CIF_ERROR_POLYGON_OVERFLOW 18 +# define CIF_ERROR_POLYGON_NOT_REC 19 +# define CIF_ERROR_SYMBOL_STARTED 20 +# define CIF_ERROR_SYMBOL_NOT_STARTED 21 +# define CIF_ERROR_BAD_DEFINE 22 +# define CIF_ERROR_BAD_COMMAND 23 +# define CIF_ERROR_BAD_COMMENT 24 +# define CIF_ERROR_BAD_CONNECTOR 25 +# define CIF_ERROR_BAD_SYMBOL 26 +# define CIF_ERROR_SYMBOL_NOT_DEFINE 27 +# define CIF_ERROR_BAD_MIRROR 28 +# define CIF_ERROR_NO_TOP_MODEL 29 + +# define CIF_WARNING_PHYSICAL_GRID 0 +# define CIF_WARNING_UNCONNECTED_NODE 1 +# define CIF_WARNING_ROUND_FLASH 2 +# define CIF_WARNING_USER_COMMAND 3 + +/*------------------------------------------------------------\ +| | +| Macro | +| | +\------------------------------------------------------------*/ +/*------------------------------------------------------------\ +| | +| Types | +| | +\------------------------------------------------------------*/ +/*------------------------------------------------------------\ +| | +| Variables | +| | +\------------------------------------------------------------*/ +/*------------------------------------------------------------\ +| | +| Functions | +| | +\------------------------------------------------------------*/ + + extern void ciferror __P((char Error, char *Text, long Value)); + extern void cifwarning __P((char Warning, char *Text, long Value)); + +# endif diff --git a/alliance/src/rdscif/src/cif_parse.c b/alliance/src/rdscif/src/cif_parse.c new file mode 100644 index 00000000..7faa5a7c --- /dev/null +++ b/alliance/src/rdscif/src/cif_parse.c @@ -0,0 +1,1793 @@ +/*------------------------------------------------------------\ +| | +| Tool : RDSCIF | +| | +| File : cif_parse.c | +| | +| Authors : Jacomme Ludovic | +| | +| Date : 24/08/93 | +| | +\------------------------------------------------------------*/ +/*------------------------------------------------------------\ +| | +| Include Files | +| | +\------------------------------------------------------------*/ + +# include +# include +# include +# include + +# include +# include +# include +# include +# include +# include +# include +# include + +# include "cif.h" +# include "cif_error.h" +# include "cif_parse.h" + +/*------------------------------------------------------------\ +| | +| Constants | +| | +\------------------------------------------------------------*/ +/*------------------------------------------------------------\ +| | +| Types | +| | +\------------------------------------------------------------*/ +/*------------------------------------------------------------\ +| | +| Variables | +| | +\------------------------------------------------------------*/ + +static FILE *Stream; +static char CifNextChar; +static long CifLineCounter; + +static long CifScaleA; +static long CifScaleB; + +static char CifCurrentLayer; + +static symbol_list *CifTopSymbol; +static rdsfig_list *CifCurrentFigure; +static symbol_list *CifCurrentSymbol; +static char *CifInstanceName; +static long CifInstanceCounter; + +static symbol_list *HEAD_SYMBOL[ CIF_MAX_SYMBOL_HEAD ]; +static node_list *HEAD_NODE = (node_list *)NULL; +static connector_list *HEAD_CONNECTOR = (connector_list *)NULL; + +static char CifBuffer[ CIF_MAX_BUFFER ]; +static char CifFirstSymbol = 1; +static char *CifOboxKeyword = (char *)NULL; + +/*------------------------------------------------------------\ +| | +| Functions | +| | +\------------------------------------------------------------*/ +/*------------------------------------------------------------\ +| | +| Symbol Functions | +| | +\------------------------------------------------------------*/ +/*------------------------------------------------------------\ +| | +| Cif Add Symbol | +| | +\------------------------------------------------------------*/ + +static symbol_list *CifAddSymbol( Number ) + + long Number; +{ + symbol_list *Symbol; + symbol_list *Scan; + int Index; + + Index = Number & CIF_MASK_SYMBOL; + + for ( Scan = HEAD_SYMBOL[ Index ]; + Scan != (symbol_list *)NULL; + Scan = Scan->NEXT ) + { + if ( Scan->NUMBER == Number ) return( Scan ); + } + + Symbol = (symbol_list *)rdsalloc( sizeof(symbol_list), RDS_ALLOC_HEAP ); + + Symbol->NEXT = HEAD_SYMBOL[ Index ]; + Symbol->NUMBER = Number; + HEAD_SYMBOL[ Index ] = Symbol; + + return( Symbol ); +} + +/*------------------------------------------------------------\ +| | +| Cif Free Symbol | +| | +\------------------------------------------------------------*/ + +static void CifFreeSymbol() +{ + symbol_list *Scan; + symbol_list *Del; + int Index; + + for ( Index = 0; Index < CIF_MAX_SYMBOL_HEAD; Index++ ) + { + if ( ! CifFirstSymbol ) + { + Scan = HEAD_SYMBOL[ Index ]; + + while ( Scan != (symbol_list *)NULL ) + { + Del = Scan; + Scan = Scan->NEXT; + + rdsfreeheap( Del, sizeof( symbol_list ) ); + } + } + + HEAD_SYMBOL[ Index ] = (symbol_list *)NULL; + } + + CifFirstSymbol = 0; +} + +/*------------------------------------------------------------\ +| | +| Cif Search Symbol | +| | +\------------------------------------------------------------*/ + +static symbol_list *CifSearchSymbol( Number ) + + long Number; +{ + symbol_list *Symbol; + int Index; + + Index = Number & CIF_MASK_SYMBOL; + + for ( Symbol = HEAD_SYMBOL[ Index ]; + Symbol != (symbol_list *)NULL; + Symbol = Symbol->NEXT ) + { + if ( Symbol->NUMBER == Number ) + { + return( Symbol ); + } + } + + return( CifAddSymbol( Number ) ); +} + +/*------------------------------------------------------------\ +| | +| Cif Del Symbol | +| | +\------------------------------------------------------------*/ + +static void CifDelSymbol( Number ) + + long Number; +{ + symbol_list *Symbol; + int Index; + + Index = Number & CIF_MASK_SYMBOL; + + for ( Symbol = HEAD_SYMBOL[ Index ]; + Symbol != (symbol_list *)NULL; + Symbol = Symbol->NEXT ) + { + if ( Symbol->NUMBER == Number ) + { + if ( Symbol->MODEL != (rdsfig_list *)NULL ) + { + delrdsfig( Symbol->MODEL->NAME ); + } + + Symbol->MODEL = (rdsfig_list *)NULL; + } + } +} + +/*------------------------------------------------------------\ +| | +| Node Functions | +| | +\------------------------------------------------------------*/ +/*------------------------------------------------------------\ +| | +| Cif Add Node | +| | +\------------------------------------------------------------*/ + +static node_list *CifAddNode( Name, X, Y, Layer ) + + char *Name; + long X; + long Y; + char Layer; +{ + node_list *Node; + + Node = (node_list *)rdsalloc( sizeof(node_list), RDS_ALLOC_HEAP ); + + Node->NEXT = HEAD_NODE; + Node->NAME = Name; + Node->X = CIF_TO_RDS_UNIT( X ); + Node->Y = CIF_TO_RDS_UNIT( Y ); + Node->LAYER = Layer; + HEAD_NODE = Node; + + return( Node ); +} + +/*------------------------------------------------------------\ +| | +| Cif Free Node | +| | +\------------------------------------------------------------*/ + +static void CifFreeNode() +{ + node_list *Scan; + node_list *Del; + + Scan = HEAD_NODE; + + while ( Scan != (node_list *)NULL ) + { + Del = Scan; + Scan = Scan->NEXT; + + rdsfreeheap( Del, sizeof( node_list ) ); + } + + HEAD_NODE = (node_list *)NULL; +} + +/*------------------------------------------------------------\ +| | +| Connector Functions | +| | +\------------------------------------------------------------*/ +/*------------------------------------------------------------\ +| | +| Cif Add Connector | +| | +\------------------------------------------------------------*/ + +static connector_list *CifAddConnector( Name, X, Y, Width, Layer ) + + char *Name; + long X; + long Y; + long Width; + char Layer; +{ + connector_list *Connector; + + Connector = + + (connector_list *)rdsalloc( sizeof(connector_list), RDS_ALLOC_HEAP ); + + Connector->NEXT = HEAD_CONNECTOR; + Connector->NAME = Name; + Connector->X = CIF_TO_RDS_UNIT( X ); + Connector->Y = CIF_TO_RDS_UNIT( Y ); + Connector->WIDTH = CIF_TO_RDS_UNIT( Width ); + Connector->LAYER = Layer; + HEAD_CONNECTOR = Connector; + + return( Connector ); +} + +/*------------------------------------------------------------\ +| | +| Cif Free Connector | +| | +\------------------------------------------------------------*/ + +static void CifFreeConnector() +{ + connector_list *Scan; + connector_list *Del; + + Scan = HEAD_CONNECTOR; + + while ( Scan != (connector_list *)NULL ) + { + Del = Scan; + Scan = Scan->NEXT; + + rdsfreeheap( Del, sizeof( connector_list ) ); + } + + HEAD_CONNECTOR = (connector_list *)NULL; +} + +/*------------------------------------------------------------\ +| | +| Cif Get Rectangle | +| | +\------------------------------------------------------------*/ + +static rdsrec_list *CifGetRectangle( Figure, X, Y, Layer ) + + rdsfig_list *Figure; + long X; + long Y; + char Layer; +{ + rdsrec_list *Scan; + + for ( Scan = Figure->LAYERTAB[ (int)Layer ]; + Scan != (rdsrec_list * )NULL; + Scan = Scan->NEXT) + { + if ( ( X >= Scan->X ) && + ( Y >= Scan->Y ) && + ( X <= Scan->X + Scan->DX ) && + ( Y <= Scan->Y + Scan->DY ) ) + { + return Scan; + } + } + + return ( (rdsrec_list * )NULL ); +} + +/*------------------------------------------------------------\ +| | +| Character Functions | +| | +\------------------------------------------------------------*/ +/*------------------------------------------------------------\ +| | +| CifGetChar | +| | +\------------------------------------------------------------*/ + +static char CifGetChar() +{ + int ReadChar; + + ReadChar = CifNextChar; + + if ( ReadChar != EOF ) + { + CifNextChar = fgetc( Stream ); + + if ( CifNextChar == '\n' ) CifLineCounter++; + } + + return( (char)ReadChar ); +} + +/*------------------------------------------------------------\ +| | +| CifSkipBlank | +| | +\------------------------------------------------------------*/ + +static void CifSkipBlank() +{ + char Found; + + Found = 0; + + while ( ! Found ) + { + switch ( CifNextChar ) + { + case '(' : + case ')' : + case ';' : + case '-' : + case EOF : + + Found = 1; + break; + + default : + + if ( isdigit( (int)CifNextChar ) || + isupper( (int)CifNextChar ) ) Found = 1; + else + CifGetChar(); + } + } +} + +/*------------------------------------------------------------\ +| | +| CifSkipSeparator | +| | +\------------------------------------------------------------*/ + +static void CifSkipSeparator() +{ + char Found; + + Found = 0; + + while ( ! Found ) + { + + switch ( CifNextChar ) + { + case '(' : + case ')' : + case ';' : + case '-' : + case EOF : + + Found = 1; + break; + + default : + + if ( isdigit( (int)CifNextChar ) ) Found = 1; + else CifGetChar(); + } + } +} + +/*------------------------------------------------------------\ +| | +| CifSkipSpace | +| | +\------------------------------------------------------------*/ + +static void CifSkipSpace() +{ + while ( isspace( (int)CifNextChar ) ) + { + CifGetChar(); + } +} + +/*------------------------------------------------------------\ +| | +| CifSkipUserText | +| | +\------------------------------------------------------------*/ + +static void CifSkipUserText() +{ + while ( ( CifNextChar != (char)EOF ) && + ( CifNextChar != ';' ) ) + { + CifGetChar(); + } +} + +/*------------------------------------------------------------\ +| | +| CifReadSemi | +| | +\------------------------------------------------------------*/ + +static void CifReadSemi() + +{ + if ( ( CifNextChar != (char)EOF ) && + ( CifNextChar != ';' ) ) + { + ciferror( CIF_ERROR_EXPECTED_SEMI, NULL, CifLineCounter ); + } + + CifGetChar(); +} + +/*------------------------------------------------------------\ +| | +| CifReadSpace | +| | +\------------------------------------------------------------*/ + +static void CifReadSpace() +{ + char Found; + + Found = 0; + + while ( isspace( (int)CifNextChar ) ) + { + CifGetChar(); Found = 1; + } + + if ( ! Found ) + { + ciferror( CIF_ERROR_EXPECTED_SPACE, NULL, CifLineCounter ); + } +} + +/*------------------------------------------------------------\ +| | +| CifReadName | +| | +\------------------------------------------------------------*/ + +# if 0 +static void CifReadName() +{ + char Found; + + Found = 0; + + while ( ( ! isspace( CifNextChar ) ) && + ( CifNextChar != '{' ) && + ( CifNextChar != '}' ) && + ( CifNextChar != (char)EOF ) && + ( CifNextChar != ';' ) ) + { + Found = 1; CifGetChar(); + } + + if ( ! Found ) + { + ciferror( CIF_ERROR_EXPECTED_NAME, NULL, CifLineCounter ); + } +} +# endif + +/*------------------------------------------------------------\ +| | +| CifReadComment | +| | +\------------------------------------------------------------*/ + + static void CifReadComment() + { + int Count; + + Count = 1; + + while ( Count ) + { + switch ( CifGetChar() ) + { + case '(' : Count = Count + 1; + break; + + case ')' : Count = Count - 1; + break; + + case EOF : + + ciferror( CIF_ERROR_BAD_COMMENT, NULL, CifLineCounter ); + } +} +} + + +/*------------------------------------------------------------\ +| | +| CifGetName | +| | +\------------------------------------------------------------*/ + +static char *CifGetName() +{ + char Found; + char *Name; + + Found = 0; + Name = CifBuffer; + + while ( ( ! isspace( (int)CifNextChar ) ) && + ( CifNextChar != (char)EOF ) && + ( CifNextChar != '{' ) && + ( CifNextChar != '}' ) && + ( CifNextChar != ';' ) ) + { + *Name++ = CifGetChar(); Found = 1; + } + + *Name = '\0'; + + if ( ! Found ) + { + ciferror( CIF_ERROR_EXPECTED_NAME, NULL, CifLineCounter ); + } + + return( namealloc( CifBuffer ) ); +} + +/*------------------------------------------------------------\ +| | +| CifSkipOrient | +| | +\------------------------------------------------------------*/ + +static void CifSkipOrient() +{ + if ( CifNextChar == '{' ) + { + while ( ( CifNextChar != '}' ) && + ( CifNextChar != (char)EOF ) ) + { + CifGetChar(); + } + + if ( CifNextChar == '}' ) CifGetChar(); + } +} + +/*------------------------------------------------------------\ +| | +| CifGetLayer | +| | +\------------------------------------------------------------*/ + +static char CifGetLayer() +{ + char Found; + char *Name; + int Layer; + char *CifLayer; + + Found = 0; + Name = CifBuffer; + + while ( ( ( CifNextChar >= 'A' ) && + ( CifNextChar <= 'Z' ) ) || + ( isdigit( (int)CifNextChar ) ) ) + { + *Name++ = CifGetChar(); Found = 1; + } + + *Name = '\0'; + + if ( ! Found ) + { + ciferror( CIF_ERROR_EXPECTED_LAYER, NULL, CifLineCounter ); + } + + for ( Layer = 0; Layer < RDS_MAX_LAYER; Layer++ ) + { + CifLayer = GET_CIF_LAYER( Layer ); + + if ( CifLayer != RDS_CIF_LAYER_EMPTY ) + { + if ( ! strcmp( CifLayer, CifBuffer ) ) + { + return( Layer ); + } + } + } + + ciferror( CIF_ERROR_LAYER_UNKNOWN, NULL, CifLineCounter ); + + return( -1 ); +} + +/*------------------------------------------------------------\ +| | +| CifGetUnsigned | +| | +\------------------------------------------------------------*/ + +static unsigned long CifGetUnsigned() +{ + char Error; + unsigned long Value; + + Error = 1; + Value = 0; + + CifSkipSeparator(); + + while ( ( Value < CIF_MAX_UNSIGNED ) && + ( CifNextChar >= '0' ) && + ( CifNextChar <= '9' ) ) + { + Value *= 10; + Value += CifGetChar() - '0'; + Error = 0; + } + + if ( Error ) + { + ciferror( CIF_ERROR_EXPECTED_UNSIGNED, NULL, CifLineCounter ); + } + + if ( ( CifNextChar >= '0' ) && + ( CifNextChar <= '9' ) ) + { + ciferror( CIF_ERROR_UNSIGNED_OVERFLOW, NULL, CifLineCounter ); + } + + return( Value ); +} + +/*------------------------------------------------------------\ +| | +| CifGetSigned | +| | +\------------------------------------------------------------*/ + +static unsigned long CifGetSigned() +{ + char Error; + char Neg; + unsigned long Value; + + Error = 1; + Value = 0; + + CifSkipSeparator(); + + Neg = ( CifNextChar == '-' ); + + if ( Neg ) + { + CifGetChar(); + } + + while ( ( Value < CIF_MAX_SIGNED ) && + ( CifNextChar >= '0' ) && + ( CifNextChar <= '9' ) ) + { + Value *= 10; + Value += CifGetChar() - '0'; + Error = 0; + } + + if ( Error ) + { + ciferror( CIF_ERROR_EXPECTED_SIGNED, NULL, CifLineCounter ); + } + + if ( ( CifNextChar >= '0' ) && + ( CifNextChar <= '9' ) ) + { + ciferror( CIF_ERROR_SIGNED_OVERFLOW, NULL, CifLineCounter ); + } + + if ( Neg ) Value = - Value; + + return( Value ); +} + +/*------------------------------------------------------------\ +| | +| CifGetPoint | +| | +\------------------------------------------------------------*/ + +static void CifGetPoint( Point ) + + coord_t *Point; +{ + Point->X = CifGetSigned(); + Point->Y = CifGetSigned(); +} + +/*------------------------------------------------------------\ +| | +| CifGetPolygon | +| | +\------------------------------------------------------------*/ + +static void CifGetPolygon() +{ + long FirstX; + long FirstY; + int Counter; + int NewCounter; + coord_t *NewArray; + coord_t PointArray[ CIF_MAX_POINT ]; + + Counter = 0; + FirstX = FirstY = 0; + + CifSkipSeparator(); + + while ( ( ( CifNextChar >= '0' ) && + ( CifNextChar <= '9' ) ) || + ( CifNextChar == '-' ) ) + { + CifGetPoint( &PointArray[ Counter++ ] ); + + if ( Counter == 1 ) + { + FirstX = PointArray[0].X; + FirstY = PointArray[0].Y; + } + + if ( Counter >= CIF_MAX_POINT ) + { + ciferror( CIF_ERROR_POLYGON_OVERFLOW, NULL, CifLineCounter ); + } + + CifSkipSeparator(); + } + + if ( Counter == 0 ) + { + ciferror( CIF_ERROR_POLYGON_EMPTY, NULL, CifLineCounter ); + } + + PointArray[ Counter ].X = FirstX; + PointArray[ Counter++ ].Y = FirstY; + + if ( ispolyrec( PointArray, Counter ) == 0 ) + { + ciferror( CIF_ERROR_POLYGON_NOT_REC, NULL, CifLineCounter ); + } + + poly2diag( PointArray, Counter, + ( ((double)CifScaleA*RDS_UNIT) / (CifScaleB*CIF_UNIT) ), + &NewArray, &NewCounter ); + + diag2rec( CifCurrentFigure, CifCurrentLayer, NewArray, NewCounter ); +} + +/*------------------------------------------------------------\ +| | +| CifCommandPolygon | +| | +\------------------------------------------------------------*/ + +void CifCommandPolygon() +{ + CifGetPolygon(); +} + +/*------------------------------------------------------------\ +| | +| CifCommandBox | +| | +\------------------------------------------------------------*/ + +void CifCommandBox() +{ + rdsrec_list *Rec; + long Swap; + long RotX; + long RotY; + long X; + long Y; + long Dx; + long Dy; + coord_t Center; + + Dx = CifGetUnsigned(); + Dy = CifGetUnsigned(); + + CifGetPoint( &Center ); + + CifSkipSeparator(); + + if ( ( ( CifNextChar >= '0' ) && + ( CifNextChar <= '9' ) ) || + ( CifNextChar == '-' ) ) + { + RotX = CifGetSigned(); + RotY = CifGetSigned(); + + if ( ( RotX != 0 ) && + ( RotY != 0 ) ) + { + ciferror( CIF_ERROR_EXPECTED_MANHATTAN, NULL, CifLineCounter ); + } + } + else + { + RotY = 0; + } + + if ( RotY != 0 ) + { + Swap = Dx; + Dx = Dy; + Dy = Swap; + } + + X = CIF_TO_RDS_UNIT( Center.X - ( Dx >> 1 ) ); + Y = CIF_TO_RDS_UNIT( Center.Y - ( Dy >> 1 ) ); + Dx = CIF_TO_RDS_UNIT( Dx ); + Dy = CIF_TO_RDS_UNIT( Dy ); + + Rec = addrdsfigrec( CifCurrentFigure, NULL, + CifCurrentLayer, X, Y, Dx, Dy ); + + if ( CheckPhysicalGridAligned( X ) || + CheckPhysicalGridAligned( Y ) || + CheckPhysicalGridAligned( Dx ) || + CheckPhysicalGridAligned( Dy ) ) + { + cifwarning( CIF_WARNING_PHYSICAL_GRID, NULL, 0 ); + roundrdsrec( Rec ); + } +} + +/*------------------------------------------------------------\ +| | +| CifCommandRoundFlash | +| | +\------------------------------------------------------------*/ + +void CifCommandRoundFlash() +{ + cifwarning( CIF_WARNING_ROUND_FLASH, NULL, CifLineCounter ); + + CifGetUnsigned(); + + CifGetSigned(); + CifGetSigned(); +} + +/*------------------------------------------------------------\ +| | +| CifCommandWire | +| | +\------------------------------------------------------------*/ + +void CifCommandWire() +{ + CifGetUnsigned(); + CifGetPolygon(); +} + +/*------------------------------------------------------------\ +| | +| CifCommandLayer | +| | +\------------------------------------------------------------*/ + +void CifCommandLayer() +{ + CifSkipBlank(); + CifCurrentLayer = CifGetLayer(); +} + +/*------------------------------------------------------------\ +| | +| CifCommandDefineStart | +| | +\------------------------------------------------------------*/ + +void CifCommandDefineStart() +{ + if ( CifCurrentSymbol != (symbol_list *)NULL ) + { + ciferror( CIF_ERROR_SYMBOL_STARTED, NULL, CifLineCounter ); + } + + CifCurrentSymbol = CifAddSymbol( CifGetUnsigned() ); + + CifSkipSeparator(); + + if ( isdigit( (int)CifNextChar ) ) + { + CifScaleA = CifGetUnsigned(); + CifScaleB = CifGetUnsigned(); + } + else + { + CifScaleA = 1; + CifScaleB = 1; + } +} + +/*------------------------------------------------------------\ +| | +| CifCommandDefineFinished | +| | +\------------------------------------------------------------*/ + +void CifCommandDefineFinished() +{ + node_list *ScanNode; + connector_list *ScanConnector; + rdsfig_list *Figure; + rdsrec_list *Rec; + char Reference; + long XAB1; + long XAB2; + long YAB1; + long YAB2; + long X; + long Y; + long Dx; + long Dy; + + if ( CifCurrentSymbol == (symbol_list *)NULL ) + { + ciferror( CIF_ERROR_SYMBOL_NOT_STARTED, NULL, CifLineCounter ); + } + + Figure = CifCurrentSymbol->MODEL; + + if ( Figure == (rdsfig_list *)NULL ) + { + ciferror( CIF_ERROR_BAD_SYMBOL, NULL, CifLineCounter ); + } + + CifScaleA = 1; + CifScaleB = 1; + + for ( ScanNode = HEAD_NODE; + ScanNode != (node_list *)NULL; + ScanNode = ScanNode->NEXT ) + { + Rec = CifGetRectangle( Figure, + ScanNode->X, ScanNode->Y, + ScanNode->LAYER ); + + if ( Rec == (rdsrec_list *)NULL ) + { + cifwarning( CIF_WARNING_UNCONNECTED_NODE, + ScanNode->NAME, + (long)CifCurrentSymbol->MODEL->NAME ); + } + else Rec->NAME = ScanNode->NAME; + } + + CifFreeNode(); + + if ( HEAD_CONNECTOR != (connector_list *)NULL ) + { + Rec = Figure->LAYERTAB[ RDS_ABOX ]; + + if ( Rec != (rdsrec_list *)NULL ) + { + XAB1 = Rec->X; + XAB2 = XAB1 + Rec->DX; + YAB1 = Rec->Y; + YAB2 = YAB1 + Rec->DY; + } + else + { + XAB2 = XAB1 = HEAD_CONNECTOR->X; + YAB2 = YAB1 = HEAD_CONNECTOR->Y; + + for ( ScanConnector = HEAD_CONNECTOR->NEXT; + ScanConnector != (connector_list *)NULL; + ScanConnector = ScanConnector->NEXT ) + { + if ( ScanConnector->X < XAB1 ) XAB1 = ScanConnector->X; + else + if ( ScanConnector->X > XAB2 ) XAB2 = ScanConnector->X; + + if ( ScanConnector->Y < YAB1 ) YAB1 = ScanConnector->Y; + else + if ( ScanConnector->Y > YAB2 ) YAB2 = ScanConnector->Y; + } + + if ( ( XAB1 < XAB2 ) && ( YAB1 < YAB2 ) ) + { + Rec = addrdsfigrec( Figure, Figure->NAME, RDS_ABOX, + XAB1, YAB1, XAB2 - XAB1, YAB2 - YAB1 ); + + SetRdsFigure( Rec ); + } + } + + for ( ScanConnector = HEAD_CONNECTOR; + ScanConnector != (connector_list *)NULL; + ScanConnector = ScanConnector->NEXT ) + { + Reference = 1; + + if ( ( ScanConnector->X == XAB1 ) || + ( ScanConnector->X == XAB2 ) ) + { + if ( ( ScanConnector->Y >= YAB1 ) && + ( ScanConnector->Y <= YAB2 ) ) + { + Reference = 0; + } + + Dx = GET_S2R_LAYER_WIDTH( ScanConnector->LAYER ); + Dy = ScanConnector->WIDTH; + } + else + if ( ( ScanConnector->Y == YAB1 ) || + ( ScanConnector->Y == YAB2 ) ) + { + if ( ( ScanConnector->X >= XAB1 ) && + ( ScanConnector->X <= XAB2 ) ) + { + Reference = 0; + } + + Dy = GET_S2R_LAYER_WIDTH( ScanConnector->LAYER ); + Dx = ScanConnector->WIDTH; + } + else + { + Dy = Dx = GET_S2R_LAYER_WIDTH( ScanConnector->LAYER ); + } + + X = ScanConnector->X - ( Dx >> 1 ); + Y = ScanConnector->Y - ( Dy >> 1 ); + + Rec = addrdsfigrec( CifCurrentFigure, ScanConnector->NAME, + ScanConnector->LAYER, + X, Y, Dx, Dy ); + + if ( Reference ) + { + SetRdsReference( Rec ); + SetRdsRefCon( Rec ); + } + else + { + SetRdsConnector( Rec ); + SetRdsConExter( Rec ); + } + + if ( CheckPhysicalGridAligned( X ) || + CheckPhysicalGridAligned( Y ) || + CheckPhysicalGridAligned( Dx ) || + CheckPhysicalGridAligned( Dy ) ) + { + cifwarning( CIF_WARNING_PHYSICAL_GRID, NULL, 0 ); + roundrdsrec( Rec ); + } + } + + CifFreeConnector(); + } + + CifCurrentSymbol = (symbol_list *)NULL; +} + +/*------------------------------------------------------------\ +| | +| CifCommandDefineDelete | +| | +\------------------------------------------------------------*/ + +void CifCommandDefineDelete() +{ + if ( CifCurrentSymbol != (symbol_list *)NULL ) + { + ciferror( CIF_ERROR_SYMBOL_STARTED, NULL, CifLineCounter ); + } + + CifDelSymbol( CifGetUnsigned ); +} + +/*------------------------------------------------------------\ +| | +| CifCommandCall | +| | +\------------------------------------------------------------*/ + +void CifCommandCall() +{ + symbol_list *Symbol; + rdsins_list *Instance; + long Number; + long RotX; + long RotY; + long Xins; + long Yins; + int Sym; + int Top; + int Continue; + + if ( CifInstanceName == (char *)NULL ) + { + sprintf( CifBuffer, "magic_%ld", CifInstanceCounter++ ); + CifInstanceName = namealloc( CifBuffer ); + } + + Number = CifGetUnsigned(); + Top = ( CifNextChar == ';' ); + + CifSkipBlank(); + + Symbol = CifSearchSymbol( Number ); + Continue = 1; + Sym = RDS_NOSYM; + Xins = 0; + Yins = 0; + + do + { + CifSkipBlank(); + + switch( CifNextChar ) + { + case 'T' : + + CifGetChar(); + + Xins += CifGetSigned(); + Yins += CifGetSigned(); + + break; + + case 'M' : + + CifGetChar(); + CifSkipBlank(); + + switch( CifGetChar() ) + { + case 'X' : Sym = RDS_SYMMETRY_TABLE[ Sym ][ RDS_SYM_X ]; + break; + + case 'Y' : Sym = RDS_SYMMETRY_TABLE[ Sym ][ RDS_SYM_Y ]; + break; + + default : ciferror( CIF_ERROR_BAD_MIRROR, NULL, CifLineCounter ); + } + + break; + + case 'R' : + + CifGetChar(); + + RotX = CifGetSigned(); + RotY = CifGetSigned(); + + if ( RotX < 0 ) + { + if ( RotY == 0 ) Sym = RDS_SYMMETRY_TABLE[ Sym ][ RDS_SYMXY ]; + } + else + if ( RotX == 0 ) + { + if ( RotY > 0 ) Sym = RDS_SYMMETRY_TABLE[ Sym ][ RDS_ROT_P ]; + else + if ( RotY < 0 ) Sym = RDS_SYMMETRY_TABLE[ Sym ][ RDS_ROT_M ]; + } + + break; + + case ';' : Continue = 0; + break; + + default : + + ciferror( CIF_ERROR_BAD_TRANS, CifInstanceName, CifLineCounter ); + } + } + while ( Continue ); + + if ( ! Top ) + { + Xins = CIF_TO_RDS_UNIT( Xins ); + Yins = CIF_TO_RDS_UNIT( Yins ); + + if ( CheckPhysicalGridAligned( Xins ) || + CheckPhysicalGridAligned( Yins ) ) + { + cifwarning( CIF_WARNING_PHYSICAL_GRID, NULL, 0 ); + + Xins = RfmRoundLow( Xins ); + Yins = RfmRoundLow( Yins ); + } + + if ( CifInstanceName == (char *)NULL ) + { + sprintf( CifBuffer, "magic_%ld", CifInstanceCounter++ ); + CifInstanceName = namealloc( CifBuffer ); + } + + Instance = addrdsins( CifCurrentFigure, NULL, CifInstanceName, + Sym, Xins, Yins ); + + Instance->FIGNAME = (char *)Symbol; + + CifInstanceName = (char *)NULL; + } + else + { + CifTopSymbol = Symbol; + } +} + +/*------------------------------------------------------------\ +| | +| CifCommandComment | +| | +\------------------------------------------------------------*/ + +void CifCommandComment() +{ + CifReadComment(); +} + +/*------------------------------------------------------------\ +| | +| CifCommandEnd | +| | +\------------------------------------------------------------*/ + +void CifCommandEnd() +{ + CifSkipBlank(); + + if ( CifCurrentSymbol != (symbol_list *)NULL ) + { + ciferror( CIF_ERROR_SYMBOL_STARTED, NULL, CifLineCounter ); + } + + if ( CifNextChar != (char)EOF ) + { + ciferror( CIF_ERROR_EXPECTED_EOF, NULL, CifLineCounter ); + } +} + +/*------------------------------------------------------------\ +| | +| CifCommandUser | +| | +\------------------------------------------------------------*/ + +void CifCommandUser() +{ + cifwarning( CIF_WARNING_USER_COMMAND, NULL, CifLineCounter ); + + CifSkipUserText(); +} + +/*------------------------------------------------------------\ +| | +| CifCommandUser4I | +| | +\------------------------------------------------------------*/ + +void CifCommandUser4I() +{ + CifReadSpace(); + CifInstanceName = CifGetName(); +} + +/*------------------------------------------------------------\ +| | +| CifCommandUser91 | +| | +\------------------------------------------------------------*/ + +void CifCommandUser91() +{ + CifReadSpace(); + CifInstanceName = CifGetName(); +} + +/*------------------------------------------------------------\ +| | +| CifCommandUser4N | +| | +\------------------------------------------------------------*/ + +void CifCommandUser4N() +{ + coord_t Point; + char *Name; + + CifReadSpace(); + Name = CifGetName(); + CifReadSpace(); + CifGetPoint( &Point ); + + CifAddNode( Name, Point.X, Point.Y, CifCurrentLayer ); +} + +/*------------------------------------------------------------\ +| | +| CifCommandUser94 | +| | +\------------------------------------------------------------*/ + +void CifCommandUser94() +{ + rdsrec_list *Rec; + char *Name; + coord_t Center; + long Dx; + long Dy; + char Layer; + + if ( CifOboxKeyword == (char *)NULL ) + { + CifOboxKeyword = namealloc( "obox" ); + } + + CifReadSpace(); + CifSkipOrient(); + Name = CifGetName(); + CifReadSpace(); + CifGetPoint( &Center ); + CifSkipSpace(); + + if ( Name == CifOboxKeyword ) + { + Dx = CIF_TO_RDS_UNIT( Center.X << 1 ); + Dy = CIF_TO_RDS_UNIT( Center.Y << 1 ); + + Rec = addrdsfigrec( CifCurrentFigure, NULL, + RDS_ABOX, 0, 0, Dx, Dy ); + + if ( CheckPhysicalGridAligned( Dx ) || + CheckPhysicalGridAligned( Dy ) ) + { + cifwarning( CIF_WARNING_PHYSICAL_GRID, NULL, 0 ); + roundrdsrec( Rec ); + } + } + else + { + if ( CifNextChar != ';' ) + { + Layer = CifGetLayer(); + } + else + { + Layer = CifCurrentLayer; + } + + CifAddNode( Name, Center.X, Center.Y, Layer ); + } +} + +/*------------------------------------------------------------\ +| | +| CifCommandUser4A | +| | +\------------------------------------------------------------*/ + +void CifCommandUser4A() +{ + rdsrec_list *Rec; + coord_t First; + coord_t Second; + long X; + long Y; + long Dx; + long Dy; + + CifReadSpace(); + CifGetPoint( &First ); + X = CIF_TO_RDS_UNIT( First.X ); + Y = CIF_TO_RDS_UNIT( First.Y ); + CifGetPoint( &Second ); + Dx = CIF_TO_RDS_UNIT( Second.X - First.X ); + Dy = CIF_TO_RDS_UNIT( Second.Y - First.Y ); + + Rec = addrdsfigrec( CifCurrentFigure, + CifCurrentFigure->NAME, RDS_ABOX, + X, Y, Dx, Dy ); + SetRdsFigure( Rec ); + + if ( CheckPhysicalGridAligned( X ) || + CheckPhysicalGridAligned( Y ) || + CheckPhysicalGridAligned( Dx ) || + CheckPhysicalGridAligned( Dy ) ) + { + cifwarning( CIF_WARNING_PHYSICAL_GRID, NULL, 0 ); + roundrdsrec( Rec ); + } +} + +/*------------------------------------------------------------\ +| | +| CifCommandUser4X | +| | +\------------------------------------------------------------*/ + +void CifCommandUser4X() +{ + char *Name; + long Width; + coord_t Center; + + CifReadSpace(); + Name = CifGetName(); + CifReadSpace(); + CifGetUnsigned(); + CifReadSpace(); + CifGetPoint( &Center ); + CifReadSpace(); + Width = CifGetUnsigned(); + + CifSkipUserText(); + + CifAddConnector( Name, Center.X, Center.Y, Width, CifCurrentLayer ); +} + +/*------------------------------------------------------------\ +| | +| CifCommandUser95 | +| | +\------------------------------------------------------------*/ + +void CifCommandUser95() +{ + char *Name; + long X; + long Y; + long Dx; + long Dy; + char Layer; + coord_t Center; + rdsrec_list *Rec; + + CifReadSpace(); + CifSkipOrient(); + Name = CifGetName(); + CifReadSpace(); + Dx = CifGetUnsigned(); + Dy = CifGetUnsigned(); + CifReadSpace(); + CifGetPoint( &Center ); + CifSkipSpace(); + + if ( CifNextChar != ';' ) + { + Layer = CifGetLayer(); + } + else + { + Layer = CifCurrentLayer; + } + + X = CIF_TO_RDS_UNIT( Center.X - ( Dx >> 1 ) ); + Y = CIF_TO_RDS_UNIT( Center.Y - ( Dy >> 1 ) ); + Dx = CIF_TO_RDS_UNIT( Dx ); + Dy = CIF_TO_RDS_UNIT( Dy ); + + Rec = addrdsfigrec( CifCurrentFigure, Name, + Layer, X, Y, Dx, Dy ); + + if ( CheckPhysicalGridAligned( X ) || + CheckPhysicalGridAligned( Y ) || + CheckPhysicalGridAligned( Dx ) || + CheckPhysicalGridAligned( Dy ) ) + { + cifwarning( CIF_WARNING_PHYSICAL_GRID, NULL, 0 ); + roundrdsrec( Rec ); + } + + SetRdsConnector( Rec ); + SetRdsConExter( Rec ); +} + +/*------------------------------------------------------------\ +| | +| CifCommandUser9 | +| | +\------------------------------------------------------------*/ + +void CifCommandUser9() +{ + if ( CifCurrentSymbol == (symbol_list *)NULL ) + { + ciferror( CIF_ERROR_SYMBOL_NOT_STARTED, NULL, CifLineCounter ); + } + + CifReadSpace(); + + CifCurrentFigure = addrdsfig( CifGetName(), CifCurrentFigure->SIZE ); + CifCurrentSymbol->MODEL = CifCurrentFigure; +} + +/*------------------------------------------------------------\ +| | +| CifParseCommand | +| | +\------------------------------------------------------------*/ + +static void CifParseCommand( Figure ) + + rdsfig_list *Figure; +{ + rdsfig_list *TopFigure; + rdsfig_list *ScanFig; + rdsins_list *ScanIns; + symbol_list *Symbol; + int Layer; + + CifLineCounter = 1; + CifNextChar = '\0'; + CifScaleA = 1; + CifScaleB = 1; + CifCurrentFigure = Figure; + CifInstanceName = (char *)NULL; + CifInstanceCounter = 0; + CifTopSymbol = (symbol_list *)NULL; + CifCurrentSymbol = (symbol_list *)NULL; + + CifFreeSymbol(); + CifFreeNode(); + + do + { + CifSkipBlank(); + + switch( CifGetChar() ) + { + case 'P' : CifCommandPolygon(); + break; + + case 'B' : CifCommandBox( NULL ); + break; + + case 'R' : CifCommandRoundFlash(); + break; + + case 'W' : CifCommandWire(); + break; + + case 'L' : CifCommandLayer(); + break; + + case 'D' : + + CifSkipBlank(); + + switch ( CifGetChar() ) + { + case 'S': CifCommandDefineStart(); + break; + + case 'F' : CifCommandDefineFinished(); + break; + + case 'D' : CifCommandDefineDelete(); + break; + + default : ciferror( CIF_ERROR_BAD_DEFINE, NULL, CifLineCounter); + } + + break; + + case 'C' : CifCommandCall(); + break; + + case '(' : CifCommandComment(); + break; + + case 'E' : CifCommandEnd(); + break; + + case ';' : + break; + + case EOF : ciferror( CIF_ERROR_UNEXPECTED_EOF, NULL, CifLineCounter ); + break; + + case '9' : + + switch ( CifNextChar ) + { + case '1' : CifGetChar(); CifCommandUser91(); + break; + + case '4' : CifGetChar(); CifCommandUser94(); + break; + + case '5' : CifGetChar(); CifCommandUser95(); + break; + + default : CifCommandUser9(); + } + + break; + + case '4' : + + switch ( CifGetChar() ) + { + case 'I' : CifCommandUser4I(); + break; + + case 'N' : CifCommandUser4N(); + break; + + case 'A' : CifCommandUser4A(); + break; + + case 'X' : CifCommandUser4X(); + break; + + default : ciferror( CIF_ERROR_BAD_COMMAND, NULL, CifLineCounter ); + } + + break; + + default : ciferror( CIF_ERROR_BAD_COMMAND, NULL, CifLineCounter ); + } + + CifSkipSpace(); + CifReadSemi(); + } + while ( CifNextChar != (char)EOF ); + + if ( ( CifTopSymbol == (symbol_list *)NULL ) || + ( CifTopSymbol->MODEL == (rdsfig_list *)NULL ) ) + { + ciferror( CIF_ERROR_NO_TOP_MODEL, NULL, 0 ); + } + + TopFigure = CifTopSymbol->MODEL; + + for ( ScanFig = HEAD_RDSFIG; + ScanFig != Figure; + ScanFig = ScanFig->NEXT ) + { + for ( ScanIns = ScanFig->INSTANCE; + ScanIns != (rdsins_list *)NULL; + ScanIns = ScanIns->NEXT ) + { + Symbol = (symbol_list *)(ScanIns->FIGNAME); + + if ( Symbol->MODEL == (rdsfig_list *)NULL ) + { + ciferror( CIF_ERROR_SYMBOL_NOT_DEFINE, NULL, Symbol->NUMBER ); + } + + ScanIns->FIGNAME = Symbol->MODEL->NAME; + } + } + + for ( Layer = 0; Layer < RDS_MAX_LAYER; Layer++ ) + { + Figure->LAYERTAB[ Layer ] = TopFigure->LAYERTAB[ Layer ]; + TopFigure->LAYERTAB[ Layer ] = (rdsrec_list *)NULL; + } + + Figure->INSTANCE = TopFigure->INSTANCE; + TopFigure->INSTANCE = (rdsins_list *)NULL; + + delrdsfig( TopFigure->NAME ); +} + +/*------------------------------------------------------------\ +| | +| cifloadrdsfig | +| | +\------------------------------------------------------------*/ + + rdsfig_list *cifloadrdsfig( Figure, Name, Mode ) + + rdsfig_list *Figure; + char *Name; + char Mode; +{ + Figure->MODE = 'L'; + + Stream = mbkfopen( Name, "cif", "r"); + + if ( Stream == (FILE *)NULL ) + { + ciferror( CIF_ERROR_FILE_OPEN, Name, 0 ); + } + + CifParseCommand( Figure ); + + if ( fclose( Stream ) ) + { + ciferror( CIF_ERROR_FILE_CLOSE, Name, 0 ); + } + + applyrdsmode( Figure, Mode ); + + return( Figure ); +} diff --git a/alliance/src/rdscif/src/cif_parse.h b/alliance/src/rdscif/src/cif_parse.h new file mode 100644 index 00000000..d48ad91f --- /dev/null +++ b/alliance/src/rdscif/src/cif_parse.h @@ -0,0 +1,110 @@ +#ifndef __P +# if defined(__STDC__) || defined(__GNUC__) +# define __P(x) x +# else +# define __P(x) () +# endif +#endif +/*------------------------------------------------------------\ +| | +| Tool : RDSCIF | +| | +| File : cif_parse.h | +| | +| Authors : Jacomme Ludovic | +| | +| Date : 23/08/93 | +| | +\------------------------------------------------------------*/ + +# ifndef RDSCIF_PARSE +# define RDSCIF_PARSE + +/*------------------------------------------------------------\ +| | +| Constants | +| | +\------------------------------------------------------------*/ + +# define CIF_MAX_BUFFER 512 +# define CIF_MAX_SYMBOL_HEAD 16 +# define CIF_MASK_SYMBOL (long)(0x0000F) + +/*------------------------------------------------------------\ +| | +| Commands | +| | +\------------------------------------------------------------*/ + +# define CIF_COMMAND_NULL 0 +# define CIF_COMMAND_POLYGON 1 +# define CIF_COMMAND_BOX 2 +# define CIF_COMMAND_ROUNDFLASH 3 +# define CIF_COMMAND_WIRE 4 +# define CIF_COMMAND_LAYER 5 +# define CIF_COMMAND_DEFSTART 6 +# define CIF_COMMAND_DEFFINISH 7 +# define CIF_COMMAND_DEFDELETE 8 +# define CIF_COMMAND_CALL 9 +# define CIF_COMMAND_COMMENT 10 +# define CIF_COMMAND_END 11 +# define CIF_COMMAND_EOF 12 + +/*------------------------------------------------------------\ +| | +| Overflow | +| | +\------------------------------------------------------------*/ + +# define CIF_MAX_UNSIGNED ((unsigned int)((0XFFFFFFFF-9)/10)) +# define CIF_MAX_SIGNED ((int )((0X7FFFFFFF-9)/10)) +# define CIF_MAX_POINT 512 + +/*------------------------------------------------------------\ +| | +| Macros | +| | +\------------------------------------------------------------*/ + +#define CIF_TO_RDS_UNIT( X ) \ + \ + ( ( ( X )*CifScaleA*RDS_UNIT ) / ( CifScaleB*CIF_UNIT ) ) + +/*------------------------------------------------------------\ +| | +| Types | +| | +\------------------------------------------------------------*/ + + typedef struct symbol_list + { + struct symbol_list *NEXT; + long NUMBER; + rdsfig_list *MODEL; + + } symbol_list; + + typedef struct node_list + { + struct node_list *NEXT; + char *NAME; + char LAYER; + long X; + long Y; + + } node_list; + + typedef struct connector_list + { + struct connector_list *NEXT; + char *NAME; + char LAYER; + long X; + long Y; + long WIDTH; + + } connector_list; + + + +# endif diff --git a/alliance/src/rdscif/src/rcf.h b/alliance/src/rdscif/src/rcf.h new file mode 100644 index 00000000..f4a266c4 --- /dev/null +++ b/alliance/src/rdscif/src/rcf.h @@ -0,0 +1,48 @@ +/*------------------------------------------------------------\ +| | +| Tool : RCF | +| | +| File : rcf112.h | +| | +| Authors : Jacomme Ludovic | +| | +| Date : 27.06.95 | +| | +\------------------------------------------------------------*/ + +# ifndef RCF_112_H +# define RCF_112_H + +#ifndef __P +# if defined(__STDC__) || defined(__GNUC__) +# define __P(x) x +# else +# define __P(x) () +# endif +#endif + +/*------------------------------------------------------------\ +| | +| Constants | +| | +\------------------------------------------------------------*/ +/*------------------------------------------------------------\ +| | +| Types | +| | +\------------------------------------------------------------*/ +/*------------------------------------------------------------\ +| | +| Global Variables | +| | +\------------------------------------------------------------*/ +/*------------------------------------------------------------\ +| | +| Functions | +| | +\------------------------------------------------------------*/ + + extern rdsfig_list * cifloadrdsfig __P((rdsfig_list *Figure, char *Name, char Mode)); + extern void cifsaverdsfig __P((rdsfig_list *Figure)); + +# endif