# # $XConsortium: Makefile.include /main/3 1995/11/06 17:09:05 rswiston $ # # %W% %G% cde_app_builder # # RESTRICTED CONFIDENTIAL INFORMATION: # # The information in this document is subject to special # restrictions in a confidential disclosure agreement between # HP, IBM, Sun, USL, SCO and Univel. Do not distribute this # document outside HP, IBM, Sun, USL, SCO, or Univel without # Sun's specific written approval. This document and all copies # and derivative works thereof must be returned or destroyed at # Sun's request. # # Copyright 1993 Sun Microsystems, Inc. All rights reserved. # # # # This file is meant to be included in each Makefile associated with # a particular project. The following parameters should be defined # by the including Makefile, as appropriate: # # PROJECTDIR Top-level project directory # LIBRARY Target library # PROGRAM Target program # LOCALE Locale to install into # SOURCES.G GUIDE Intermediate Languages # SOURCES.c C code # SOURCES.uil UIL files # SOURCES.xres X Resource files # SOURCES.h Include files # SOURCES.l Lex files # SOURCES.sh Shell scripts # SOURCES.y Yacc files # SOURCES.pkg SVR4 package files # SOURCES.po Localization message files (only for testing) # IMAGES Bitmap/icon files # # Note that the localization items (e.g., .mo files are not shipped as # part of guide. They are installed into a test directory (for testing, # even). # # # Switch build environment based on OS. Automatically switches # for 4.1.x or 5.X builds. Override with: # # Solaris 2.0 bundles OpenWindows with the environment and # locates it in /usr/openwin. When compiling under 5.0, either # don't set OPENWINHOME, or make sure that it is set to # /usr/openwin so that LD_RUN_PATH (-R) is correct. If OpenWindows # is located somewhere else, then make a link from /usr/openwin to # that location before compiling. WIN_HOME:sh = \ ( \ case ${OPENWINHOME} \ in ?*) echo ${OPENWINHOME};; \ *) echo "/usr/openwin";; \ esac; \ ) MOTIFHOME:sh = \ ( \ case ${MOTIFHOME} \ in ?*) echo ${MOTIFHOME};; \ *) echo "/opt/SUNWmotif";; \ esac; \ ) # Derived parameters. SOURCES += \ $(SOURCES.h) \ $(SOURCES.G) \ $(SOURCES.l) \ $(SOURCES.y) \ $(SOURCES.uil) \ $(SOURCES.xres) \ $(SOURCES.c) \ $(SOURCES.ps) \ $(SOURCES.cps) \ $(SOURCES.sh) \ $(SOURCES.misc) \ $(SOURCES.other) \ $(SOURCES.pkg) \ $(SOURCES.po) TARGETS.c = \ $(SOURCES.G:%.G=%_ui.c) \ $(STUBS.G:%.G=%_stubs.c) \ $(SOURCES.l:%.l=%.c) \ $(SOURCES.y:%.y=%.c) TARGETS.h = \ $(SOURCES.G:%.G=%_ui.h) \ $(SOURCES.y:%.y=%.h) \ $(SOURCES.cps:%.cps=%.h) TARGETS.uid = \ $(SOURCES.uil:%.uil=uid/%.uid) TARGETS.other = \ $(SOURCES.G:%.G=%.info) TARGETS.sh = \ $(SOURCES.sh:%.sh=%) TARGETS.mo = \ $(SOURCES.po:%.po=%.mo) TARGETS = \ $(TARGETS.other) \ $(TARGETS.sh) \ $(TARGETS.h) \ $(TARGETS.c) \ $(TARGETS.uid) \ $(TARGETS.mo) OBJECTS = \ $(SOURCES.c:%.c=%.o) \ $(TARGETS.c:%.c=%.o) # # The project dir (i.e. PROJECTDIR) relative to the build include and lib # directories (i.e. $(PROJECTDIR)/include/ab, $(PROJECTDIR)/lib). # BUILDINCPROJ = ../.. DESTDIR = $(PROJECTDIR)/installed INSTALL += $(PROGRAM)$(TARGETS.sh) # no space!!! INSTDIR = $(DESTDIR)/bin INSTALL.a += $(LIBRARY) INSTDIR.a += $(DESTDIR)/lib INSTALL.h += INSTDIR.h = $(DESTDIR)/include INSTALL.ps += $(SOURCES.ps) INSTDIR.ps = $(DESTDIR)/etc INSTALL.other += $(TARGETS.other) INSTDIR.other = $(DESTDIR)/lib/locale/C/help INSTALL.misc += $(SOURCES.misc) INSTDIR.misc = $(DESTDIR)/lib INSTALL.mo += $(TARGETS.mo) INSTDIR.mo = $(DESTDIR)/test-l10n/lib/locale/$(LOCALE)/LC_MESSAGES INSTALL.svr4 += $(SOURCES.pkg) INSTDIR.svr4 = $(DESTDIR)/svr4_installed # OS dependent stuff INST = /usr/ucb/install CC = cc LN = ln -s PKGINST = /usr/ucb/install # Compiler flags. CFLAGS += -Xc -g CPPFLAGS += -I$(PROJECTDIR)/src/include -I$(WIN_HOME)/include LDFLAGS += -L$(WIN_HOME)/lib -R$(WIN_HOME)/lib -L$(PROJECTDIR)/src/lib LINTFLAGS += -b G2CFLAGS += -s -n ULIBS += $(PROJECTDIR)/src/lib/libAButil.a .PRECIOUS: $(ULIBS) $(LIBRARY) # Standard targets. .KEEP_STATE: all: $(SOURCES) $(IMAGES) $(TARGETS) .WAIT $(LIBRARY) $(PROGRAM) objects: $(SOURCES.c) $(TARGETS.c) $(TARGETS.h) $(TARGETS.mo) .WAIT $(OBJECTS) sources: $(SOURCES) $(IMAGES) targets: $(SOURCES) $(IMAGES) $(TARGETS) $(PROGRAM): $(SOURCES) $(TARGETS) $(OBJECTS) $(ULIBS) $(PURIFY) $(LINK.c) -o $(PROGRAM) $(OBJECTS) $(ULIBS) $(LDLIBS) %_ui.c: %.G $(G2C) $(G2CFLAGS) $* %_ui.h: %_ui.c @touch $@ %_stubs.c: %_ui.c @touch $@ %.info: %_ui.c @touch $@ %.mo: %.po msgfmt $< uid/%.uid: %.uil $(MOTIFHOME)/bin/uil $< -o $@ # This rewrites the entire library any time an object changes (not *too* bad). # Should be able to only replace new objects, but this works $(LIBRARY): $(LIBRARY)($(OBJECTS)) $(RM) $@ ar rv $@ $(OBJECTS) $(LIBRARY)(%.o): %.o @true install: all @-sccs check @if [ "$(INSTALL)" ] ; then \ set -x ; \ $(INST) -d $(INSTDIR) ; \ $(INST) -m 555 $(INSTALL) $(INSTDIR) ; \ if [ "$(ALT_PROGRAM_NAME)" ] ; then \ if [ -f $(INSTDIR)/$(PROGRAM) ] ; then \ (cd $(INSTDIR) ; \ $(RM) $(ALT_PROGRAM_NAME) ; \ ln -s $(PROGRAM) $(ALT_PROGRAM_NAME)) ; \ fi ; \ fi ; \ fi @if [ "$(INSTALL.a)" ] ; then \ set -x ; \ $(INST) -d $(INSTDIR.a) ; \ $(INST) -m 664 $(INSTALL.a) $(INSTDIR.a) ; \ (cd $(INSTDIR.a) ; chmod 444 $(INSTALL.a)) ; \ fi @if [ "$(INSTALL.h)" ] ; then \ set -x ; \ $(INST) -d $(INSTDIR.h) ; \ $(INST) -m 444 $(INSTALL.h) $(INSTDIR.h) ; \ fi @if [ "$(INSTALL.share)" ] ; then \ set -x ; \ $(INST) -d $(DESTDIR)/share/$(INSTALL.share) ; \ if [ ! -d $(DESTDIR)/$(INSTALL.share) ] ; then \ (cd $(DESTDIR) ; ln -s share/$(INSTALL.share)) ; \ fi ; \ fi @if [ "$(INSTALL.libshare)" ] ; then \ set -x ; \ $(INST) -d $(DESTDIR)/share/lib/$(INSTALL.libshare) ; \ if [ ! -d $(DESTDIR)/lib/$(INSTALL.libshare) ] ; then \ (cd $(DESTDIR)/lib ; ln -s ../share/lib/$(INSTALL.libshare)) ; \ fi ; \ fi @if [ "$(INSTALL.other)" ] ; then \ set -x ; \ $(INST) -d $(INSTDIR.other) ; \ $(INST) -m 444 $(INSTALL.other) $(INSTDIR.other) ; \ fi @if [ "$(INSTALL.misc)" ] ; then \ set -x ; \ $(INST) -d $(INSTDIR.misc) ; \ $(INST) -m 444 $(INSTALL.misc) $(INSTDIR.misc) ; \ fi @if [ "$(INSTALL.ps)" ] ; then \ set -x ; \ $(INST) -d $(INSTDIR.ps) ; \ $(INST) -m 444 $(INSTALL.ps) $(INSTDIR.ps) ; \ fi @if [ "$(INSTALL.postinstall)" ] ; then \ set -x ; \ if [ ! -d $(DESTDIR)/lib/help ] ; then \ (cd $(DESTDIR)/lib ; \ ln -s ./$(INSTALL.postinstall)) ; \ fi ; \ fi @if [ "$(INSTALL.mo)" ] ; then \ set -x ; \ $(INST) -d $(INSTDIR.mo) ; \ $(INST) -m 444 $(INSTALL.mo) $(INSTDIR.mo) ; \ fi @if [ "$(INSTALL.svr4)" ] ; then \ $(PKGINST) -d $(INSTDIR) ; \ $(PKGINST) -m 644 $(SOURCES.pkg) $(INSTDIR) ; \ $(PKGINST) -m 555 $(SOURCES.sh) $(INSTDIR) ; \ (cd $(INSTDIR) ; make_package) ; \ fi includes: ${SOURCES.h.shipped} ${SOURCES.h.shared} ${SOURCES.h.unshared} @if [ "x${SOURCES.h.shipped}" != "x" ] ; then \ for file in . ${SOURCES.h.shipped} ; do \ if [ "x$$file" != "x." ];then \ echo "$$file => ${PROJECTDIR}/src/include/ab"; \ ${RM} ${PROJECTDIR}/src/include/ab/$$file; \ ${LN} ../../${LIBPART}/$$file \ ${PROJECTDIR}/src/include/ab/$$file;\ fi; \ done;\ fi @if [ "x${SOURCES.h.shared}" != "x" ] ; then \ for file in . ${SOURCES.h.shared} ; do \ if [ "x$$file" != "x." ];then \ echo "$$file => ${PROJECTDIR}/src/include/ab_private"; \ ${RM} ${PROJECTDIR}/src/include/ab_private/$$file;\ ${LN} ../../${LIBPART}/$$file \ ${PROJECTDIR}/src/include/ab_private/$$file;\ fi; \ done;\ fi @ if [ "x${LIBS.shared}" != "x" ] ; then \ $(INST) -d ${PROJECTDIR}/src/lib;\ for file in . ${LIBS.shared} ; do \ if [ "x$$file" != "x." ];then \ echo "$$file => ${PROJECTDIR}/src/lib";\ ${RM} ${PROJECTDIR}/src/lib/$$file;\ ${LN} ../${LIBPART}/$$file \ ${PROJECTDIR}/src/lib/$$file;\ fi;\ done; \ fi saber_src: $(SOURCES) $(TARGETS) $(OBJECTS) $(ULIBS) #load $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH) $(SOURCES.c) $(SOURCES.c) $(TARGETS.c) $(ULIBS) $(LDLIBS) saber_obj: $(OBJECTS) $(ULIBS) #load $(CFLAGS) $(LDFLAGS) $(TARGET_ARCH) $(OBJECTS) $(ULIBS) $(LDLIBS) lint: $(LINT.c) $(SOURCES.c) clean: $(RM) $(TARGETS) $(OBJECTS) $(SOURCES.G:%.G=%_stubs.c) core *~ ,* *.BAK .make*.lock .make.depend* scour: clean $(RM) core $(LIBRARY) $(PROGRAM) .make* FORCE: