fb91a0085c0d36034a4d5a832f9598ead59d4e76
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

1) # FlexiPix library
Stefan Schuermans v1.0.5

Stefan Schuermans authored 13 years ago

2) # !version: 1.0.5! !date: 2010-12-22!
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

3) #
4) # Copyright 2010 Stefan Schuermans <stefan schuermans info>
5) #
6) # This program is free software: you can redistribute it and/or modify
7) # it under the terms of the GNU General Public License as published by
8) # the Free Software Foundation, version 3 of the License.
9) #
10) #
11) # This program is distributed in the hope that it will be useful,
12) # but WITHOUT ANY WARRANTY; without even the implied warranty of
13) # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14) # GNU General Public License for more details.
15) #
16) # You should have received a copy of the GNU Lesser General Public License
17) # along with this program. If not, see <http://www.gnu.org/licenses/>.
18) 
19) LIBTARGET=libflexipix
20) VER=1
21) VERMIN=0
Stefan Schuermans v1.0.5

Stefan Schuermans authored 13 years ago

22) VERREV=5
23) 
24) OS:=$(shell uname -s)
25) ifeq ($(OS),Linux)
26)   SED_I=sed -i
27)   CC=gcc
28)   AR=ar
29)   SHLIBFLAGS=-shared -Wl,-soname,$(LIBTARGET).so.$(VER)
30)   SHLIBEXT=so
31)   RANLIB=ranlib
32)   INSTALL=install
33)   STOW_DIR=/usr/local/stow
34)   DEF_PREFIX=/usr/local
35) else
36)   ifeq ($(OS),Darwin)
37)     SED_I=sed -i ""
38)     CC=gcc
39)     AR=ar
40)     SHLIBFLAGS=-dynamiclib
41)     SHLIBEXT=dylib
42)     RANLIB=ranlib
43)     INSTALL=install
44)     STOW_DIR=/usr/local/stow
45)     DEF_PREFIX=/usr/local
46)   else
47)     $(error unsupported OS)
48)   endif
49) endif
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

50) 
51) SRCS=$(wildcard src/*.c)
52) EX_SRCS=$(wildcard examples/src/*.c)
53) 
54) CFLAGS=-W -Wall -fPIC -O3
55) DEFINES=-DFLP_VER_MAJ=$(VER) -DFLP_VER_MIN=$(VERMIN) -DFLP_VER_REV=$(VERREV)
56) INCLUDES=-Iinclude
57) LDFLAGS=-Llib
58) LIBS=-lm -lpthread -lflexipix
59) 
60) SRCS_BASE=$(patsubst %.c,%,$(SRCS))
61) DEPS=$(addsuffix .d,$(SRCS_BASE))
62) OBJS=$(addsuffix .o,$(SRCS_BASE))
63) EX_SRCS_BASE=$(patsubst %.c,%,$(EX_SRCS))
64) EX_DEPS=$(addsuffix .d,$(EX_SRCS_BASE))
65) EX_OBJS=$(addsuffix .o,$(EX_SRCS_BASE))
66) EX_TARGETS=$(EX_SRCS_BASE)
67) 
68) LIBTGA = lib/$(LIBTARGET).a
Stefan Schuermans v1.0.5

Stefan Schuermans authored 13 years ago

69) LIBTGSO = lib/$(LIBTARGET).$(SHLIBEXT).$(VER)
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

70) LIBTGSOM = $(LIBTGSO).$(VERMIN)
71) LIBTGSOR = $(LIBTGSOM).$(VERREV)
72) 
73) VERSION = $(VER).$(VERMIN).$(VERREV)
74) DATE := $(shell date +%Y-%m-%d)
75) PACKNAME = $(LIBTARGET)-$(VERSION)_$(DATE)
76) PACKDATA = ChangeLog COPYING COPYING.LESSER Makefile \
77)            examples include README src
78) 
79) ENV_PREFIX=$(shell echo $$PREFIX)
Stefan Schuermans v1.0.4

Stefan Schuermans authored 13 years ago

80) STOW_PREFIX=$(STOW_DIR)/libflexipix-$(VERSION)
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

81) ifneq ($(ENV_PREFIX),)
82)   PREFIX=$(ENV_PREFIX)
83) else
84)   ifeq ($(shell if [ -d $(STOW_DIR) ]; then echo stow; fi),stow)
85)     PREFIX=$(STOW_PREFIX)
86)   else
87)     PREFIX=$(DEF_PREFIX)
88)   endif
89) endif
90) 
91) .PHONY: all clean pack install uninstall
92) .SECONDARY:
93) .SUFFIXES:
94) 
95) all: deps $(LIBTGA) $(LIBTGSO) $(EX_TARGETS)
96) 
97) ifneq ($(MAKECMDGOALS),clean)
98)   include deps
99) endif
100) 
101) deps: $(DEPS) $(EX_DEPS)
102) 	cat /dev/null $+ >$@
103) 
104) %.d: %.c
105) 	$(CC) $(CFLAGS) $(DEFINES) $(INCLUDES) -M -o $@ $<
Stefan Schuermans v1.0.5

Stefan Schuermans authored 13 years ago

106) 	$(SED_I) 's!^$(basename $(notdir $<))!$(dir $<)&!' $@
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

107) 
108) %.o: %.c
109) 	$(CC) $(CFLAGS) $(DEFINES) $(INCLUDES) -c -o $@ $<
110) 
111) %: %.o $(LIBTGA) $(LIBTGSO)
112) 	$(CC) $(LDFLAGS) -o $@ $< $(LIBS)
113) 
114) lib:
115) 	mkdir -p lib
116) 
117) $(LIBTGA): $(OBJS) lib
118) 	$(AR) cr $@ $(filter-out lib,$+)
119) 	$(RANLIB) $@
120) 
121) $(LIBTGSOR): $(OBJS)
Stefan Schuermans v1.0.5

Stefan Schuermans authored 13 years ago

122) 	$(CC) $(SHLIBFLAGS) $(LDFLAGS) -o $@ $+
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

123) 
124) $(LIBTGSOM): $(LIBTGSOR)
125) 	rm -f $@
126) 	ln -s $(notdir $<) $@
127) 
128) $(LIBTGSO): $(LIBTGSOM)
129) 	rm -f $@
130) 	ln -s $(notdir $<) $@
131) 
132) clean:
Stefan Schuermans v1.0.1

Stefan Schuermans authored 13 years ago

133) 	rm -rf deps $(DEPS) $(OBJS) lib \
Stefan Schuermans v1.0.5

Stefan Schuermans authored 13 years ago

134) 	       $(EX_DEPS) $(EX_OBJS) $(EX_TARGETS)
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

135) 
136) pack:
137) 	$(MAKE) clean
Stefan Schuermans v1.0.5

Stefan Schuermans authored 13 years ago

138) 	$(SED_I) 's/!version: [0-9.]*!/!version: $(VERSION)!/g' $$(find $(PACKDATA) -type f)
139) 	$(SED_I) 's/!date: [0-9-]*!/!date: $(DATE)!/g' $$(find $(PACKDATA) -type f)
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

140) 	$(MAKE)
141) 	$(MAKE) clean
142) 	mkdir -p pack/$(PACKNAME)
143) 	cp -r $(PACKDATA) pack/$(PACKNAME)
Stefan Schuermans v1.0.5

Stefan Schuermans authored 13 years ago

144) 	cd pack; tar jcf $(PACKNAME).tar.bz2 $(PACKNAME)
145) 	rm -rf pack/$(PACKNAME)