aa3270aa371083e5c3c065a58b1551bfea58b4db
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
20) VER_MIN   := 0
Stefan Schuermans removed version information...

Stefan Schuermans authored 13 years ago

21) VER_REV   := 7
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

84) endif
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

85) 
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

104)   else
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

140) $(SH_TARGET): $(OBJS) | lib
141) 	$(CC) $(SH_LDFLAGS) -o $@ $+ $(SH_LIBS)
142) ifeq ($(OS),linux)
143) 	cd $(dir $@); \
144) 	  ln -s $(notdir $@) \
145) 	        $(patsubst %.$(VER_REV),%,$(notdir $@))
146) 	cd $(dir $@); \
147) 	  ln -s $(patsubst %.$(VER_REV),%,$(notdir $@)) \
148) 	        $(patsubst %.$(VER_MIN).$(VER_REV),%,$(notdir $@))
149) 	cd $(dir $@); \
150) 	  ln -s $(patsubst %.$(VER_MIN).(VER_REV),%,$(notdir $@)) \
151) 	        $(patsubst %.$(VER_MAJ).$(VER_MIN).$(VER_REV),%,$(notdir $@))
152) endif
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

153) 
154) clean:
Stefan Schuermans v1.0.1

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

157)