rob@76
|
1 # oscpack makefile
|
rob@76
|
2
|
rob@76
|
3 # the source code should auto-detect endianess for most systems
|
rob@76
|
4 # (see osc/OscHostEndianness.h)
|
rob@76
|
5 # otherwise you need to explicitly set ENDIANESS below
|
rob@76
|
6 # to either OSC_HOST_BIG_ENDIAN or OSC_HOST_LITTLE_ENDIAN
|
rob@76
|
7 # Apple Mac OS X (PowerPC): OSC_HOST_BIG_ENDIAN
|
rob@76
|
8 # Apple Mac OS X (Intel): OSC_HOST_LITTLE_ENDIAN
|
rob@76
|
9 # Win32: OSC_HOST_LITTLE_ENDIAN
|
rob@76
|
10 # i386 GNU/Linux: OSC_HOST_LITTLE_ENDIAN
|
rob@76
|
11
|
rob@76
|
12 ENDIANESS=OSC_DETECT_ENDIANESS #source code will detect using preprocessor
|
rob@76
|
13 #ENDIANESS=OSC_HOST_LITTLE_ENDIAN
|
rob@76
|
14
|
rob@76
|
15 UNAME := $(shell uname)
|
rob@76
|
16
|
rob@76
|
17 CXX := g++
|
rob@76
|
18 INCLUDES := -I.
|
rob@76
|
19 COPTS := -Wall -Wextra -O3
|
rob@76
|
20 CDEBUG := -Wall -Wextra -g
|
rob@76
|
21 CXXFLAGS := $(COPTS) $(INCLUDES) -D$(ENDIANESS)
|
rob@76
|
22
|
rob@76
|
23 BINDIR := bin
|
rob@76
|
24 PREFIX := /usr/local
|
rob@76
|
25 INSTALL := install -c
|
rob@76
|
26
|
rob@76
|
27 #Name definitions
|
rob@76
|
28 UNITTESTS := $(BINDIR)/OscUnitTests
|
rob@76
|
29 SENDTESTS := $(BINDIR)/OscSendTests
|
rob@76
|
30 RECEIVETEST := $(BINDIR)/OscReceiveTest
|
rob@76
|
31 SIMPLESEND := $(BINDIR)/SimpleSend
|
rob@76
|
32 SIMPLERECEIVE := $(BINDIR)/SimpleReceive
|
rob@76
|
33 DUMP := $(BINDIR)/OscDump
|
rob@76
|
34
|
rob@76
|
35 INCLUDEDIR := oscpack
|
rob@76
|
36 LIBNAME := liboscpack
|
rob@76
|
37 LIBSONAME := $(LIBNAME).so
|
rob@76
|
38 LIBFILENAME := $(LIBSONAME).1.1.0
|
rob@76
|
39
|
rob@76
|
40 # Common source groups
|
rob@76
|
41
|
rob@76
|
42 RECEIVESOURCES := osc/OscReceivedElements.cpp osc/OscPrintReceivedElements.cpp
|
rob@76
|
43 SENDSOURCES := osc/OscOutboundPacketStream.cpp
|
rob@76
|
44 NETSOURCES := ip/posix/UdpSocket.cpp ip/IpEndpointName.cpp ip/posix/NetworkingUtils.cpp
|
rob@76
|
45 COMMONSOURCES := osc/OscTypes.cpp
|
rob@76
|
46
|
rob@76
|
47 RECEIVEOBJECTS := $(RECEIVESOURCES:.cpp=.o)
|
rob@76
|
48 SENDOBJECTS := $(SENDSOURCES:.cpp=.o)
|
rob@76
|
49 NETOBJECTS := $(NETSOURCES:.cpp=.o)
|
rob@76
|
50 COMMONOBJECTS := $(COMMONSOURCES:.cpp=.o)
|
rob@76
|
51
|
rob@76
|
52 # Test source
|
rob@76
|
53
|
rob@76
|
54 UNITTESTSOURCES := tests/OscUnitTests.cpp
|
rob@76
|
55 UNITTESTOBJECTS := $(UNITTESTSOURCES:.cpp=.o)
|
rob@76
|
56
|
rob@76
|
57 SENDTESTSSOURCES := tests/OscSendTests.cpp
|
rob@76
|
58 SENDTESTSOBJECTS := $(SENDTESTSSOURCES:.cpp=.o)
|
rob@76
|
59
|
rob@76
|
60 RECEIVETESTSOURCES := tests/OscReceiveTest.cpp
|
rob@76
|
61 RECEIVETESTOBJECTS := $(RECEIVETESTSOURCES:.cpp=.o)
|
rob@76
|
62
|
rob@76
|
63 # Example source
|
rob@76
|
64
|
rob@76
|
65 SIMPLESENDSOURCES := examples/SimpleSend.cpp
|
rob@76
|
66 SIMPLESENDOBJECTS := $(SIMPLESENDSOURCES:.cpp=.o)
|
rob@76
|
67
|
rob@76
|
68 SIMPLERECEIVESOURCES := examples/SimpleReceive.cpp
|
rob@76
|
69 SIMPLERECEIVEOBJECTS := $(SIMPLERECEIVESOURCES:.cpp=.o)
|
rob@76
|
70
|
rob@76
|
71 DUMPSOURCES := examples/OscDump.cpp
|
rob@76
|
72 DUMPOBJECTS := $(DUMPSOURCES:.cpp=.o)
|
rob@76
|
73
|
rob@76
|
74 #Library objects
|
rob@76
|
75
|
rob@76
|
76 LIBOBJECTS := $(COMMONOBJECTS) $(SENDOBJECTS) $(RECEIVEOBJECTS) $(NETOBJECTS)
|
rob@76
|
77
|
rob@76
|
78 .PHONY: all unittests sendtests receivetest simplesend simplereceive dump library clean install install-local
|
rob@76
|
79
|
rob@76
|
80 all: unittests sendtests receivetest simplesend simplereceive dump
|
rob@76
|
81
|
rob@76
|
82 unittests : $(UNITTESTS)
|
rob@76
|
83 sendtests: $(SENDTESTS)
|
rob@76
|
84 receivetest : $(RECEIVETEST)
|
rob@76
|
85 simplesend : $(SIMPLESEND)
|
rob@76
|
86 simplereceive : $(SIMPLERECEIVE)
|
rob@76
|
87 dump : $(DUMP)
|
rob@76
|
88
|
rob@76
|
89 # Build rule and common dependencies for all programs
|
rob@76
|
90 # | specifies an order-only dependency so changes to bin dir modified date don't trigger recompile
|
rob@76
|
91 $(UNITTESTS) $(SENDTESTS) $(RECEIVETEST) $(SIMPLESEND) $(SIMPLERECEIVE) $(DUMP) : $(COMMONOBJECTS) | $(BINDIR)
|
rob@76
|
92 $(CXX) -o $@ $^
|
rob@76
|
93
|
rob@76
|
94 # Additional dependencies for each program (make accumulates dependencies from multiple declarations)
|
rob@76
|
95 $(UNITTESTS) : $(UNITTESTOBJECTS) $(SENDOBJECTS) $(RECEIVEOBJECTS)
|
rob@76
|
96 $(SENDTESTS) : $(SENDTESTSOBJECTS) $(SENDOBJECTS) $(NETOBJECTS)
|
rob@76
|
97 $(RECEIVETEST) : $(RECEIVETESTOBJECTS) $(RECEIVEOBJECTS) $(NETOBJECTS)
|
rob@76
|
98 $(SIMPLESEND) : $(SIMPLESENDOBJECTS) $(SENDOBJECTS) $(NETOBJECTS)
|
rob@76
|
99 $(SIMPLERECEIVE) : $(SIMPLERECEIVEOBJECTS) $(RECEIVEOBJECTS) $(NETOBJECTS)
|
rob@76
|
100 $(DUMP) : $(DUMPOBJECTS) $(RECEIVEOBJECTS) $(NETOBJECTS)
|
rob@76
|
101
|
rob@76
|
102 $(BINDIR):
|
rob@76
|
103 mkdir $@
|
rob@76
|
104
|
rob@76
|
105 clean:
|
rob@76
|
106 rm -rf $(BINDIR) $(UNITTESTOBJECTS) $(SENDTESTSOBJECTS) $(RECEIVETESTOBJECTS) $(DUMPOBJECTS) $(LIBOBJECTS) $(SIMPLESENDOBJECTS) $(SIMPLERECEIVEOBJECTS) $(LIBFILENAME) include lib oscpack &> /dev/null
|
rob@76
|
107
|
rob@76
|
108 $(LIBFILENAME): $(LIBOBJECTS)
|
rob@76
|
109 ifeq ($(UNAME), Darwin)
|
rob@76
|
110 #Mac OS X case
|
rob@76
|
111 $(CXX) -dynamiclib -Wl,-install_name,$(LIBSONAME) -o $(LIBFILENAME) $(LIBOBJECTS) -lc
|
rob@76
|
112 else
|
rob@76
|
113 #GNU/Linux case
|
rob@76
|
114 $(CXX) -shared -Wl,-soname,$(LIBSONAME) -o $(LIBFILENAME) $(LIBOBJECTS) -lc
|
rob@76
|
115 endif
|
rob@76
|
116
|
rob@76
|
117 lib: $(LIBFILENAME)
|
rob@76
|
118
|
rob@76
|
119 #Installs the library on a system global location
|
rob@76
|
120 install: $(LIBFILENAME)
|
rob@76
|
121 @$(INSTALL) -m 755 $(LIBFILENAME) $(PREFIX)/lib/$(LIBFILENAME)
|
rob@76
|
122 @ln -s -f $(PREFIX)/lib/$(LIBFILENAME) $(PREFIX)/lib/$(LIBSONAME)
|
rob@76
|
123 @mkdir -p $(PREFIX)/include/oscpack/ip $(PREFIX)/include/oscpack/osc
|
rob@76
|
124 @$(INSTALL) -m 644 ip/*.h $(PREFIX)/include/oscpack/ip
|
rob@76
|
125 @$(INSTALL) -m 644 osc/*.h $(PREFIX)/include/oscpack/osc
|
rob@76
|
126 @echo "SUCCESS! oscpack has been installed in $(PREFIX)/lib and $(PREFIX)/include/ospack/"
|
rob@76
|
127 ifneq ($(UNAME), Darwin)
|
rob@76
|
128 @echo "now doing ldconfig..."
|
rob@76
|
129 @ldconfig
|
rob@76
|
130 endif
|
rob@76
|
131
|
rob@76
|
132 #Installs the include/lib structure locally
|
rob@76
|
133 install-local: $(LIBFILENAME)
|
rob@76
|
134 @echo ""
|
rob@76
|
135 @echo " Installing in local directory <$(INCLUDEDIR)>"
|
rob@76
|
136 @echo " > Creating symbolic link"
|
rob@76
|
137 @ln -s $(LIBFILENAME) $(LIBSONAME)
|
rob@76
|
138 @echo " > Creating directories"
|
rob@76
|
139 @mkdir -p oscpack/lib
|
rob@76
|
140 @mkdir -p oscpack/include/ip
|
rob@76
|
141 @mkdir -p oscpack/include/osc
|
rob@76
|
142 @echo " > Copying files"
|
rob@76
|
143 @mv $(LIBFILENAME) $(LIBSONAME) oscpack/lib
|
rob@76
|
144 @cp ip/*.h oscpack/include/ip
|
rob@76
|
145 @cp osc/*.h oscpack/include/osc
|
rob@76
|
146 @echo ""
|
rob@76
|
147 @echo " > Success!"
|
rob@76
|
148
|