[comp.windows.x] X on sequent!

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 ---