Copyright (c) 1993 Sanjay Ghemawat Simple Cookbook (see below for more details) =============== 1. Get a C++ compiler 2. Make sure Tcl/Tk library and header files are installed. 3. Execute "./configure" (in the directory that contains this file). 4. Execute "make" 5. Execute "make test" to test it 6. Execute "make install" Alternate Installations ======================= By default, ical installs as an executable plus some library files written in tcl. You can optionally generate a standalone executable that can be copied around from system to system without worrying about the location of library files. % make ical-bundle This will generate a big executable "ical-bundle" that can be copied from one system to another without worrying about the presence or location of library files. Configuration notes =================== In the directory that this file is in, type `./configure'. If you're using `csh' on an old version of System V, you might need to type `sh configure' instead to prevent `csh' from trying to execute `configure' itself. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation, and creates the Makefile. Usually configure will be able to guess appropriate values for all `make' variables, However, sometimes you will want to override its choices. You can override these choices by setting environment variables before you run configure. For the following variables, any value given in the environment overrides the value that `configure' would choose: CXX C++ compiler program (for .C files). INSTALL Program for installing files. prefix Installation prefix tcllib Directory that contains tcl library (e.g. /usr/local/lib) tklib Directory that contains tk library (e.g. /usr/local/lib) tclinc Directory that contains tcl.h (e.g. /usr/local/include) tkinc Directory that contains tk.h (e.g. /usr/local/include) tclscripts Directory that contains tcl scripts (e.g. /usr/local/lib/tcl) tkscripts Directory that contains tk scripts (e.g. /usr/local/lib/tk) Installation Directories ======================== If you have "wish" installed on your system, then by default this package will be installed in the same location as wish. I.e., if "wish" is installed in /foo/bin, then the package will be installed in /foo/{bin,lib,man}. If you do not have "wish" installed, then the package will be installed in "/usr/local/{bin,lib,man}". You can specify another installation prefix by giving `configure' the option `--prefix=PATH'. Binaries go in /bin Ical library files go in /lib/ical- Man pages go in /man/man1 Compiling in a different directory ================================== To compile the package in a different directory from the one containing the source code, you must use GNU make (or a version of make that supports VPATH in the same way as GNU make). `cd' to the directory where you want the object files and executables to go and run `/configure'. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. If for some reason `configure' is not in the source code directory that you are configuring, then it will report that it can't find the source code. In that case, run `configure' with the option `--srcdir=DIR', where DIR is the directory that contains the source code. Before Installation =================== You can play with ical and check out its features before you install it. Build ical as described in steps 1--4 above. Then execute "make test" in the directory where you built ical. Go ahead, try it. Problems ======== If you need to do unusual things to compile the package, we encourage you to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the README so we can include them in the next release. Here are some problems and solutions reported by various people. ------- CPU: IBM RS/6000 OS: AIX 3.2.4 C++: IBM xlC 1.1.2.28 Symptom: invalid command name "addtag" Trace: invalid command name "addtag" while executing "addtag oldinterest withtag interest" invoked from within "de_interest $name.days $slot(date)" (procedure "DateEditor::calc_interest" line 7) ... Workaround: The C++ compiler does not seem to handle calls to Tcl_VarEval correctly under optimization. The person who reported this problem compiled everything with optimization turned off to solve this problem. It might be sufficient just to compile dateeditor.cc without optimization. ------- CPU: DEC MIPS Workstations OS: Ultrix 4.* Symptom: Files do not compile because of errors in "X11" header fi;es. Workaround: The default X11 header files and libraries are busted on some versions of Ultrix. If your system administrator has installed the correct files from the MIT X11 distribution, then you can use those by setting "X_CFLAGS" and "X_LIBS" in your invocation of make. For example, on some local Ultrix machines, the correct X11 header files are in "/usr/include/mit" and the correct X11 library is "-lX11-mit". The following invocation uses these versions --- make X_CFLAGS=-I/usr/include/mit X_LIBS=-lX11-mit ------- CPU: *86 PCs? OS: ? X: Xfree86 v2.0 Symptom: Some of the lines in the appointment listing area are drawn all over the screen (outside ical's windows). Workaround: Remove the "-stipple" option from the lines created in the "background" method in "apptlist.tcl".