summaryrefslogtreecommitdiffstats
path: root/libtecla/Makefile.rules
blob: 0cf23167d8cfc430d74f0db86d199c4263ae1e15 (plain) (blame)
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
default: $(OBJDIR) $(TARGETS) $(DEMOS) $(PROGRAMS)

#-----------------------------------------------------------------------
# You shouldn't need to change anything in this file.
#-----------------------------------------------------------------------

# Create the directory in which the object files will be created.

$(OBJDIR):
	mkdir $(OBJDIR)

# Construct the compilation command.

COMPILE = $(CC) -c $(CFLAGS) -o $@

LIB_OBJECTS = $(OBJDIR)/getline.o $(OBJDIR)/keytab.o $(OBJDIR)/freelist.o \
 $(OBJDIR)/strngmem.o $(OBJDIR)/hash.o $(OBJDIR)/history.o \
 $(OBJDIR)/direader.o $(OBJDIR)/homedir.o $(OBJDIR)/pathutil.o \
 $(OBJDIR)/expand.o $(OBJDIR)/stringrp.o $(OBJDIR)/cplfile.o \
 $(OBJDIR)/cplmatch.o $(OBJDIR)/pcache.o $(OBJDIR)/version.o \
 $(OBJDIR)/chrqueue.o $(OBJDIR)/ioutil.o $(OBJDIR)/errmsg.o

# List the available demonstration programs.

DEMO_PROGS = demo$(SUFFIX) demo2$(SUFFIX) demo3$(SUFFIX)

# List all of the programs that this makefile can build.

PROGS = $(DEMO_PROGS) enhance$(SUFFIX)

static: libtecla$(SUFFIX).a

libtecla$(SUFFIX).a: $(LIB_OBJECTS)
	$(AR) -ru $@ $(LIB_OBJECTS); \
	$(RANLIB) $@; \
	rm -f $(PROGS)

shared: libtecla$(SUFFIX)$(SHARED_EXT)

libtecla$(SUFFIX)$(SHARED_EXT): $(LIB_OBJECTS) $(srcdir)/libtecla.map \
 libtecla.map.opt
	$(LINK_SHARED)
	@endings="$(SHARED_ALT)" ; \
	for alt in $$endings ; do \
	  lnk="libtecla$(SUFFIX)$$alt"; \
	  echo "rm -f $$lnk; $(LN_S) $@ $$lnk"; \
	  rm -f $$lnk; $(LN_S) $@ $$lnk; \
	done; \
	rm -f $(PROGS)

libtecla.map.opt: $(srcdir)/libtecla.map
	sed -n 's/^[ 	]*\([_a-zA-Z0-9]*\)[ 	]*;.*/+e \1/p' $? >$@

demos: $(DEMO_PROGS)

demo$(SUFFIX): $(OBJDIR)/demo.o $(TARGETS)
	LD_RUN_PATH="$(LIBDIR):$$LD_RUN_PATH:`pwd`" $(CC) $(CFLAGS) -o $@ \
 $(OBJDIR)/demo.o -L. -ltecla$(SUFFIX) $(LIBS)

demo2$(SUFFIX): $(OBJDIR)/demo2.o $(TARGETS)
	LD_RUN_PATH="$(LIBDIR):$$LD_RUN_PATH:`pwd`" $(CC) $(CFLAGS) -o $@ \
 $(OBJDIR)/demo2.o -L. -ltecla$(SUFFIX) $(LIBS)

demo3$(SUFFIX): $(OBJDIR)/demo3.o $(TARGETS)
	LD_RUN_PATH="$(LIBDIR):$$LD_RUN_PATH:`pwd`" $(CC) $(CFLAGS) -o $@ \
 $(OBJDIR)/demo3.o -L. -ltecla$(SUFFIX) $(LIBS)

enhance$(SUFFIX): $(OBJDIR)/enhance.o $(TARGETS)
	LD_RUN_PATH="$(LIBDIR):$$LD_RUN_PATH:`pwd`" $(CC) $(CFLAGS) -o $@ \
 $(OBJDIR)/enhance.o -L. -ltecla$(SUFFIX) $(LIBS)

#-----------------------------------------------------------------------
# Object file dependencies.
#-----------------------------------------------------------------------

$(OBJDIR)/getline.o: $(srcdir)/getline.c $(srcdir)/pathutil.h \
 $(srcdir)/libtecla.h $(OBJDIR)/keytab.h $(srcdir)/history.h \
 $(srcdir)/freelist.h $(srcdir)/stringrp.h $(srcdir)/getline.h \
 $(srcdir)/ioutil.h $(srcdir)/chrqueue.h $(srcdir)/cplmatch.h \
 $(srcdir)/expand.h $(srcdir)/errmsg.h
	$(COMPILE) $(srcdir)/getline.c

$(OBJDIR)/keytab.o: $(srcdir)/keytab.c $(OBJDIR)/keytab.h \
 $(srcdir)/strngmem.h $(srcdir)/getline.h $(srcdir)/errmsg.h \
 $(srcdir)/hash.h
	$(COMPILE) $(srcdir)/keytab.c

$(OBJDIR)/strngmem.o: $(srcdir)/strngmem.c $(srcdir)/strngmem.h \
 $(srcdir)/freelist.h
	$(COMPILE) $(srcdir)/strngmem.c

$(OBJDIR)/freelist.o: $(srcdir)/freelist.c $(srcdir)/freelist.h
	$(COMPILE) $(srcdir)/freelist.c

$(OBJDIR)/hash.o: $(srcdir)/hash.c $(srcdir)/hash.h $(srcdir)/strngmem.h \
 $(srcdir)/freelist.h
	$(COMPILE) $(srcdir)/hash.c

$(OBJDIR)/history.o: $(srcdir)/history.c $(srcdir)/ioutil.h \
 $(srcdir)/history.h $(srcdir)/freelist.h $(srcdir)/errmsg.h
	$(COMPILE) $(srcdir)/history.c

$(OBJDIR)/expand.o: $(srcdir)/expand.c $(srcdir)/freelist.h \
 $(srcdir)/direader.h $(srcdir)/pathutil.h $(srcdir)/homedir.h \
 $(srcdir)/stringrp.h $(srcdir)/libtecla.h $(srcdir)/ioutil.h \
 $(srcdir)/expand.h $(srcdir)/errmsg.h
	$(COMPILE) $(srcdir)/expand.c

$(OBJDIR)/direader.o: $(srcdir)/direader.c $(srcdir)/direader.h \
 $(srcdir)/errmsg.h
	$(COMPILE) $(srcdir)/direader.c

$(OBJDIR)/homedir.o: $(srcdir)/homedir.c $(srcdir)/pathutil.h \
 $(srcdir)/homedir.h $(srcdir)/errmsg.h
	$(COMPILE) $(srcdir)/homedir.c

$(OBJDIR)/pathutil.o: $(srcdir)/pathutil.c $(srcdir)/pathutil.h
	$(COMPILE) $(srcdir)/pathutil.c

$(OBJDIR)/stringrp.o: $(srcdir)/stringrp.c $(srcdir)/freelist.h \
 $(srcdir)/stringrp.h
	$(COMPILE) $(srcdir)/stringrp.c

$(OBJDIR)/cplfile.o: $(srcdir)/cplfile.c $(srcdir)/libtecla.h \
 $(srcdir)/direader.h $(srcdir)/homedir.h $(srcdir)/pathutil.h \
 $(srcdir)/cplfile.h $(srcdir)/errmsg.h
	$(COMPILE) $(srcdir)/cplfile.c

$(OBJDIR)/cplmatch.o: $(srcdir)/cplmatch.c $(srcdir)/libtecla.h \
 $(srcdir)/ioutil.h $(srcdir)/stringrp.h $(srcdir)/pathutil.h \
 $(srcdir)/cplfile.h $(srcdir)/cplmatch.h $(srcdir)/errmsg.h
	$(COMPILE) $(srcdir)/cplmatch.c

$(OBJDIR)/pcache.o: $(srcdir)/pcache.c $(srcdir)/libtecla.h \
 $(srcdir)/pathutil.h $(srcdir)/homedir.h $(srcdir)/freelist.h \
 $(srcdir)/direader.h $(srcdir)/stringrp.h $(errmsg.h)
	$(COMPILE) $(srcdir)/pcache.c

$(OBJDIR)/demo.o: $(srcdir)/demo.c $(srcdir)/libtecla.h
	$(COMPILE) $(srcdir)/demo.c

$(OBJDIR)/demo2.o: $(srcdir)/demo2.c $(srcdir)/libtecla.h
	$(COMPILE) $(srcdir)/demo2.c

$(OBJDIR)/demo3.o: $(srcdir)/demo3.c $(srcdir)/libtecla.h
	$(COMPILE) $(srcdir)/demo3.c

$(OBJDIR)/version.o: $(srcdir)/version.c $(srcdir)/libtecla.h
	$(COMPILE) $(srcdir)/version.c

$(OBJDIR)/enhance.o: $(srcdir)/enhance.c $(srcdir)/libtecla.h
	$(COMPILE) $(srcdir)/enhance.c

$(OBJDIR)/chrqueue.o: $(srcdir)/chrqueue.c $(srcdir)/ioutil.h \
 $(srcdir)/chrqueue.h $(srcdir)/freelist.h $(srcdir)/errmsg.h
	$(COMPILE) $(srcdir)/chrqueue.c

$(OBJDIR)/ioutil.o: $(srcdir)/ioutil.c $(srcdir)/ioutil.h
	$(COMPILE) $(srcdir)/ioutil.c

$(OBJDIR)/errmsg.o: $(srcdir)/errmsg.c $(srcdir)/errmsg.h
	$(COMPILE) $(srcdir)/errmsg.c

#-----------------------------------------------------------------------
# Include file dependencies.
#-----------------------------------------------------------------------

$(OBJDIR)/keytab.h: $(srcdir)/keytab.h $(srcdir)/libtecla.h
	cp $(srcdir)/keytab.h $@