9b23234e901ea9b2d34afd288bd50448b46c2b6a
Stefan Schuermans rename "FlexiPix" to "Ether...

Stefan Schuermans authored 7 years ago

1) # EtherPix library
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

2) #
Stefan Schuermans update copyright year

Stefan Schuermans authored 7 years ago

3) # Copyright 2010-2017 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 rename "FlexiPix" to "Ether...

Stefan Schuermans authored 7 years ago

18) LIBTARGET := libetherpix
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

19) VER_MAJ   := 1
Stefan Schuermans support multiple addresses...

Stefan Schuermans authored 7 years ago

20) VER_MIN   := 2
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 7 years ago

27) CFLAGS     := -Wall -Wextra -Werror -O3
Stefan Schuermans rename "FlexiPix" to "Ether...

Stefan Schuermans authored 7 years ago

28) DEFINES    := -DETP_VER_MAJ=$(VER_MAJ) -DETP_VER_MIN=$(VER_MIN) \
29)               -DETP_VER_REV=$(VER_REV)
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

30) INCLUDES   := -Iinclude
31) SH_LDFLAGS :=
32) SH_LIBS    :=
33) EX_LDFLAGS := -Llib
Stefan Schuermans rename "FlexiPix" to "Ether...

Stefan Schuermans authored 7 years ago

34) EX_LIBS    := -letherpix -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) 
Stefan Schuermans update Windows support

Stefan Schuermans authored 7 years ago

83) ifeq ($(CROSS_WIN),1)
84)   OS         := mingw32
85)   CC         := x86_64-w64-mingw32-gcc
86)   AR         := ar
87)   RANLIB     := ranlib
88)   LEXT       := dll
89)   LEXTSUF    :=
90)   BSUF       := .exe
91)   INSTALL    := install
92)   DEFINES    += -DWINDOWS
93)   SH_LDFLAGS += -shared
94)   SH_LIBS    += -lwsock32
95)   EX_LIBS    += -lwsock32
96) endif
97) 
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

98) ifeq ($(OS),)
99)   $(error unsupported operating system $(OS_RAW))
Stefan Schuermans v1.0.5

Stefan Schuermans authored 13 years ago

100) endif
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

101) 
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

102) SRCS_BASE    := $(patsubst %.c,%,$(SRCS))
103) DEPS         := $(addsuffix .d,$(SRCS_BASE))
104) OBJS         := $(addsuffix .o,$(SRCS_BASE))
105) EX_SRCS_BASE := $(patsubst %.c,%,$(EX_SRCS))
106) EX_DEPS      := $(addsuffix .d,$(EX_SRCS_BASE))
107) EX_OBJS      := $(addsuffix .o,$(EX_SRCS_BASE))
108) EX_TARGETS   := $(addsuffix $(BSUF),$(EX_SRCS_BASE))
109) 
110) TARGET    := lib/$(LIBTARGET).a
111) SH_TARGET := lib/$(LIBTARGET).$(LEXT)$(LEXTSUF)
112) 
113) ENV_PREFIX := $(shell echo $$PREFIX)
Stefan Schuermans rename "FlexiPix" to "Ether...

Stefan Schuermans authored 7 years ago

114) STOW_PREFIX := $(STOW_DIR)/libetherpix-$(VERSION)
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

120)   else
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

122)   endif
123) endif
124) 
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

126) .SECONDARY:
127) .SUFFIXES:
128) 
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

130) 
131) ifneq ($(MAKECMDGOALS),clean)
132)   include deps
133) endif
134) 
135) deps: $(DEPS) $(EX_DEPS)
136) 	cat /dev/null $+ >$@
137) 
138) %.d: %.c
139) 	$(CC) $(CFLAGS) $(DEFINES) $(INCLUDES) -M -o $@ $<
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

142) 
143) %.o: %.c
144) 	$(CC) $(CFLAGS) $(DEFINES) $(INCLUDES) -c -o $@ $<
145) 
Stefan Schuermans fix dependencies

Stefan Schuermans authored 7 years ago

146) %$(BSUF): %.o $(TARGET) $(SH_TARGET)
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

147) 	$(CC) $(EX_LDFLAGS) -o $@ $< $(EX_LIBS)
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

148) 
149) lib:
150) 	mkdir -p lib
151) 
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

153) 	$(AR) cr $@ $(filter-out lib,$+)
154) 	$(RANLIB) $@
155) 
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

156) $(SH_TARGET): $(OBJS) | lib
157) 	$(CC) $(SH_LDFLAGS) -o $@ $+ $(SH_LIBS)
158) ifeq ($(OS),linux)
159) 	cd $(dir $@); \
Stefan Schuermans fixed creation of symlinks...

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 13 years ago

168) endif
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

169) 
170) clean:
Stefan Schuermans v1.0.1

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

173) 
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

174) install: all
Stefan Schuermans rename "FlexiPix" to "Ether...

Stefan Schuermans authored 7 years ago

175) 	$(INSTALL) -d $(PREFIX)/include/etherpix
176) 	$(INSTALL) -m 644 -t $(PREFIX)/include/etherpix $(wildcard include/etherpix/*.h)
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

177) 	$(INSTALL) -d $(PREFIX)/lib
178) 	$(INSTALL) -m 644 -t $(PREFIX)/lib $(TARGET) $(SH_TARGET)
179) ifeq ($(OS),linux)
Stefan Schuermans fixed creation of symlinks...

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 13 years ago

183) 	   $(PREFIX)/lib/$(LIBTARGET).$(LEXT).$(VER_MAJ)
184) endif
185) 
186) uninstall:
187) 	rm -f $(PREFIX)/lib/$(notdir $(SH_TARGET))
188) 	rm -f $(PREFIX)/lib/$(notdir $(TARGET))
Stefan Schuermans rename "FlexiPix" to "Ether...

Stefan Schuermans authored 7 years ago

189) 	rm -rf $(PREFIX)/include/etherpix