7d31e7efef2eee6fa4f5f78ab47154e95db5349f
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) 
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)
Stefan Schuermans rename "FlexiPix" to "Ether...

Stefan Schuermans authored 7 years ago

99) STOW_PREFIX := $(STOW_DIR)/libetherpix-$(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 fix dependencies

Stefan Schuermans authored 7 years ago

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

Stefan Schuermans authored 13 years ago

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
Stefan Schuermans rename "FlexiPix" to "Ether...

Stefan Schuermans authored 7 years ago

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

Stefan Schuermans authored 13 years ago

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) \
Stefan Schuermans v1.0.6

Stefan Schuermans authored 13 years ago

168) 	   $(PREFIX)/lib/$(LIBTARGET).$(LEXT).$(VER_MAJ)
169) endif
170) 
171) uninstall:
172) 	rm -f $(PREFIX)/lib/$(notdir $(SH_TARGET))
173) 	rm -f $(PREFIX)/lib/$(notdir $(TARGET))
Stefan Schuermans rename "FlexiPix" to "Ether...

Stefan Schuermans authored 7 years ago

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