338 lines
8.3 KiB
Makefile
338 lines
8.3 KiB
Makefile
|
|
#
|
|
# $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:
|