rich@oxtrap.UUCP (K. Richard Magill) (01/07/88)
I've had X11 up to patchlevel 90 clients working on sequent balance (Dynix 3.0.4 w/nfs) for some time now. I had some unidentified problems back on 2.1.1 but they went away when we upgraded, (as well as a number of other network problems). The following are sufficient conditions for compilation. 1) The easiest way to resolve a header file conflict is to add lines that look like... #if !defined(TYPES_H) #define TYPES_H 1 ... #endif /* TYPES_H */ around /usr/include/types.h. This brings the file closer to ansii compatible and it appears as though SunOS and Ultrix have already done so. 2) Mostly for parallel makes, I hacked up a Sequent.macros, but that also means hacking on Imake.rules and Imake.tmpl. Files and diffs follow. 3) sequent has no usleep. I changed it to "sleep(1)". diff follows. 4) sequent has no gamma(3). remove "-DGAMMA" from ~line 111 of clients/gnuplot/Makefile. 5) there is, of course, no server. This sometimes makes the Makefiles choke. 6) I can't get the manuals to print right but I suspect the problem is our printer. 7) xload compiles but doesn't work. (did you expect anything else?) 8) xcalc is sick. buttons work but the first key pressed hangs. I suspect a byte order problem but haven't checked. 9) I couldn't figure out how to make Makefiles in parallel. If you do, let me know. 10) I use xterm, xbiff, emacs (with rfrench's diffs), xclock, etc. rather regularly with no problems. --- start of util/imake.includes/Sequent.macros (search for "- end") --- TOP = TOPDIR AS = as CC = cc CPP = /lib/cpp LD = ld LINT = lint MAKE = make 'PARALLEL=&' CDEBUGFLAGS = -O -Dstrchr=index -Dstrrchr=rindex DESTDIR = /* These define the server(s) you want */ /* define this as you like for server compilation */ /* This defines the extensions you want */ /* #define ExtensionDefines -DZOID -DBEZIER */ #define ExtensionDefines #define DebugLibX NO /* debugged X library */ #define ProfileLibX NO /* profiled X library */ #define DebugOldLibX NO /* debugged old X library */ #define ProfileOldLibX NO /* profiled old X library */ #define DebugLibXtk NO /* debugged toolkit library */ #define ProfileLibXtk NO /* profiled toolkit library */ #define DebugOldLibXtk NO /* debugged old toolkit library */ #define ProfileOldLibXtk NO /* profiled old toolkit library */ #define DebugOldLibXMenu NO /* debugged old XMenu library */ #define ProfileOldLibXMenu NO /* profiled old XMenu library */ #define DebugLibXext NO /* debugged Xext library */ #define ProfileLibXext NO /* profiled Xext library */ #define DebugLibXrm NO /* debugged Xrm library */ #define ProfileLibXrm NO /* profiled Xrm library */ #define DebugOldLibXrm NO /* debugged old Xrm library */ #define ProfileOldLibXrm NO /* profiled old Xrm library */ #define BigEndianArchitecture NO /* only the toolkit need this now */ /* * Uncomment this if you have cpp sources. */ /* #define CppSourcesPresent /usr/src/lib/cpp */ /* * use only one tab here. */ #define ManSuffix n /* for /usr/man/man?/manpage.? */ /* uncomment this if your make program has MAKEFLAGS but not MFLAGS */ /* #define ConstructMFLAGS */ --- end of util/imake.includes/Sequent.macros --- --- start of util/imake.includes/Imake.rules (diff bigger than original) --- /* * This will build an uninstalled program. This can be used * for multiple programs in the same Makefile. */ #define SingleProgramTarget(program,objects,locallibs,syslibs) @@\ program: $(PARALLEL) objects locallibs @@\ rm -f $@ @@\ $(CC) -o $@ objects locallibs $(LDFLAGS) syslibs @@\ @@\ relink:: @@\ rm -f program @@\ $(MAKE) $(MFLAGS) program @@\ @@\ clean:: @@\ rm -f program /* * This target can be called by all programs that are contained in * a single c source file. */ #define SimpleProgramTarget(program) @@\ OBJS = program.o @@\ SRCS = program.c @@\ @@\ ComplexProgramTarget(program) /* * This target is the general interface for building a single program */ #define ComplexProgramTarget(program) @@\ PROGRAM = program @@\ @@\ all:: $(PARALLEL) program @@\ @@\ program: $(PARALLEL) $(OBJS) $(LOCAL_LIBRARIES) @@\ rm -f $@ @@\ $(CC) -o $@ $(OBJS) $(LOCAL_LIBRARIES) $(LDFLAGS) @@\ @@\ relink: @@\ rm -f $(PROGRAM) @@\ $(MAKE) $(MFLAGS) $(PROGRAM) @@\ @@\ InstallProgram(program,$(BINDIR)) @@\ InstallManPage(program,$(MANDIR)) @@\ DependTarget() @@\ clean:: @@\ rm -f $(PROGRAM) /* * These targets are the general interface for building multiple programs * in a single Makefile. */ #define ComplexProgramTarget_1(program,locallib,syslib) @@\ OBJS = $(OBJS1) $(OBJS2) $(OBJS3) @@\ SRCS = $(SRCS1) $(SRCS2) $(SRCS3) @@\ @@\ all: $(PARALLEL) $(PROGRAMS) @@\ @@\ program: $(PARALLEL) $(OBJS1) locallib @@\ rm -f $@ @@\ $(CC) -o $@ $(OBJS1) locallib $(LDFLAGS) syslib @@\ @@\ InstallProgram(program,$(BINDIR)) @@\ InstallManPage(program,$(MANDIR)) @@\ relink:: @@\ rm -f $(PROGRAMS) @@\ $(MAKE) $(MFLAGS) $(PROGRAMS) @@\ @@\ DependTarget() @@\ clean:: @@\ rm -f $(PROGRAMS) #define ComplexProgramTarget_2(program,locallib,syslib) @@\ program: $(PARALLEL) $(OBJS2) locallib @@\ rm -f $@ @@\ $(CC) -o $@ $(OBJS2) locallib $(LDFLAGS) syslib @@\ @@\ InstallProgram(program,$(BINDIR)) @@\ InstallManPage(program,$(MANDIR)) #define ComplexProgramTarget_3(program,locallib,syslib) @@\ program: $(PARALLEL) $(OBJS3) locallib @@\ rm -f $@ @@\ $(CC) -o $@ $(OBJS3) locallib $(LDFLAGS) syslib @@\ @@\ InstallProgram(program,$(BINDIR)) @@\ InstallManPage(program,$(MANDIR)) #define ServerTarget(server,subdirs,objects,libs,syslibs) @@\ server: subdirs objects libs load/**/server @@\ @@\ load/**/server: @@\ -mv server server.bak @@\ $(CC) $(CDEBUGFLAGS) -o server objects libs syslibs /* * Install a Library. */ #define InstallLibrary(libname,dest) @@\ install:: $(PARALLEL) lib/**/libname.a @@\ $(INSTALL) $(INSTLIBFLAGS) lib/**/libname.a dest @@\ ranlib dest/lib/**/libname.a /* * Install a Library Alias. */ #define InstallLibraryAlias(libname,alias,dest) @@\ install:: @@\ rm -f dest/lib/**/alias.a @@\ ln dest/lib/**/libname.a dest/lib/**/alias.a /* * Install a Lint Library. */ #define InstallLintLibrary(libname,dest) @@\ install:: $(PARALLEL) llib-l/**/libname.ln @@\ $(INSTALL) $(INSTLIBFLAGS) llib-l/**/libname.ln dest /* * Install a man page. */ #define InstallManPage(file,dest) @@\ install:: $(PARALLEL) file.man @@\ $(INSTALL) -c -m 0664 file.man dest/file.ManSuffix /* * Install a non-executable file. */ #define InstallNonExec(file,dest) @@\ install:: $(PARALLEL) file @@\ $(INSTALL) -c -m 0664 file dest /* * Install a program */ #define InstallProgram(program,dest) @@\ install:: $(PARALLEL) program @@\ $(INSTALL) -c $(INSTALLFLAGS) program dest /* * Install a shell script */ #define InstallScript(program,dest) @@\ install:: $(PARALLEL) program.script @@\ $(INSTALL) -c $(INSTALLFLAGS) program.script dest/program /* * Install multiple programs */ #define InstallMultiple(list,dest) @@\ install:: $(PARALLEL) list @@\ @case '${MFLAGS}' in *[i]*) set +e;; esac; \ @@\ for i in list; do \ @@\ (set -x; $(INSTALL) -c $(INSTALLFLAGS) $$i dest); \ @@\ done /* * This makes the depend target given OBJS. */ #define DependTarget() @@\ depend:: @@\ $(DEPEND) -s "# DO NOT DELETE" $(CFLAGS) $(SRCS) #define CleanTarget() @@\ clean:: @@\ $(RM_CMD) \#* #define TagsTarget() @@\ tags:: @@\ $(TAGS) -w *.[ch] @@\ $(TAGS) -xw *.[ch] > TAGS #define MakefileTarget() @@\ Makefile:: $(PARALLEL) Imakefile \ @@\ $(UTILSRC)/imake.includes/Imake.tmpl \ @@\ $(UTILSRC)/imake.includes/Imake.rules \ @@\ $(UTILSRC)/imake.includes/$(MACROFILE) @@\ -rm -f Makefile.bak; mv Makefile Makefile.bak @@\ $(IMAKE_CMD) -DTOPDIR=$(TOP) /* * for objects in libraries */ #define NormalLibraryObjectRule() @@\ .c.o: @@\ $(CC) -c $(CFLAGS) $*.c #define ProfiledLibraryObjectRule() @@\ .c.o: @@\ $(CC) -pg -c $(CFLAGS) $*.c @@\ mv $*.o profiled/$*.o @@\ $(CC) -c $(CFLAGS) $*.c #define DebuggedLibraryObjectRule() @@\ .c.o: @@\ $(CC) -g -c $(CFLAGS) $*.c @@\ mv $*.o debugger/$*.o @@\ $(CC) -c $(CFLAGS) $*.c #define DebuggedAndProfiledLibraryObjectRule() @@\ .c.o: @@\ $(CC) -pg -c $(CFLAGS) $*.c @@\ mv $*.o profiled/$*.o @@\ $(CC) -g -c $(CFLAGS) $*.c @@\ mv $*.o debugger/$*.o @@\ $(CC) -c $(CFLAGS) $*.c #define NormalLibraryTarget(libname,objlist) @@\ all:: $(PARALLEL) lib/**/libname.a @@\ @@\ lib/**/libname.a: $(PARALLEL) objlist @@\ rm -f $@ @@\ ar clq $@ objlist @@\ ranlib $@ #define ProfiledLibraryTarget(libname,objlist) @@\ all:: $(PARALLEL) lib/**/libname/**/_p.a @@\ @@\ lib/**/libname/**/_p.a: $(PARALLEL) objlist @@\ rm -f $@ @@\ cd profiled; ar clq ../$@ objlist @@\ ranlib $@ @@\ @@\ clean:: @@\ rm -f profiled/?*.o #define DebuggedLibraryTarget(libname,objlist) @@\ all:: $(PARALLEL) lib/**/libname/**/_d.a @@\ @@\ lib/**/libname/**/_d.a: $(PARALLEL) objlist @@\ rm -f $@ @@\ cd debugger; ar clq ../$@ objlist @@\ ranlib $@ @@\ @@\ clean:: @@\ rm -f debugger/?*.o #define AliasedLibraryTarget(libname,alias) @@\ all:: $(PARALLEL) lib/**/alias.a @@\ lib/**/alias.a: $(PARALLEL) lib/**/libname.a @@\ rm -f $@ @@\ ln -s lib/**/libname.a $@ /* * Note that we force the lint library to always be newer than the * library itself. */ #define LintLibraryTarget(libname,srclist) @@\ lintlib:: $(PARALLEL) llib-l/**/libname.ln @@\ @@\ llib-l/**/libname.ln: $(PARALLEL) srclist @@\ rm -f $@ @@\ $(LINT) -C/**/libname $(DEFINES) ${INCLUDES} srclist /* * if you want CDEBUGFLAGS passed along to subdirectories, then * provide a line like this in the appropriate Imakefile * #define PassCDebugFlags 'CDEBUGFLAGS=$(CDEBUGFLAGS)' */ #define MakeSubdirs(dirs) @@\ NamedMakeSubdirs(all,dirs) #define NamedMakeSubdirs(name,dirs) @@\ name:: @@\ @case '${MFLAGS}' in *[ik]*) set +e;; esac; \ @@\ for i in dirs ;\ @@\ do \ @@\ (cd $$i ; echo "making $$i"; \ @@\ $(MAKE) PassCDebugFlags $(MFLAGS)); \ @@\ done #define DependSubdirs(dirs) @@\ NamedDependSubdirs(depend,dirs) #define NamedDependSubdirs(name,dirs) @@\ name:: @@\ @case '${MFLAGS}' in *[ik]*) set +e;; esac; \ @@\ for i in dirs ;\ @@\ do \ @@\ (cd $$i ; echo "depending $$i"; \ @@\ $(MAKE) $(MFLAGS) depend ); \ @@\ done #define InstallSubdirs(dirs) @@\ install:: @@\ @case '${MFLAGS}' in *[ik]*) set +e;; esac; \ @@\ for i in dirs ;\ @@\ do \ @@\ (cd $$i ; echo "installing $$i"; \ @@\ $(MAKE) $(MFLAGS) \ @@\ INSTALL='$(INSTALL)' \ @@\ DESTDIR='$(DESTDIR)' install ); \ @@\ done #define CleanSubdirs(dirs) @@\ clean:: @@\ @case '${MFLAGS}' in *[ik]*) set +e;; esac; \ @@\ for i in dirs ;\ @@\ do \ @@\ (cd $$i ; echo "cleaning $$i"; \ @@\ $(MAKE) $(MFLAGS) RM_CMD='$(RM_CMD)' clean ); \ @@\ done #define TagSubdirs(dirs) @@\ tags:: @@\ @case '${MFLAGS}' in *[ik]*) set +e;; esac; \ @@\ for i in dirs ;\ @@\ do \ @@\ (cd $$i ; echo "tagging $$i"; \ @@\ $(MAKE) $(MFLAGS) TAGS='$(TAGS)' tags ); \ @@\ done #define LintSubdirs(dirs) @@\ lint:: @@\ @case '${MFLAGS}' in *[ik]*) set +e;; esac; \ @@\ for i in dirs ;\ @@\ do \ @@\ (cd $$i ; echo "linting $$i"; \ @@\ $(MAKE) $(MFLAGS) LINT='$(LINT)' lint ); \ @@\ done #define MakeLintLibSubdirs(dirs) @@\ lintlib:: @@\ @case '${MFLAGS}' in *[ik]*) set +e;; esac; \ @@\ for i in dirs ;\ @@\ do \ @@\ (cd $$i ; echo "making lintlib in $$i"; \ @@\ $(MAKE) $(MFLAGS) LINT='$(LINT)' lintlib ); \ @@\ done #define MakefileSubdirs(dirs) @@\ Makefiles:: $(PARALLEL) @@\ @case '${MFLAGS}' in *[ik]*) set +e;; esac; \ @@\ for i in dirs ;\ @@\ do \ @@\ echo "Making Makefiles in $$i..."; \ @@\ case "$$i" in \ @@\ ./?*/?*/?*) newtop=../../../ sub=subsubsub;; \ @@\ ./?*/?*) newtop=../../ sub=subsub;; \ @@\ ./?*) newtop=../ sub=sub;; \ @@\ */?*/?*) newtop=../../../ sub=subsubsub;; \ @@\ */?*) newtop=../../ sub=subsub;; \ @@\ *) newtop=../ sub=sub;; \ @@\ esac; \ @@\ $(MAKE) $${sub}dirMakefiles NEWTOP=$$newtop \ @@\ MAKEFILE_SUBDIR=$$i;\ @@\ done @@\ @@\ subdirMakefiles: @@\ rm -f $(MAKEFILE_SUBDIR)/Makefile.bak @@\ -mv $(MAKEFILE_SUBDIR)/Makefile $(MAKEFILE_SUBDIR)/Makefile.bak @@\ cd $(MAKEFILE_SUBDIR); $(IMAKE_CMD) -DTOPDIR=$(TOP)/..; \ @@\ $(MAKE) $(MFLAGS) Makefiles @@\ @@\ subsubdirMakefiles: @@\ rm -f $(MAKEFILE_SUBDIR)/Makefile.bak @@\ -mv $(MAKEFILE_SUBDIR)/Makefile $(MAKEFILE_SUBDIR)/Makefile.bak @@\ cd $(MAKEFILE_SUBDIR); $(IMAKE_CMD) -DTOPDIR=$(TOP)/../..; \ @@\ $(MAKE) $(MFLAGS) Makefiles @@\ @@\ subsubsubdirMakefiles: @@\ rm -f $(MAKEFILE_SUBDIR)/Makefile.bak @@\ -mv $(MAKEFILE_SUBDIR)/Makefile $(MAKEFILE_SUBDIR)/Makefile.bak @@\ cd $(MAKEFILE_SUBDIR); $(IMAKE_CMD) -DTOPDIR=$(TOP)/../../..; \ @@\ $(MAKE) $(MFLAGS) Makefiles @@\ --- end of util/imake.includes/Imake.rules --- --- start of util/imake.includes/Imake.tmpl diff --- RCS file: RCS/Imake.tmpl,v retrieving revision 1.1 diff -c -r1.1 Imake.tmpl *** /tmp/,RCSt1004865 Wed Jan 6 16:04:32 1988 --- Imake.tmpl Wed Jan 6 15:11:12 1988 *************** *** 37,42 #define ApolloArchitecture #endif apollo #include MacroIncludeFile #ifdef ConstructMFLAGS --- 37,49 ----- #define ApolloArchitecture #endif apollo + #ifdef sequent + #define MacroIncludeFile "Sequent.macros" + #define MacroFile Sequent.macros + #undef sequent + #define VaxArchitecture + #endif /* sequent */ + #include MacroIncludeFile #ifdef ConstructMFLAGS --- end of util/imake.includes/Imake.tmpl diff --- --- start of diff to lib/oldXmenu/XMenuInternal.h --- RCS file: RCS/XMenuInternal.h,v retrieving revision 1.1 diff -c -r1.1 XMenuInternal.h *** /tmp/,RCSt1004960 Wed Jan 6 16:15:26 1988 --- XMenuInternal.h Tue Nov 17 15:01:09 1987 *************** *** 1,5 ! /* $Header: /local/src/X.V11R1/lib/oldXMenu/RCS/XMenuInternal.h,v 1.1 87/11/17 15:00:10 rich Exp $ */ /* Copyright Massachusetts Institute of Technology 1985 */ /* --- 1,5 ----- ! /* $Header: /local/X.V11R1/lib/oldXMenu/RCS/XMenuInternal.h,v 1.1 87/11/17 15:00:10 rich Exp $ */ /* Copyright Massachusetts Institute of Technology 1985 */ /* *************** *** 20,25 #include <X11/X10.h> #include <stdio.h> #include "XMenu.h" #define min(x, y) ((x) <= (y) ? (x) : (y)) #define max(x, y) ((x) >= (y) ? (x) : (y)) --- 20,29 ----- #include <X11/X10.h> #include <stdio.h> #include "XMenu.h" + + #if defined(ns32000) + #define usleep(x) sleep(1) + #endif /* ns32000 */ #define min(x, y) ((x) <= (y) ? (x) : (y)) #define max(x, y) ((x) >= (y) ? (x) : (y)) RCS file: RCS/XMenuInternal.h,v retrieving revision 1.1 diff -c -r1.1 XMenuInternal.h *** /tmp/,RCSt1004960 Wed Jan 6 16:15:26 1988 --- XMenuInternal.h Tue Nov 17 15:01:09 1987 *************** *** 1,5 ! /* $Header: /local/src/X.V11R1/lib/oldXMenu/RCS/XMenuInternal.h,v 1.1 87/11/17 15:00:10 rich Exp $ */ /* Copyright Massachusetts Institute of Technology 1985 */ /* --- 1,5 ----- ! /* $Header: /local/X.V11R1/lib/oldXMenu/RCS/XMenuInternal.h,v 1.1 87/11/17 15:00:10 rich Exp $ */ /* Copyright Massachusetts Institute of Technology 1985 */ /* *************** *** 20,25 #include <X11/X10.h> #include <stdio.h> #include "XMenu.h" #define min(x, y) ((x) <= (y) ? (x) : (y)) #define max(x, y) ((x) >= (y) ? (x) : (y)) --- 20,29 ----- #include <X11/X10.h> #include <stdio.h> #include "XMenu.h" + + #if defined(ns32000) + #define usleep(x) sleep(1) + #endif /* ns32000 */ #define min(x, y) ((x) <= (y) ? (x) : (y)) #define max(x, y) ((x) >= (y) ? (x) : (y)) --- end of diff to lib/oldXmenu/XMenuInternal.h ---