c9469b64fc3933d0565ffba8a45be8a39df6b927
Christian Heimke BlinkenLib v.0.1.1 (2005-01...

Christian Heimke authored 13 years ago

1) # BlinkenLib
Stefan Schuermans restructure directories

Stefan Schuermans authored 5 years ago

2) # Copyright 2004-2019 Stefan Schuermans <stefan@schuermans.info>
Stefan Schuermans cleanup file headers after...

Stefan Schuermans authored 13 years ago

3) # Copyleft GNU public license - http://www.gnu.org/copyleft/gpl.html
Christian Heimke BlinkenLib v.0.1.1 (2005-01...

Christian Heimke authored 13 years ago

4) # a blinkenarea.org project
5) 
Stefan Schuermans version info only in oine file

Stefan Schuermans authored 13 years ago

6) include version.mk
Christian Heimke BlinkenLib v.0.1.1 (2005-01...

Christian Heimke authored 13 years ago

7) 
Stefan Schuermans restructure directories

Stefan Schuermans authored 5 years ago

8) SUFFIXES :=
Christian Heimke BlinkenLib v.0.6.4 (2010-12...

Christian Heimke authored 13 years ago

9) .SUFFIXES:
Stefan Schuermans restructure directories

Stefan Schuermans authored 5 years ago

10) 
Stefan Schuermans update Windows support

Stefan Schuermans authored 7 years ago

11) .SECONDARY:
Christian Heimke BlinkenLib v.0.1.1 (2005-01...

Christian Heimke authored 13 years ago

12) 
Stefan Schuermans restructure directories

Stefan Schuermans authored 5 years ago

13) ##################
14) # default target #
15) ##################
Christian Heimke BlinkenLib v.0.5 (2005-12-06)

Christian Heimke authored 13 years ago

16) 
Stefan Schuermans restructure directories

Stefan Schuermans authored 5 years ago

17) .PHONY: all
18) all: build_all
Christian Heimke BlinkenLib v.0.6.0 (2008-05...

Christian Heimke authored 13 years ago

19) 
Stefan Schuermans restructure directories

Stefan Schuermans authored 5 years ago

20) ###########
21) # cleanup #
22) ###########
23) 
24) .PHONY: clean
Stefan Schuermans update Windows support

Stefan Schuermans authored 7 years ago

25) clean:
Stefan Schuermans restructure directories

Stefan Schuermans authored 5 years ago

26) 	rm -rf build lib bin
Christian Heimke BlinkenLib v.0.5.5 (2008-03...

Christian Heimke authored 13 years ago

27) 
Stefan Schuermans restructure directories

Stefan Schuermans authored 5 years ago

28) .PHONY: distclean
Christian Heimke BlinkenLib v.0.6.0 (2008-05...

Christian Heimke authored 13 years ago

29) distclean: clean
Stefan Schuermans restructure directories

Stefan Schuermans authored 5 years ago

30) 	rm -rf cfg
31) 
32) ############
33) # settings #
34) ############
35) 
36) CC := gcc
37) AR := ar
38) RANLIB := ranlib
39) INSTALL := install
40) 
41) #################
42) # configuration #
43) #################
44) 
45) CFG_INCDIR := -I/sw/include
46) CFG_LIBDIR := -L/sw/lib
47) 
48) CONFS := cfg/config.mk cfg/include/BlinkenLib/config.h
49) 
50) .PHONY: conf
51) conf: $(CONFS) ;
52) 
53) cfg:
54) 	mkdir $@
55) 
56) cfg/win.cfg: config/win.c | cfg
57) 	if $(CC) -E -o /dev/null $<; \
58) 	  then echo "WIN=1"; \
59) 	  else echo "WIN=0"; \
60) 	  fi >$@
61) 
62) cfg/osx.cfg: | cfg
63) 	if [ "$$(uname -s)" == "Darwin" ]; \
64) 	  then echo "OSX=1"; \
65) 	  else echo "OSX=0"; \
66) 	  fi >$@
67) 
68) cfg/bin: | cfg
69) 	mkdir $@
70) 
71) cfg/mng.cfg: | cfg/bin
72) 	if $(CC) $(CFG_INCDIR) $(CFG_LIBDIR) -o cfg/bin/mng config/mng.c -lmng \
73) 	  && cfg/bin/mng; \
74) 	  then echo "MNG=1"; \
75) 	  else echo "MNG=0"; \
76) 	  fi >>$@
77) 
78) cfg/gif%.cfg: | cfg/bin
79) 	if $(CC) $(CFG_INCDIR) $(CFG_LIBDIR) -o cfg/bin/gif$* gif$*.c -lgif \
80) 	  && ./cfg/bin/gif$*; \
81) 	  then echo "GIF$*=1"; \
82) 	  else echo "GIF$*=1"; \
83) 	  fi >$@
84) 
85) cfg/gif.cfg: cfg/gif4.cfg cfg/gif5.cfg
86) 	if grep -q 1 $^; \
87) 	  then echo "GIF=1"; \
88) 	  else echo "GIF=0"; \
89) 	  fi >$@
90) 
91) cfg/config.cfg: $(addprefix cfg/,$(addsuffix .cfg,win osx mng gif gif4 gif5))
92) 	cat $^ >$@
93) 
94) cfg/config.mk: cfg/config.cfg
95) 	sed 's/^\([A-Z0-9]*\)=\([01]\)$$/BLINKENLIB_CFG_\1:=\2/' <$< >$@
96) 
97) cfg/include: | cfg
98) 	mkdir $@
99) 
100) cfg/include/BlinkenLib: | cfg/include
101) 	mkdir $@
102) 
103) cfg/include/BlinkenLib/config.h: cfg/config.cfg version.mk \
104)                                  | cfg/include/BlinkenLib
105) 	sed 's/^\([A-Z0-9]*\)=0$$/#undef BLINKENLIB_CFG_\1/;s/^\([A-Z0-9]*\)=1$$/#define BLINKENLIB_CFG_\1/' <$< >$@
106) 	echo '#define BLINKENLIB_CONFIG "' | tr -d '\n' >>$@
107) 	sed 's/^\([A-Z0-9]*\)=0$$/\1-/;s/^\([A-Z0-9]*\)=1$$/\1+/' <$< | tr '\n' ' ' | sed 's/ *$$//' | tr -d '\n' >>$@
108) 	echo '"' >>$@
109) 	grep '^VERSION_[A-Z]* *:= *[0-9]*' version.mk | sed 's/^/#define BLINKENLIB_/;s/ *:= */ /' >>$@
110) 
111) ###############
112) # compilation #
113) ###############
114) 
115) -include cfg/config.mk
116) 
117) CFLAGS := -Wall -Wextra -Werror -fPIC -O2 -Iinclude -Icfg/include
118) LIB_LDFLAGS :=
119) LIB_LDLIBS :=
120) TOOLS_LDFLAGS := -Llib
121) TOOLS_LDLIBS :=
122) 
123) LIB_LIST := BlinkenColorizer BlinkenFrame BlinkenMovie BlinkenProto Tools
124) TOOLS_HELP_LIST := Tools2
125) TOOLS_LIST := BlinkenConv BlinkenRecv BlinkenSend
126) 
127) ifeq ($(BLINKENLIB_CFG_MNG),1)
128)   LIB_LIST += BlinkenMng
129)   LIB_LDLIBS += -lmng -lz
130) endif
131) 
132) ifeq ($(BLINKENLIB_CFG_GIF),1)
133)   LIB_LIST += BlinkenGif
134)   LIB_LDLIBS += -lgif
135) endif
136) 
137) ifeq ($(BLINKENLIB_CFG_WIN),1)
138)   SHLIBEXT := dll
139)   TOOLS_SUFFIX := .exe
140)   LIB_LDLIBS += -lws2_32
141)   TOOLS_LDLIBS += -lws2_32
142)   TOOLS_LIST += BlinkenOutputWin
143) else
144)   ifeq ($(BLINKENLIB_CFG_OSX),1)
145)     CFLAGS += -I/sw/include
146)     SHLIBEXT := dylib
147)     TOOLS_SUFFIX :=
148)     LIB_LDFLAGS += -L/sw/lib
149)     TOOLS_LDFLAGS += -L/sw/lib -Wl,-rpath,'$$ORIGIN/../lib'
150)     TOOLS_LIST += BlinkenDeviceOutput BlinkenOutput
151)   else
152)     SHLIBEXT := so
153)     TOOLS_SUFFIX :=
154)     LIB_LDFLAGS += -Wl,-soname,libBlinkenLib.$(SHLIBEXT).$(VERSION_MAJOR)
155)     TOOLS_LDFLAGS += -Wl,-rpath,'$$ORIGIN/../lib'
156)     TOOLS_LIST += BlinkenDeviceOutput BlinkenOutput
157)   endif
158) endif
159) 
160) ALL_LIST := $(LIB_LIST) $(TOOLS_LIST) $(TOOLS_HELP_LIST)
161) ALL_DEPS := $(addprefix build/,$(addsuffix .d,$(ALL_LIST)))
162) ALL_OBJS := $(addprefix build/,$(addsuffix .o,$(ALL_LIST)))
163) LIB_OBJS := $(addprefix build/,$(addsuffix .o,$(LIB_LIST)))
164) TOOLS_HELP_OBJS := $(addprefix build/,$(addsuffix .o,$(TOOLS_HELP_LIST)))
165) TOOLS_BINS := $(addprefix bin/,$(addsuffix $(TOOLS_SUFFIX),$(TOOLS_LIST)))
166) 
167) -include $(ALL_DEPS)
168) 
169) .PHONY: build_all
170) build_all: conf $(ALL_DEPS) build_lib build_tools ;
171) 
172) .PHONY: build_lib
173) build_lib: lib/libBlinkenLib.a \
174)            lib/libBlinkenLib.$(SHLIBEXT).$(VERSION_MAJOR) \
175)            lib/libBlinkenLib.$(SHLIBEXT).$(VERSION) \
176)            lib/libBlinkenLib.$(SHLIBEXT) ;
177) 
178) .PHONY: build_tools
179) build_tools: $(TOOLS_BINS) ;
180) 
181) build:
182) 	mkdir $@
183) 
184) build/%.d: src/%.c | build
185) 	$(CC) $(CFLAGS) -MM -MT $(@:.d=.o) -o $@ $<
186) 
187) build/%.o: src/%.c | build
188) 	$(CC) $(CFLAGS) -c -o $@ $<
189) 
190) lib:
191) 	mkdir $@
192) 
193) lib/libBlinkenLib.a: $(LIB_OBJS) | lib
194) 	$(AR) cr $@ $^
195) 	$(RANLIB) $@
196) 
197) lib/libBlinkenLib.$(SHLIBEXT).$(VERSION): $(LIB_OBJS) | lib
198) 	$(CC) -shared $(LIB_LDFLAGS) -o $@ $+ $(LIB_LDLIBS)
199) 
200) lib/libBlinkenLib.$(SHLIBEXT).$(VERSION_MAJOR): lib/libBlinkenLib.$(SHLIBEXT).$(VERSION)
201) 	ln -s $(notdir $<) $@
202) 
203) lib/libBlinkenLib.$(SHLIBEXT): lib/libBlinkenLib.$(SHLIBEXT).$(VERSION_MAJOR)
204) 	ln -s $(notdir $<) $@
205) 
206) build/%.d: tools/%.c | build
207) 	$(CC) $(CFLAGS) -MM -MT $(@:.d=.o) -o $@ $<
208) 
209) build/%.o: tools/%.c | build
210) 	$(CC) $(CFLAGS) -c -o $@ $<
211) 
212) build/libBlinkenLibToolsHelp.a: $(TOOLS_HELP_OBJS) | lib
213) 	$(AR) cr $@ $^
214) 	$(RANLIB) $@
215) 
216) bin:
217) 	mkdir $@
218) 
219) $(TOOLS_BINS): bin/%: lib/libBlinkenLib.$(SHLIBEXT)
220) 
221) bin/%: build/%.o build/libBlinkenLibToolsHelp.a | bin
222) 	$(CC) $(TOOLS_LDFLAGS) -o $@ $^ -lBlinkenLib $(TOOLS_LDLIBS)
223) 
224) ################
225) # installation #
226) ################
227) 
228) INSTALL_HEADER_LIST := BlinkenLib BlinkenMovie BlinkenFrame BlinkenColorizer \
229)                        BlinkenProto
230) 
231) ENV_PREFIX := $(shell echo $$PREFIX)
232) STOW_DIR := /usr/local/stow
233) STOW_PREFIX := $(STOW_DIR)/BlinkenLib-$(VERSION)
234) DEF_PREFIX := /usr/local
235) ifneq ($(ENV_PREFIX),)
236)   PREFIX := $(ENV_PREFIX)
237) else
238)   ifeq ($(shell if test -d $(STOW_DIR); then echo stow; fi),stow)
239)     PREFIX := $(STOW_PREFIX)
240)   else
241)     PREFIX := $(DEF_PREFIX)
242)   endif
243) endif
244) 
245) INSTALL_HEADERS := cfg/include/BlinkenLib/config.h \
246)                    $(addprefix include/BlinkenLib/,$(addsuffix .h,$(INSTALL_HEADER_LIST)))
247) INSTALL_LIBS := lib/libBlinkenLib.a lib/libBlinkenLib.$(SHLIBEXT).$(VERSION)
248) INSTALL_BINS := $(addprefix bin/,$(addsuffix $(TOOLS_SUFFIX),$(TOOLS_LIST)))
Christian Heimke BlinkenLib v.0.6.0 (2008-05...

Christian Heimke authored 13 years ago

249) 
Stefan Schuermans restructure directories

Stefan Schuermans authored 5 years ago

250) .PHONY: install
251) install:
252) 	$(INSTALL) -d $(PREFIX)/include/BlinkenLib
253) 	$(INSTALL) $(INSTALL_HEADERS) $(PREFIX)/include/BlinkenLib
254) 	$(INSTALL) -d $(PREFIX)/lib
255) 	$(INSTALL) $(INSTALL_LIBS) $(PREFIX)/lib
256) 	ln -sf libBlinkenLib.$(SHLIBEXT).$(VERSION) $(PREFIX)/lib/libBlinkenLib.$(SHLIBEXT).$(VERSION_MAJOR)
257) 	ln -sf libBlinkenLib.$(SHLIBEXT).$(VERSION_MAJOR) $(PREFIX)/lib/libBlinkenLib.$(SHLIBEXT)
258) 	$(INSTALL) -d $(PREFIX)/bin
259) 	$(INSTALL) $(INSTALL_BINS) $(PREFIX)/bin
Christian Heimke BlinkenLib v.0.5.5 (2008-03...

Christian Heimke authored 13 years ago

260) 
Stefan Schuermans restructure directories

Stefan Schuermans authored 5 years ago

261) .PHONY: uninstall
Christian Heimke BlinkenLib v.0.5.5 (2008-03...

Christian Heimke authored 13 years ago

262) uninstall:
Stefan Schuermans restructure directories

Stefan Schuermans authored 5 years ago

263) 	rm -f $(addprefix $(PREFIX)/bin/,$(notdir $(INSTALL_BINS)))
264) 	rm -f $(PREFIX)/lib/libBlinkenLib.$(SHLIBEXT)
265) 	rm -f $(PREFIX)/lib/libBlinkenLib.$(SHLIBEXT).$(VERSION_MAJOR)
266) 	rm -f $(addprefix $(PREFIX)/lib/,$(notdir $(INSTALL_LIBS)))
267) 	rm -rf $(PREFIX)/include/BlinkenLib