eda67e908e1f1a44e68c56cefdfc99076bb65811
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 8 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 improve deps

Stefan Schuermans authored 7 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)
Stefan Schuermans improve deps

Stefan Schuermans authored 7 years ago

132)   -include $(DEPS)
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

133) endif
134) 
135) %.d: %.c
Stefan Schuermans improve deps

Stefan Schuermans authored 7 years ago

136) 	$(CC) $(CFLAGS) $(DEFINES) $(INCLUDES) -MM -MF $@ -MT $(@:.d=.o) $<
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

137) 
138) %.o: %.c
139) 	$(CC) $(CFLAGS) $(DEFINES) $(INCLUDES) -c -o $@ $<
140) 
Stefan Schuermans fix dependencies

Stefan Schuermans authored 7 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

143) 
144) lib:
145) 	mkdir -p lib
146) 
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

148) 	$(AR) cr $@ $(filter-out lib,$+)
149) 	$(RANLIB) $@
150) 
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

151) $(SH_TARGET): $(OBJS) | lib
152) 	$(CC) $(SH_LDFLAGS) -o $@ $+ $(SH_LIBS)
153) ifeq ($(OS),linux)
154) 	cd $(dir $@); \
Stefan Schuermans fixed creation of symlinks...

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

163) endif
Stefan Schuermans v1.0.0

Stefan Schuermans authored 13 years ago

164) 
165) clean:
Stefan Schuermans improve deps

Stefan Schuermans authored 7 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

168) 
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 7 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

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

Stefan Schuermans authored 13 years ago

178) 	   $(PREFIX)/lib/$(LIBTARGET).$(LEXT).$(VER_MAJ)
179) endif
180) 
181) uninstall:
182) 	rm -f $(PREFIX)/lib/$(notdir $(SH_TARGET))
183) 	rm -f $(PREFIX)/lib/$(notdir $(TARGET))
Stefan Schuermans rename "FlexiPix" to "Ether...

Stefan Schuermans authored 7 years ago

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