1c192a8ff90b3c43b763c808c276a33929d5d9d5
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

1) # FlexiPix library
2) #
Stefan Schuermans removed version information...

Stefan Schuermans authored 13 years ago

3) # Copyright 2010-2011 Stefan Schuermans <stefan schuermans info>
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

18) LIBTARGET := libflexipix
19) VER_MAJ   := 1
Stefan Schuermans set version to 1.1.0

Stefan Schuermans authored 8 years ago

20) VER_MIN   := 1
21) VER_REV   := 0
Stefan Schuermans repair build (lib symlinking)

Stefan Schuermans authored 13 years ago

22) VERSION   := $(VER_MAJ).$(VER_MIN).$(VER_REV)
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

23) 
24) SRCS    := $(wildcard src/*.c)
25) EX_SRCS := $(wildcard examples/src/*.c)
26) 
Stefan Schuermans enforce no warnings

Stefan Schuermans authored 8 years ago

27) CFLAGS     := -Wall -Wextra -Werror -O3
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

28) DEFINES    := -DFLP_VER_MAJ=$(VER_MAJ) -DFLP_VER_MIN=$(VER_MIN) \
29)               -DFLP_VER_REV=$(VER_REV)
30) INCLUDES   := -Iinclude
31) SH_LDFLAGS :=
32) SH_LIBS    :=
33) EX_LDFLAGS := -Llib
Stefan Schuermans enforce no warnings

Stefan Schuermans authored 8 years ago

34) EX_LIBS    := -lflexipix -lm
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

35) STOW_DIR   := /usr/local/stow
36) DEF_PREFIX := /usr/local
37) 
38) OS_RAW := $(shell uname -s)
39) ifeq ($(OS_RAW),Linux)
40)   OS         := linux
41)   CC         := gcc
42)   AR         := ar
43)   RANLIB     := ranlib
44)   LEXT       := so
45)   LEXTSUF    := .$(VERSION)
46)   BSUF       :=
47)   INSTALL    := install
48)   CFLAGS     += -fPIC
49)   SH_LDFLAGS += -shared -Wl,-soname,$(LIBTARGET).so.$(VER_MAJ)
50)   EX_LDFLAGS += -Wl,-rpath,\$$ORIGIN/../../lib
51)   EX_LIBS    += -lpthread
52) endif
53) 
54) ifeq ($(OS_RAW),Darwin)
55)   OS         := darwin
56)   CC         := gcc
57)   AR         := ar
58)   RANLIB     := ranlib
59)   LEXT       := dylib
60)   LEXTSUF    :=
61)   BSUF       :=
62)   INSTALL    := install
63)   CFLAGS     += -fPIC
64)   SH_LDFLAGS += -dynamiclib
65)   EX_LIBS    += -lpthread
66) endif
67) 
68) ifeq ($(patsubst MINGW32%,MINGW32,$(OS_RAW)),MINGW32)
69)   OS         := mingw32
70)   CC         := gcc
71)   AR         := ar
72)   RANLIB     := ranlib
73)   LEXT       := dll
74)   LEXTSUF    :=
75)   BSUF       := .exe
76)   INSTALL    := install
77)   DEFINES    += -DWINDOWS
78)   SH_LDFLAGS += -shared
79)   SH_LIBS    += -lwsock32
80)   EX_LIBS    += -lwsock32
81) endif
82) 
83) ifeq ($(OS),)
84)   $(error unsupported operating system $(OS_RAW))
Stefan Schuermans v1.0.5

Stefan Schuermans authored 13 years ago

85) endif
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

86) 
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

105)   else
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

107)   endif
108) endif
109) 
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

111) .SECONDARY:
112) .SUFFIXES:
113) 
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

115) 
116) ifneq ($(MAKECMDGOALS),clean)
117)   include deps
118) endif
119) 
120) deps: $(DEPS) $(EX_DEPS)
121) 	cat /dev/null $+ >$@
122) 
123) %.d: %.c
124) 	$(CC) $(CFLAGS) $(DEFINES) $(INCLUDES) -M -o $@ $<
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

127) 
128) %.o: %.c
129) 	$(CC) $(CFLAGS) $(DEFINES) $(INCLUDES) -c -o $@ $<
130) 
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

133) 
134) lib:
135) 	mkdir -p lib
136) 
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

138) 	$(AR) cr $@ $(filter-out lib,$+)
139) 	$(RANLIB) $@
140) 
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

141) $(SH_TARGET): $(OBJS) | lib
142) 	$(CC) $(SH_LDFLAGS) -o $@ $+ $(SH_LIBS)
143) ifeq ($(OS),linux)
144) 	cd $(dir $@); \
Stefan Schuermans fixed creation of symlinks...

Stefan Schuermans authored 13 years ago

145) 	  ln -sf $(notdir $@) \
146) 	         $(patsubst %.$(VER_REV),%,$(notdir $@))
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

147) 	cd $(dir $@); \
Stefan Schuermans fixed creation of symlinks...

Stefan Schuermans authored 13 years ago

148) 	  ln -sf $(patsubst %.$(VER_REV),%,$(notdir $@)) \
149) 	         $(patsubst %.$(VER_MIN).$(VER_REV),%,$(notdir $@))
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

150) 	cd $(dir $@); \
Stefan Schuermans fixed creation of symlinks...

Stefan Schuermans authored 13 years ago

151) 	  ln -sf $(patsubst %.$(VER_MIN).(VER_REV),%,$(notdir $@)) \
152) 	         $(patsubst %.$(VER_MAJ).$(VER_MIN).$(VER_REV),%,$(notdir $@))
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

153) endif
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

154) 
155) clean:
Stefan Schuermans v1.0.1

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

158) 
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

159) install: all
160) 	$(INSTALL) -d $(PREFIX)/include/flexipix
161) 	$(INSTALL) -m 644 -t $(PREFIX)/include/flexipix $(wildcard include/flexipix/*.h)
162) 	$(INSTALL) -d $(PREFIX)/lib
163) 	$(INSTALL) -m 644 -t $(PREFIX)/lib $(TARGET) $(SH_TARGET)
164) ifeq ($(OS),linux)
Stefan Schuermans fixed creation of symlinks...

Stefan Schuermans authored 13 years ago

165) 	ln -sf $(LIBTARGET).$(LEXT).$(VER_MAJ).$(VER_MIN).$(VER_REV) \
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

166) 	   $(PREFIX)/lib/$(LIBTARGET).$(LEXT).$(VER_MAJ).$(VER_MIN)
Stefan Schuermans fixed creation of symlinks...

Stefan Schuermans authored 13 years ago

167) 	ln -sf $(LIBTARGET).$(LEXT).$(VER_MAJ).$(VER_MIN) \