#
# di makefile
#
# Copyright 2001-2007 Brad Lanam Walnut Creek CA, USA
#
# $Id: Makefile,v 1.15 2007-05-30 10:26:36-07 bll Exp $
# $Source: /export/home/bll/DI/RCS/Makefile,v $
# @(#)Makefile 1.25
#
#
SHELL = /bin/sh
OBJ_EXT = .o
EXE_EXT =
CC = cc
CFLAGS = -O
LDFLAGS =
#
# installation options
#
prefix = /usr/local
INSTDIR = $(prefix)/bin
LOCALEDIR = $(prefix)/share/locale
PROG = di
MPROG = mi
TARGET = $(INSTDIR)/$(PROG)
MTARGET = $(INSTDIR)/$(MPROG)
#
# additional flags/libraries
#
OTHERFLAGS = -DPROG=\"$(PROG)\" -DMPROG=\"$(MPROG)\" \
-DDI_LOCALE_DIR=\"$(LOCALEDIR)\"
# if you need permissions other than the default,
# edit these, and do a "make installperm".
USER = root
GROUP = bin
#INSTPERM = 111 # change USER to bin also...
INSTPERM = 4111 # install suid if your system has a mount table only root
# can read. For SysV.4 and Solaris, the mount command may
# reset the permissions of /etc/mnttab.
#
# simple man page installation
#
MANPATH = $(prefix)/share/man
MANDIR = $(MANPATH)/man1
MANTARGET = $(PROG).1
MANPERM = 644
#
# common programs
#
LN = ln
RM = rm
CP = cp
MV = mv
TEST = test
CHOWN = chown
CHGRP = chgrp
CHMOD = chmod
TOUCH = touch
MSGFMT = msgfmt
MKDIR = mkdir
SED = sed
###
# have to get various environment variables set up.
all:
./Build
di-all: config.h $(PROG)$(EXE_EXT) hasnls$(EXE_EXT)
config.h: features/di.iffe features/cflags.sh \
mkconfig.pl features/mkconfig.dat
@-$(RM) -f config.h
./Build config.h
#config.h: features/di.iffe features/cflags.sh \
# mkconfig.pl features/mkconfig.dat
# @-$(RM) -f config.h
# ./Build dconfig.h
wconfig.h: config.win95
$(CP) -f config.win95 config.h
# This was tested using vc++ 5.0.
windows: wconfig.h
$(MAKE) -f Makefile \
CC=cl LD=cl EXE_EXT=".exe" OBJ_EXT=".obj" \
CFLAGS="$(CFLAGS) -nologo -O2 \
-DDEFAULT_FORMAT=\\\"sMbuvpT\\\"" \
LDFLAGS="-nologo -O2" $(PROG).exe
# This was tested using cygwin
windows-gcc: wconfig.h
$(MAKE) -f Makefile \
CC=gcc LD=gcc EXE_EXT=".exe" OBJ_EXT=".o" \
CFLAGS="$(CFLAGS) -g -O2 \
-DDEFAULT_FORMAT=\\\"sMbuvpT\\\"" \
LDFLAGS="-g -O2" $(PROG).exe
####################
di-exe: $(PROG)$(EXE_EXT)
-$(LN) -f $(PROG)$(EXE_EXT) $(MPROG)$(EXE_EXT)
objclean:
-$(RM) -rf *.o *.obj
clean:
-$(RM) -rf $(PROG)$(EXE_EXT) $(MPROG)$(EXE_EXT) \
hasnls$(EXE_EXT) *.o *.obj a.out mkconfig.log \
_tmp \
>/dev/null 2>&1
distclean:
$(MAKE) -f Makefile clean
-$(RM) -f config.h reqlibs.txt object_ext \
diskinfo$(EXE_EXT) \
>/dev/null 2>&1
realclean:
$(MAKE) -f Makefile distclean
install: install-prog install-man
build-po:
-(cd po;for i in *.po; do \
j=`echo $$i | $(SED) 's,\\.po$$,,'`; \
$(MSGFMT) -o $$j.mo $$i; \
done)
install-po: build-po
-$(TEST) -d $(LOCALEDIR) || $(MKDIR) -p $(LOCALEDIR)
-(cd po;for i in *.po; do \
j=`echo $$i | $(SED) 's,\\.po$$,,'`; \
$(TEST) -d $(LOCALEDIR)/$$j || \
$(MKDIR) $(LOCALEDIR)/$$j; \
$(TEST) -d $(LOCALEDIR)/$$j/LC_MESSAGES || \
$(MKDIR) $(LOCALEDIR)/$$j/LC_MESSAGES; \
$(CP) -f $$j.mo $(LOCALEDIR)/$$j/LC_MESSAGES/di.mo; \
$(RM) -f $$j.mo; \
done)
install-prog: $(PROG)$(EXE_EXT) hasnls$(EXE_EXT)
-$(TEST) -d $(prefix) || $(MKDIR) $(prefix)
-$(TEST) -d $(INSTDIR) || $(MKDIR) $(INSTDIR)
-$(TEST) -f $(TARGET) && $(MV) -f $(TARGET) $(TARGET).old
-$(TEST) -f $(MTARGET) && $(MV) -f $(MTARGET) $(MTARGET).old
$(CP) -f $(PROG)$(EXE_EXT) $(TARGET)
-$(LN) -f $(TARGET) $(MTARGET)
-$(RM) -f $(TARGET).old $(MTARGET).old
@-./hasnls$(EXE_EXT) && echo "# NLS enabled"
@-./hasnls$(EXE_EXT) || echo "# NLS not enabled"
-./hasnls$(EXE_EXT) && \
$(MAKE) LOCALEDIR="$(LOCALEDIR)" \
MSGFMT="$(MSGFMT)" install-po
install-man:
-$(TEST) -d $(MANPATH) || $(MKDIR) -p $(MANPATH)
-$(TEST) -d $(MANDIR) || $(MKDIR) -p $(MANDIR)
$(CP) -f di.1 $(MANDIR)/$(MANTARGET)
$(CHMOD) $(MANPERM) $(MANDIR)/$(MANTARGET)
installperms:
$(CHOWN) $(USER) $(TARGET)
$(CHGRP) $(GROUP) $(TARGET)
$(CHMOD) $(INSTPERM) $(TARGET)
###
current-files:
-$(RM) -f features/* > /dev/null 2>&1
$(CP) -f po.base/*.po po
$(CP) -f features.base/*.sh features.base/*.iffe \
features.base/*.dat \
features
tar: Build LICENSE LICENSE.iffe MANIFEST \
Makefile README bin config.win95 \
di.1 di.c \
di.h dilib.c features getopt.c hasnls.c \
mkconfig.pl po version.h
$(MAKE) -f Makefile current-files
$(SHELL) mktar.sh $?
testtar: Build LICENSE LICENSE.iffe MANIFEST \
Makefile README bin config.win95 \
di.1 di.c \
di.h dilib.c features getopt.c hasnls.c \
mkconfig.pl po version.h
$(MAKE) -f Makefile current-files
$(SHELL) mktar.sh $?
###
$(PROG)$(EXE_EXT): di$(OBJ_EXT) dilib$(OBJ_EXT) \
getopt$(OBJ_EXT)
@test ! -f reqlibs.txt || echo "*** Using libs: `cat reqlibs.txt`"
$(CC) -o $(PROG)$(EXE_EXT) \
$(CFLAGS) $(LDFLAGS) \
di$(OBJ_EXT) dilib$(OBJ_EXT) \
getopt$(OBJ_EXT) $(LIBS) \
`test ! -f reqlibs.txt || cat reqlibs.txt`
hasnls$(EXE_EXT): hasnls$(OBJ_EXT)
$(CC) -o hasnls$(EXE_EXT) \
$(CFLAGS) $(LDFLAGS) \
hasnls$(OBJ_EXT)
###
di$(OBJ_EXT): di.c config.h di.h version.h
$(CC) -c $(CFLAGS) $(OTHERFLAGS) di.c
dilib$(OBJ_EXT): dilib.c config.h di.h
$(CC) -c $(CFLAGS) dilib.c
getopt$(OBJ_EXT): getopt.c config.h di.h
$(CC) -c $(CFLAGS) getopt.c
hasnls$(OBJ_EXT): hasnls.c config.h
$(CC) -c $(CFLAGS) $(OTHERFLAGS) hasnls.c
syntax highlighted by Code2HTML, v. 0.9.1