| 1 | Motif Multi-Document Interface Version 1.0 |
| 2 | ------------------------------------------ |
| 3 | |
| 4 | INTRODUCTION |
| 5 | ============ |
| 6 | |
| 7 | The Motif Multi-Document Interface (MDI) is a collection of C++ classes |
| 8 | that emulates the behavior of the Multi-Document Interface in Microsoft |
| 9 | Windows. The MDI framework allows a user to view multiple documents (windows) |
| 10 | constrained to a single parent window. |
| 11 | |
| 12 | |
| 13 | REQUIREMENTS |
| 14 | ============ |
| 15 | |
| 16 | The following are required to build MDI: |
| 17 | |
| 18 | C++ compiler |
| 19 | X11R5/X11R6 |
| 20 | Motif1.2 |
| 21 | |
| 22 | |
| 23 | PLATFORMS |
| 24 | ========= |
| 25 | |
| 26 | The MDI package is known to compile on the following platforms: |
| 27 | |
| 28 | SGI IRIX 5.2 |
| 29 | SunOS 4.1.3 |
| 30 | Sun Solaris 5.4 |
| 31 | HP-UX 9.05 |
| 32 | AIX 4.1 |
| 33 | Alpha/OSF1 v3.2 |
| 34 | Linux 1.1.90 (gcc version 2.5.8) |
| 35 | |
| 36 | |
| 37 | INSTALLATION |
| 38 | ============ |
| 39 | |
| 40 | MDI is written in C++. It does not use any language extensions like |
| 41 | exceptions or templates, so it should compile with most C++ compilers. |
| 42 | |
| 43 | To build MDI, you need to set the name of your C++ compiler in the file |
| 44 | "config/MDI.tmpl". An attempt is made to pick a logical default for your |
| 45 | machine, but if it fails, you will need to edit this file. |
| 46 | |
| 47 | After setting your compiler, just type: |
| 48 | |
| 49 | xmkmf |
| 50 | make Makefiles |
| 51 | make |
| 52 | |
| 53 | If successful, the MDI library (libXsw.a) will be created in the "lib" |
| 54 | directory. Additionally, a short test program (MDItest) will be created |
| 55 | in the "test" directory. |
| 56 | |
| 57 | If you are not successful, see the "Possible Problems" section below. I |
| 58 | have had no luck with imake as it seems to only work on about 1/2 of the |
| 59 | platforms I have tried. If imake does not work, don't despair. The MDI |
| 60 | library is really simple to build by hand. Just follow the following steps |
| 61 | and it will work just fine. I have given detailed instructions in the |
| 62 | "Possible Problems" section below where I had problems using imake. If |
| 63 | anyone sees a problem with my Imakefile (I assume there are many), please |
| 64 | let me know. |
| 65 | |
| 66 | In order to build the MDI package by hand, do the following: |
| 67 | |
| 68 | 1. "cd" into the "lib" directory (cd lib) |
| 69 | 2. Compile all of the source code (CC -g -c *.C). Your compiler |
| 70 | name will vary. Some common compilers are: |
| 71 | CC: SGI, Sun, Solaris, HP-UX |
| 72 | xlC: AIX RS/6000 |
| 73 | cxx: Alpha/OSF1 |
| 74 | g++: Linux |
| 75 | gcc: Most other platforms |
| 76 | |
| 77 | 3. Create the library "libXsw.a" (ar rlv libXsw.a *.o) |
| 78 | 4. Run "ranlib" (not necessary on all machines) |
| 79 | 5. "cd" into the "test" directory (cd ../test) |
| 80 | 6. Compile the source code (see step #2 above) |
| 81 | 7. Link the test program (CC *.o -o MDItest ../lib/libXsw.a \ |
| 82 | -lXm -lXt -lX11). Again, the compiler name will vary |
| 83 | |
| 84 | If you still can't get it to work after all of that, email me and I'll give |
| 85 | you a hand. |
| 86 | |
| 87 | |
| 88 | POSSIBLE PROBLEMS |
| 89 | ================= |
| 90 | |
| 91 | SunOS 4.1.3 |
| 92 | Kept getting this message when trying to make: |
| 93 | |
| 94 | make: Fatal error: Don't know how to make target `XsComponent.o' |
| 95 | |
| 96 | I ended up building the library and test case with the following: |
| 97 | |
| 98 | cd lib |
| 99 | CC -g -c *.C |
| 100 | ar rlv libXsw.a *.o |
| 101 | ranlib libXsw.a |
| 102 | cd ../test |
| 103 | CC -g -c *.C -I../lib |
| 104 | CC -g *.o -o MDItest ../lib/libXsw.a -L/usr/lib -lXm -lXt -lX11 |
| 105 | |
| 106 | |
| 107 | Solaris 5.4 |
| 108 | The generated Makefile had some unsupported options being passed to |
| 109 | the linker. I don't know what they were for, so I just removed them. |
| 110 | All worked fine after that. |
| 111 | |
| 112 | |
| 113 | HP-UX 9.05 |
| 114 | I did not have "xmkmf" on this platform. To build the library and test |
| 115 | case, I did the following (paths may vary): |
| 116 | |
| 117 | cd lib |
| 118 | CC -g -c *.C -I/usr/include/Motif1.2 -I/usr/include/X11R5 |
| 119 | ar rlv libXsw.a *.o |
| 120 | cd ../test |
| 121 | CC -g -c *.C -I../lib -I/usr/include/Motif1.2 -I/usr/include/X11R5 |
| 122 | CC -g *.o -o MDItest ../lib/libXsw.a -L/usr/lib/Motif1.2 \ |
| 123 | -L/usr/lib/X11R5 -lXm -lXt -lX11 |
| 124 | |
| 125 | |
| 126 | AIX 4.1 |
| 127 | Running xmkmf on the top Makefile did not work. Got the following: |
| 128 | |
| 129 | "./Imakefile", line 8.1: 1506-215 (E) Too many arguments |
| 130 | specified for macro NamedTargetSubdirs. |
| 131 | |
| 132 | In order to build the library, I cd'd into both the "lib" and "test" |
| 133 | directory and did the following there: |
| 134 | |
| 135 | xmkmf |
| 136 | make |
| 137 | |
| 138 | |
| 139 | Alpha/OSF1 v3.2 |
| 140 | Kept getting this message when trying to make: |
| 141 | |
| 142 | Make: Don't know how to make XsComponent.o. Stop. |
| 143 | |
| 144 | I ended up building the library and test case with the following: |
| 145 | |
| 146 | cd lib |
| 147 | cxx -g -c *.C |
| 148 | ar rlv libXsw.a *.o |
| 149 | cd ../test |
| 150 | cxx -g -c *.C -I../lib |
| 151 | cxx -g *.o -o MDItest ../lib/libXsw.a -lXm -lXt -lX11 |
| 152 | |
| 153 | |
| 154 | Linux |
| 155 | "make Makefiles" did not work correctly. Just cd'd into both the |
| 156 | "lib" and "test" directories and type: |
| 157 | |
| 158 | xmkmf |
| 159 | make |
| 160 | |
| 161 | Also, if you don't have the C++ library (libC.a), you will get some |
| 162 | undefined symbols like when linking: |
| 163 | |
| 164 | ../lib/libXsw.a(XsComponent.o): Undefined symbol _cout |
| 165 | referenced from text segment |
| 166 | ../lib/libXsw.a(XsComponent.o): Undefined symbol |
| 167 | ostream::operator<<(char const *) referenced from text segment |
| 168 | |
| 169 | To get rid of these errors, you will need to recompile the library |
| 170 | (specifically XsComponent.C) with -DNDEBUG. This will remove the calls |
| 171 | to the <iostream> library and will eliminate the need to link with the |
| 172 | C++ library |
| 173 | |
| 174 | |
| 175 | DOCUMENTATION |
| 176 | ============= |
| 177 | |
| 178 | All documentation is written in HTML and can be found in the "doc" directory. |
| 179 | The top-most documentation file is "mdi.html" |
| 180 | |
| 181 | |
| 182 | AVAILABILITY |
| 183 | =============== |
| 184 | |
| 185 | The latest version of MDI is available at: |
| 186 | |
| 187 | ftp://itimail.iti-oh.com/pub/project/sws/MDI-<version>.tar.gz |
| 188 | ftp://itimail.iti-oh.com/pub/project/sws/MDI-<version>.tar.Z |
| 189 | |
| 190 | The MDI WWW page is located at: |
| 191 | |
| 192 | http://www.iti-oh.com/~sws/mdi.html |
| 193 | |
| 194 | |
| 195 | COPYRIGHT |
| 196 | ========= |
| 197 | |
| 198 | Copyright (c) 1996 Scott W. Sadler |
| 199 | All rights reserved. |
| 200 | |
| 201 | See license conditions in the COPYRIGHT file of the MDI distribution |
| 202 | |
| 203 | |
| 204 | BUG REPORTS |
| 205 | =========== |
| 206 | |
| 207 | Please report any bugs, suggestions or criticisms directly to me at the |
| 208 | address below. I want to make this as quality a software package as |
| 209 | possible: stable, efficient and portable. It is the feedback from the X |
| 210 | community that makes writing the software worthwhile. |
| 211 | |
| 212 | Scott W. Sadler |
| 213 | sws@iti-oh.com |
| 214 | http://www.iti-oh.com/~sws |
| 215 | |
| 216 | |
| 217 | HISTORY |
| 218 | ======= |
| 219 | |
| 220 | 03-Mar-96 Version 1.0 Released |
| 221 | |