1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169
|
# Makefile for Version 9.5 of Icon
#
# See doc/install.htm for instructions.
.POSIX:
LC_ALL=C
export LC_ALL
# configuration parameters
name=unspecified
dest=/must/specify/dest/
##################################################################
#
# Default targets.
All: Icont Ilib Ibin
bin/icon -V
config/$(name)/status src/h/define.h:
:
: To configure Icon, run either
:
: make Configure name=xxxx [for no graphics]
: or make X-Configure name=xxxx [with X-Windows graphics]
:
: where xxxx is one of
:
@cd config; ls -d `find * -type d -prune -print`
:
@exit 1
##################################################################
#
# Code configuration.
# Configure the code for a specific system.
Configure: config/$(name)/status
$(MAKE) Pure >/dev/null
cd config; sh setup.sh $(name) NoGraphics
X-Configure: config/$(name)/status
$(MAKE) Pure >/dev/null
cd config; sh setup.sh $(name) Graphics
# Get the status information for a specific system.
Status:
@cat config/$(name)/status
##################################################################
#
# Compilation.
# The interpreter: icont and iconx.
Icont bin/icont: src/h/define.h
uname -a
pwd
cd src/common; $(MAKE)
cd src/rtt; $(MAKE)
cd src/icont; $(MAKE)
cd src/runtime; $(MAKE)
# The Icon program library.
Ilib: bin/icont
cd ipl; $(MAKE) Ilib
Ibin: bin/icont
cd ipl; $(MAKE) Ibin
##################################################################
#
# Installation and packaging.
# Installation: "make Install dest=new-icon-directory"
#
# This will fail, intentionally, if the directory "dest" already exists.
# (That prevents several kinds of possible problems.)
D=$(dest)
Install:
mkdir $D
mkdir $D/bin $D/lib $D/doc $D/man $D/man/man1
cp README $D
cp bin/[cflpvwx]* $D/bin
cp bin/icon[tx]* $D/bin
rm -f $D/bin/libI*
(cd $D/bin; ln -s icont icon)
cp lib/*.* $D/lib
cp doc/*.* $D/doc
cp man/man1/*.* $D/man/man1
# Bundle up for binary distribution.
DIR=icon-package
Package:
rm -rf $(DIR)
umask 002; $(MAKE) Install dest=$(DIR)
tar cf - $(DIR) | gzip -9 >$(DIR).tgz
rm -rf $(DIR)
##################################################################
#
# Tests.
Test Test-icont: ; cd tests; $(MAKE) Test
Samples Samples-icont: ; cd tests; $(MAKE) Samples
#################################################################
#
# Run benchmarks.
Benchmark Benchmark-icont:
cd tests/bench; $(MAKE) benchmark-icont
Micro Microbench Microbenchmark:
cd tests/bench; $(MAKE) microbenchmark
##################################################################
#
# Cleanup.
#
# "make Clean" removes intermediate files, leaving executables and library.
# "make Pure" also removes binaries, library, and configured files.
Clean:
touch Makedefs
rm -rf icon.v*
cd src; $(MAKE) Clean
cd ipl; $(MAKE) Clean
cd tests; $(MAKE) Clean
Pure:
touch Makedefs
rm -rf icon.v*
rm -rf bin/[abcdefghijklmnopqrstuvwxyz]*
rm -rf lib/[abcdefghijklmnopqrstuvwxyz]*
cd ipl; $(MAKE) Pure
cd src; $(MAKE) Pure
cd tests; $(MAKE) Pure
cd config; $(MAKE) Pure
# (This is used at Arizona to prepare source distributions.)
Dist-Clean:
rm -rf xx `find . -type d -name .git`
rm -f xx `find * -type f | xargs grep -l '<<ARIZONA-[O]NLY>>'`
rm -f xx `find . -type f -name '.??*' ! -name .placeholder`
find . -type d | xargs chmod u=rwx,g=rwsx,o=rx
find . -type f | xargs chmod ug=rw+X,o=r+X
|