149 lines
4.9 KiB
Makefile
149 lines
4.9 KiB
Makefile
|
# oscpack makefile
|
||
|
|
||
|
# the source code should auto-detect endianess for most systems
|
||
|
# (see osc/OscHostEndianness.h)
|
||
|
# otherwise you need to explicitly set ENDIANESS below
|
||
|
# to either OSC_HOST_BIG_ENDIAN or OSC_HOST_LITTLE_ENDIAN
|
||
|
# Apple Mac OS X (PowerPC): OSC_HOST_BIG_ENDIAN
|
||
|
# Apple Mac OS X (Intel): OSC_HOST_LITTLE_ENDIAN
|
||
|
# Win32: OSC_HOST_LITTLE_ENDIAN
|
||
|
# i386 GNU/Linux: OSC_HOST_LITTLE_ENDIAN
|
||
|
|
||
|
ENDIANESS=OSC_DETECT_ENDIANESS #source code will detect using preprocessor
|
||
|
#ENDIANESS=OSC_HOST_LITTLE_ENDIAN
|
||
|
|
||
|
UNAME := $(shell uname)
|
||
|
|
||
|
CXX := g++
|
||
|
INCLUDES := -I.
|
||
|
COPTS := -Wall -Wextra -O3
|
||
|
CDEBUG := -Wall -Wextra -g
|
||
|
CXXFLAGS := $(COPTS) $(INCLUDES) -D$(ENDIANESS)
|
||
|
|
||
|
BINDIR := bin
|
||
|
PREFIX := /usr/local
|
||
|
INSTALL := install -c
|
||
|
|
||
|
#Name definitions
|
||
|
UNITTESTS := $(BINDIR)/OscUnitTests
|
||
|
SENDTESTS := $(BINDIR)/OscSendTests
|
||
|
RECEIVETEST := $(BINDIR)/OscReceiveTest
|
||
|
SIMPLESEND := $(BINDIR)/SimpleSend
|
||
|
SIMPLERECEIVE := $(BINDIR)/SimpleReceive
|
||
|
DUMP := $(BINDIR)/OscDump
|
||
|
|
||
|
INCLUDEDIR := oscpack
|
||
|
LIBNAME := liboscpack
|
||
|
LIBSONAME := $(LIBNAME).so
|
||
|
LIBFILENAME := $(LIBSONAME).1.1.0
|
||
|
|
||
|
# Common source groups
|
||
|
|
||
|
RECEIVESOURCES := osc/OscReceivedElements.cpp osc/OscPrintReceivedElements.cpp
|
||
|
SENDSOURCES := osc/OscOutboundPacketStream.cpp
|
||
|
NETSOURCES := ip/posix/UdpSocket.cpp ip/IpEndpointName.cpp ip/posix/NetworkingUtils.cpp
|
||
|
COMMONSOURCES := osc/OscTypes.cpp
|
||
|
|
||
|
RECEIVEOBJECTS := $(RECEIVESOURCES:.cpp=.o)
|
||
|
SENDOBJECTS := $(SENDSOURCES:.cpp=.o)
|
||
|
NETOBJECTS := $(NETSOURCES:.cpp=.o)
|
||
|
COMMONOBJECTS := $(COMMONSOURCES:.cpp=.o)
|
||
|
|
||
|
# Test source
|
||
|
|
||
|
UNITTESTSOURCES := tests/OscUnitTests.cpp
|
||
|
UNITTESTOBJECTS := $(UNITTESTSOURCES:.cpp=.o)
|
||
|
|
||
|
SENDTESTSSOURCES := tests/OscSendTests.cpp
|
||
|
SENDTESTSOBJECTS := $(SENDTESTSSOURCES:.cpp=.o)
|
||
|
|
||
|
RECEIVETESTSOURCES := tests/OscReceiveTest.cpp
|
||
|
RECEIVETESTOBJECTS := $(RECEIVETESTSOURCES:.cpp=.o)
|
||
|
|
||
|
# Example source
|
||
|
|
||
|
SIMPLESENDSOURCES := examples/SimpleSend.cpp
|
||
|
SIMPLESENDOBJECTS := $(SIMPLESENDSOURCES:.cpp=.o)
|
||
|
|
||
|
SIMPLERECEIVESOURCES := examples/SimpleReceive.cpp
|
||
|
SIMPLERECEIVEOBJECTS := $(SIMPLERECEIVESOURCES:.cpp=.o)
|
||
|
|
||
|
DUMPSOURCES := examples/OscDump.cpp
|
||
|
DUMPOBJECTS := $(DUMPSOURCES:.cpp=.o)
|
||
|
|
||
|
#Library objects
|
||
|
|
||
|
LIBOBJECTS := $(COMMONOBJECTS) $(SENDOBJECTS) $(RECEIVEOBJECTS) $(NETOBJECTS)
|
||
|
|
||
|
.PHONY: all unittests sendtests receivetest simplesend simplereceive dump library clean install install-local
|
||
|
|
||
|
all: unittests sendtests receivetest simplesend simplereceive dump
|
||
|
|
||
|
unittests : $(UNITTESTS)
|
||
|
sendtests: $(SENDTESTS)
|
||
|
receivetest : $(RECEIVETEST)
|
||
|
simplesend : $(SIMPLESEND)
|
||
|
simplereceive : $(SIMPLERECEIVE)
|
||
|
dump : $(DUMP)
|
||
|
|
||
|
# Build rule and common dependencies for all programs
|
||
|
# | specifies an order-only dependency so changes to bin dir modified date don't trigger recompile
|
||
|
$(UNITTESTS) $(SENDTESTS) $(RECEIVETEST) $(SIMPLESEND) $(SIMPLERECEIVE) $(DUMP) : $(COMMONOBJECTS) | $(BINDIR)
|
||
|
$(CXX) -o $@ $^
|
||
|
|
||
|
# Additional dependencies for each program (make accumulates dependencies from multiple declarations)
|
||
|
$(UNITTESTS) : $(UNITTESTOBJECTS) $(SENDOBJECTS) $(RECEIVEOBJECTS)
|
||
|
$(SENDTESTS) : $(SENDTESTSOBJECTS) $(SENDOBJECTS) $(NETOBJECTS)
|
||
|
$(RECEIVETEST) : $(RECEIVETESTOBJECTS) $(RECEIVEOBJECTS) $(NETOBJECTS)
|
||
|
$(SIMPLESEND) : $(SIMPLESENDOBJECTS) $(SENDOBJECTS) $(NETOBJECTS)
|
||
|
$(SIMPLERECEIVE) : $(SIMPLERECEIVEOBJECTS) $(RECEIVEOBJECTS) $(NETOBJECTS)
|
||
|
$(DUMP) : $(DUMPOBJECTS) $(RECEIVEOBJECTS) $(NETOBJECTS)
|
||
|
|
||
|
$(BINDIR):
|
||
|
mkdir $@
|
||
|
|
||
|
clean:
|
||
|
rm -rf $(BINDIR) $(UNITTESTOBJECTS) $(SENDTESTSOBJECTS) $(RECEIVETESTOBJECTS) $(DUMPOBJECTS) $(LIBOBJECTS) $(SIMPLESENDOBJECTS) $(SIMPLERECEIVEOBJECTS) $(LIBFILENAME) include lib oscpack &> /dev/null
|
||
|
|
||
|
$(LIBFILENAME): $(LIBOBJECTS)
|
||
|
ifeq ($(UNAME), Darwin)
|
||
|
#Mac OS X case
|
||
|
$(CXX) -dynamiclib -Wl,-install_name,$(LIBSONAME) -o $(LIBFILENAME) $(LIBOBJECTS) -lc
|
||
|
else
|
||
|
#GNU/Linux case
|
||
|
$(CXX) -shared -Wl,-soname,$(LIBSONAME) -o $(LIBFILENAME) $(LIBOBJECTS) -lc
|
||
|
endif
|
||
|
|
||
|
lib: $(LIBFILENAME)
|
||
|
|
||
|
#Installs the library on a system global location
|
||
|
install: $(LIBFILENAME)
|
||
|
@$(INSTALL) -m 755 $(LIBFILENAME) $(PREFIX)/lib/$(LIBFILENAME)
|
||
|
@ln -s -f $(PREFIX)/lib/$(LIBFILENAME) $(PREFIX)/lib/$(LIBSONAME)
|
||
|
@mkdir -p $(PREFIX)/include/oscpack/ip $(PREFIX)/include/oscpack/osc
|
||
|
@$(INSTALL) -m 644 ip/*.h $(PREFIX)/include/oscpack/ip
|
||
|
@$(INSTALL) -m 644 osc/*.h $(PREFIX)/include/oscpack/osc
|
||
|
@echo "SUCCESS! oscpack has been installed in $(PREFIX)/lib and $(PREFIX)/include/ospack/"
|
||
|
ifneq ($(UNAME), Darwin)
|
||
|
@echo "now doing ldconfig..."
|
||
|
@ldconfig
|
||
|
endif
|
||
|
|
||
|
#Installs the include/lib structure locally
|
||
|
install-local: $(LIBFILENAME)
|
||
|
@echo ""
|
||
|
@echo " Installing in local directory <$(INCLUDEDIR)>"
|
||
|
@echo " > Creating symbolic link"
|
||
|
@ln -s $(LIBFILENAME) $(LIBSONAME)
|
||
|
@echo " > Creating directories"
|
||
|
@mkdir -p oscpack/lib
|
||
|
@mkdir -p oscpack/include/ip
|
||
|
@mkdir -p oscpack/include/osc
|
||
|
@echo " > Copying files"
|
||
|
@mv $(LIBFILENAME) $(LIBSONAME) oscpack/lib
|
||
|
@cp ip/*.h oscpack/include/ip
|
||
|
@cp osc/*.h oscpack/include/osc
|
||
|
@echo ""
|
||
|
@echo " > Success!"
|
||
|
|