imake is a utility that works with make to enable code to be compiled and installed on different UNIX machines. imake makes possible the wide portability of the X Window System code and is widely considered an X tool, but it's also useful for any software project that needs to be ported to many UNIX systems. imake also runs under Windows NT. This handbook is ideal for X and UNIX programmers who want their software to be portable. The book is divided into two sections. The first section is a general explanation of imake, X configuration files, and how to write and debug an Imakefile. The second section describes how to write configuration files and presents a configuration file architecture that allows development of coexisting sets of configuration files. Several sample sets of configuration files are described and are available free over the Net. New in the second edition: Updated to cover the version X11R6.1 of the X Window System Discusses using imake for non-UNIX systems such as Windows NT Covers some of the quirks about using imake under OpenWindows/Solaris
Paul DuBois is a programmer at the Wisconsin Regional Primate Research Center at the University of Wisconsin-Madison. He leads a quiet life with few interests outside of family, church, and programming.
Preface Chapter 1. Introduction The Nature of Nonportability The Nature of Configurability How Does imake Work? What Can imake Do for You? Slaying the Beast The Essential imake Toolkit Chapter 2. A Tour of imake The Exercises What Have You Learned? Common Problems Chapter 3. Understanding Configuration Files Basic Principles Use Machine-Independent Description Files Organizing imake Input Parameterizing Variation Selecting Parameters by\ System Type Assigning Values Conditionally Allowing for Local Convention Final Architecture Chapter 4. Writing Comments Types of Comments Comment Problems Obsolete Commenting Conventions Chapter 5. The X11 Configuration Files The X11 Template Default Configuration Information Machine-Specific Configuration Information What To Build Miscellaneous Topics Chapter 6. Writing Imakefiles General Strategy Building One Program Specifying Libraries Multiple Programs Organizing File Lists Building Libraries Building Other Types of Targets Installing Files Managing Multiple-Directory Projects Other Useful make Variables Questions Chapter 7. Imakefile Troubleshooting Diagnosing Errors Disaster Recovery Whitespace Errors Misspelled Rules and Macros Incorrect Library Dependency Specifications Continuation Line Problems Incorrect Value Assignments Errors of Omission Chapter 8. A Closer Look at Makefile Generation What imake Needs To Know Running imake from a Makefile Makefile Generation in X11 Chapter 9. A Configuration Starter Project Creating the Starter Project Testing the Starter Project Using the Starter Project An X11R5 Starter Project Chapter 10. Coordinating Sets of Configuration Files Designing a General-Purpose Bootstrapper Implementing imboot Cooperating with imboot Extending imboot's Reach Using imboot in Makefiles Chapter 11. Introduction to Configuration File Writing Setting Up Deleting Information Retaining Information Adding Information Chapter 12. Writing Rule Macros Rule Syntax Building the Basic Rule Making the Rule Work Harder Refining the Scope of a Target Documenting Rules Building Libraries Installation Rules Chapter 13. Configuration Problems and Solutions Describing Project Layout Specifying Library Names Handling Newly Discovered Nonportabilities Conditionals in Imakefiles Configuring Source Files Using make Suffix Rules Shell Programming in Rules Writing a World Target Chapter 14. Troubleshooting Configuration Files Rule Syntax Errors Malformed Conditionals Missing Default Values Incorrect Version Number Tests Missing Template Nonportable cpp or make Constructs Errors of Omission Chapter 15. Designing Extensible Configuration Files Reusing Configuration Files Are the X11 Configuration Files Reusable? Methods of Reusing Configuration Files Implementing Extensible Configuration Files Does This Architecture Really Work? Chapter 16. Creating Extensible Configuration Files Preliminaries Setting Up Modifying the Architecture Making the Files Self-Aware Generalizing File Contents Installing the Files Chapter 17. Using Extensible Configuration Files Starting Your Project Override and Extension Principles Project Layout Installation Directories Project-Specific Rules Libraries System Characteristics The Site-Specific File Experimenting with Configuration Files Distributing Software Configured with Extensible Files Creating a New Set of Extensible Files Chapter 18. Using imake on Non-UNIX Systems Primary Tools Secondary Tools Imakefiles Configuration Files Epilogue Appendix A. Obtaining Configuration Software Appendix B. Installing Configuration Software Appendix C. Configuration Programs: A Quick Reference Appendix D. Generating Makefiles: A Quick Reference Appendix E. Writing Imakefiles: A Quick Reference Appendix F. Writing Configuration Files: A Quick Reference Appendix G. Basics of make and cpp Appendix H. A Little History Appendix I. Other Sources of Information Appendix J. Using imake with OpenWindows Index