e2a21a2a7d8bad7a082a53134837a15c1bea740d
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

1) # FlexiPix library
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

2) # !version: 1.0.6! !date: 2010-12-30!
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) 
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

19) LIBTARGET := libflexipix
20) VER_MAJ   := 1
21) VER_MIN   := 0
22) VER_REV   := 6
23) 
24) SRCS    := $(wildcard src/*.c)
25) EX_SRCS := $(wildcard examples/src/*.c)
26) 
27) VERSION  := $(VER_MAJ).$(VER_MIN).$(VER_REV)
28) DATE     := $(shell date +%Y-%m-%d)
29) PACKNAME := $(LIBTARGET)-$(VERSION)_$(DATE)
30) PACKDATA := ChangeLog COPYING COPYING.LESSER Makefile \
31)             examples include README src
32) 
33) CFLAGS     := -W -Wall -O3
34) DEFINES    := -DFLP_VER_MAJ=$(VER_MAJ) -DFLP_VER_MIN=$(VER_MIN) \
35)               -DFLP_VER_REV=$(VER_REV)
36) INCLUDES   := -Iinclude
37) SH_LDFLAGS :=
38) SH_LIBS    :=
39) EX_LDFLAGS := -Llib
40) EX_LIBS    := -lm -lflexipix
41) STOW_DIR   := /usr/local/stow
42) DEF_PREFIX := /usr/local
43) 
44) OS_RAW := $(shell uname -s)
45) ifeq ($(OS_RAW),Linux)
46)   OS         := linux
47)   CC         := gcc
48)   AR         := ar
49)   RANLIB     := ranlib
50)   LEXT       := so
51)   LEXTSUF    := .$(VERSION)
52)   BSUF       :=
53)   INSTALL    := install
54)   CFLAGS     += -fPIC
55)   SH_LDFLAGS += -shared -Wl,-soname,$(LIBTARGET).so.$(VER_MAJ)
56)   EX_LDFLAGS += -Wl,-rpath,\$$ORIGIN/../../lib
57)   EX_LIBS    += -lpthread
58) endif
59) 
60) ifeq ($(OS_RAW),Darwin)
61)   OS         := darwin
62)   CC         := gcc
63)   AR         := ar
64)   RANLIB     := ranlib
65)   LEXT       := dylib
66)   LEXTSUF    :=
67)   BSUF       :=
68)   INSTALL    := install
69)   CFLAGS     += -fPIC
70)   SH_LDFLAGS += -dynamiclib
71)   EX_LIBS    += -lpthread
72) endif
73) 
74) ifeq ($(patsubst MINGW32%,MINGW32,$(OS_RAW)),MINGW32)
75)   OS         := mingw32
76)   CC         := gcc
77)   AR         := ar
78)   RANLIB     := ranlib
79)   LEXT       := dll
80)   LEXTSUF    :=
81)   BSUF       := .exe
82)   INSTALL    := install
83)   DEFINES    += -DWINDOWS
84)   SH_LDFLAGS += -shared
85)   SH_LIBS    += -lwsock32
86)   EX_LIBS    += -lwsock32
87) endif
88) 
89) ifeq ($(OS),)
90)   $(error unsupported operating system $(OS_RAW))
Stefan Schuermans v1.0.5

Stefan Schuermans authored 13 years ago

91) endif
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

92) 
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

93) SRCS_BASE    := $(patsubst %.c,%,$(SRCS))
94) DEPS         := $(addsuffix .d,$(SRCS_BASE))
95) OBJS         := $(addsuffix .o,$(SRCS_BASE))
96) EX_SRCS_BASE := $(patsubst %.c,%,$(EX_SRCS))
97) EX_DEPS      := $(addsuffix .d,$(EX_SRCS_BASE))
98) EX_OBJS      := $(addsuffix .o,$(EX_SRCS_BASE))
99) EX_TARGETS   := $(addsuffix $(BSUF),$(EX_SRCS_BASE))
100) 
101) TARGET    := lib/$(LIBTARGET).a
102) SH_TARGET := lib/$(LIBTARGET).$(LEXT)$(LEXTSUF)
103) 
104) ENV_PREFIX := $(shell echo $$PREFIX)
105) STOW_PREFIX := $(STOW_DIR)/libflexipix-$(VERSION)
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

106) ifneq ($(ENV_PREFIX),)
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

107)   PREFIX := $(ENV_PREFIX)
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

108) else
109)   ifeq ($(shell if [ -d $(STOW_DIR) ]; then echo stow; fi),stow)
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

110)     PREFIX := $(STOW_PREFIX)
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

111)   else
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

112)     PREFIX := $(DEF_PREFIX)
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

113)   endif
114) endif
115) 
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

116) .PHONY: all clean install uninstall ver pack
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

117) .SECONDARY:
118) .SUFFIXES:
119) 
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

120) all: deps $(TARGET) $(SH_TARGET) $(EX_TARGETS)
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

121) 
122) ifneq ($(MAKECMDGOALS),clean)
123)   include deps
124) endif
125) 
126) deps: $(DEPS) $(EX_DEPS)
127) 	cat /dev/null $+ >$@
128) 
129) %.d: %.c
130) 	$(CC) $(CFLAGS) $(DEFINES) $(INCLUDES) -M -o $@ $<
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

131) 	sed 's!^$(basename $(notdir $<))!$(dir $<)&!' <$@ >$@.tmp
132) 	mv $@.tmp $@
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

133) 
134) %.o: %.c
135) 	$(CC) $(CFLAGS) $(DEFINES) $(INCLUDES) -c -o $@ $<
136) 
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

137) %$(BSUF): %.o $(LTA) $(LTSO)
138) 	$(CC) $(EX_LDFLAGS) -o $@ $< $(EX_LIBS)
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

139) 
140) lib:
141) 	mkdir -p lib
142) 
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

143) $(TARGET): $(OBJS) | lib
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

144) 	$(AR) cr $@ $(filter-out lib,$+)
145) 	$(RANLIB) $@
146) 
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

147) $(SH_TARGET): $(OBJS) | lib
148) 	$(CC) $(SH_LDFLAGS) -o $@ $+ $(SH_LIBS)
149) ifeq ($(OS),linux)
150) 	cd $(dir $@); \
151) 	  ln -s $(notdir $@) \
152) 	        $(patsubst %.$(VER_REV),%,$(notdir $@))
153) 	cd $(dir $@); \
154) 	  ln -s $(patsubst %.$(VER_REV),%,$(notdir $@)) \
155) 	        $(patsubst %.$(VER_MIN).$(VER_REV),%,$(notdir $@))
156) 	cd $(dir $@); \
157) 	  ln -s $(patsubst %.$(VER_MIN).(VER_REV),%,$(notdir $@)) \
158) 	        $(patsubst %.$(VER_MAJ).$(VER_MIN).$(VER_REV),%,$(notdir $@))
159) endif
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

160) 
161) clean:
Stefan Schuermans v1.0.1

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

164) 
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

165) install: all
166) 	$(INSTALL) -d $(PREFIX)/include/flexipix
167) 	$(INSTALL) -m 644 -t $(PREFIX)/include/flexipix $(wildcard include/flexipix/*.h)
168) 	$(INSTALL) -d $(PREFIX)/lib
169) 	$(INSTALL) -m 644 -t $(PREFIX)/lib $(TARGET) $(SH_TARGET)
170) ifeq ($(OS),linux)
171) 	ln -s $(LIBTARGET).$(LEXT).$(VER_MAJ).$(VER_MIN).$(VER_REV) \
172) 	   $(PREFIX)/lib/$(LIBTARGET).$(LEXT).$(VER_MAJ).$(VER_MIN)
173) 	ln -s $(LIBTARGET).$(LEXT).$(VER_MAJ).$(VER_MIN) \
174) 	   $(PREFIX)/lib/$(LIBTARGET).$(LEXT).$(VER_MAJ)
175) endif
176) 
177) uninstall:
178) 	rm -f $(PREFIX)/lib/$(notdir $(SH_TARGET))
179) 	rm -f $(PREFIX)/lib/$(notdir $(TARGET))
180) 	rm -rf $(PREFIX)/include/flexipix
181) 
182) ver:
183) 	$(MAKE) clean
184) 	for FILE in $$(find $(PACKDATA) -type f); \
185) 	do \
186) 	  <$$FILE sed 's/!version: [0-9.]*!/!version: $(VERSION)!/g' \
187) 	    | sed 's/!date: [0-9-]*!/!date: $(DATE)!/g' >$$FILE.tmp; \
188) 	  mv $$FILE.tmp $$FILE; \
189) 	done
190) 
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

191) pack:
192) 	$(MAKE) clean
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

193) 	$(MAKE) ver
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

194) 	$(MAKE)
195) 	$(MAKE) clean
196) 	mkdir -p pack/$(PACKNAME)
197) 	cp -r $(PACKDATA) pack/$(PACKNAME)
Stefan Schuermans v1.0.5

Stefan Schuermans authored 13 years ago

198) 	cd pack; tar jcf $(PACKNAME).tar.bz2 $(PACKNAME)
199) 	rm -rf pack/$(PACKNAME)