Motif Multi-Document Interface Version 1.0 ------------------------------------------ INTRODUCTION ============ The Motif Multi-Document Interface (MDI) is a collection of C++ classes that emulates the behavior of the Multi-Document Interface in Microsoft Windows. The MDI framework allows a user to view multiple documents (windows) constrained to a single parent window. REQUIREMENTS ============ The following are required to build MDI: C++ compiler X11R5/X11R6 Motif1.2 PLATFORMS ========= The MDI package is known to compile on the following platforms: SGI IRIX 5.2 SunOS 4.1.3 Sun Solaris 5.4 HP-UX 9.05 AIX 4.1 Alpha/OSF1 v3.2 Linux 1.1.90 (gcc version 2.5.8) INSTALLATION ============ MDI is written in C++. It does not use any language extensions like exceptions or templates, so it should compile with most C++ compilers. To build MDI, you need to set the name of your C++ compiler in the file "config/MDI.tmpl". An attempt is made to pick a logical default for your machine, but if it fails, you will need to edit this file. After setting your compiler, just type: xmkmf make Makefiles make If successful, the MDI library (libXsw.a) will be created in the "lib" directory. Additionally, a short test program (MDItest) will be created in the "test" directory. If you are not successful, see the "Possible Problems" section below. I have had no luck with imake as it seems to only work on about 1/2 of the platforms I have tried. If imake does not work, don't despair. The MDI library is really simple to build by hand. Just follow the following steps and it will work just fine. I have given detailed instructions in the "Possible Problems" section below where I had problems using imake. If anyone sees a problem with my Imakefile (I assume there are many), please let me know. In order to build the MDI package by hand, do the following: 1. "cd" into the "lib" directory (cd lib) 2. Compile all of the source code (CC -g -c *.C). Your compiler name may vary. Some common compilers are: CC: SGI, Sun, Solaris, HP-UX xlC: AIX RS/6000 cxx: Alpha/OSF1 g++: Linux gcc: Most other platforms 3. Create the library "libXsw.a" (ar rlv libXsw.a *.o) 4. Run "ranlib" (not necessary on all machines) 5. "cd" into the "test" directory (cd ../test) 6. Compile the source code (see step #2 above) 7. Link the test program (CC *.o -o MDItest ../lib/libXsw.a \ -lXm -lXt -lX11). Again, the compiler/linker name may vary If you still can't get it to work after all of that, email me and I'll give you a hand. POSSIBLE PROBLEMS ================= SunOS 4.1.3 Kept getting this message when trying to make: make: Fatal error: Don't know how to make target `XsComponent.o' I ended up building the library and test case with the following: cd lib CC -g -c *.C ar rlv libXsw.a *.o ranlib libXsw.a cd ../test CC -g -c *.C -I../lib CC -g *.o -o MDItest ../lib/libXsw.a -L/usr/lib -lXm -lXt -lX11 Solaris 5.4 The generated Makefile had some unsupported options being passed to the linker. I don't know what they were for, so I just removed them. All worked fine after that. HP-UX 9.05 I did not have "xmkmf" on this platform. To build the library and test case, I did the following (paths may vary): cd lib CC -g -c *.C -I/usr/include/Motif1.2 -I/usr/include/X11R5 ar rlv libXsw.a *.o cd ../test CC -g -c *.C -I../lib -I/usr/include/Motif1.2 -I/usr/include/X11R5 CC -g *.o -o MDItest ../lib/libXsw.a -L/usr/lib/Motif1.2 \ -L/usr/lib/X11R5 -lXm -lXt -lX11 AIX 4.1 Running xmkmf on the top Makefile did not work. Got the following: "./Imakefile", line 8.1: 1506-215 (E) Too many arguments specified for macro NamedTargetSubdirs. In order to build the library, I cd'd into both the "lib" and "test" directory and did the following there: xmkmf make Alpha/OSF1 v3.2 Kept getting this message when trying to make: Make: Don't know how to make XsComponent.o. Stop. I ended up building the library and test case with the following: cd lib cxx -g -c *.C ar rlv libXsw.a *.o cd ../test cxx -g -c *.C -I../lib cxx -g *.o -o MDItest ../lib/libXsw.a -lXm -lXt -lX11 Linux "make Makefiles" did not work correctly. Just cd'd into both the "lib" and "test" directories and type: xmkmf make Also, if you don't have the C++ library (libC.a), you will get some undefined symbols like when linking: ../lib/libXsw.a(XsComponent.o): Undefined symbol _cout referenced from text segment ../lib/libXsw.a(XsComponent.o): Undefined symbol ostream::operator<<(char const *) referenced from text segment To get rid of these errors, you will need to recompile the library (specifically XsComponent.C) with -DNDEBUG. This will remove the calls to the library and will eliminate the need to link with the C++ library DOCUMENTATION ============= All documentation is written in HTML and can be found in the "doc" directory. The top-most documentation file is "mdi.html" AVAILABILITY =============== The latest version of MDI is available at: ftp://ftp.x.org/contrib/widgets/motif/MDI-.tar.gz COPYRIGHT ========= Copyright (c) 1996, 1998 Scott W. Sadler All rights reserved. See license conditions in the COPYRIGHT file of the MDI distribution BUG REPORTS =========== Please report any bugs, suggestions or criticisms directly to me at the address below. I want to make this as quality a software package as possible: stable, efficient and portable. It is the feedback from the X community that makes writing the software worthwhile. Scott W. Sadler ssadler@cisco.com HISTORY ======= 03-Mar-96 Version 1.0 Released 29-Jun-98 Version 1.0.1 No code changes; New email address