annotate Makefile @ 151:e9c9404e3d1f ClockSync

Pff partially working. No PID. When setting the audio clock on the bbb to 44098 the master and slave clock keep diverging instead of converging ...
author Giulio Moro <giuliomoro@yahoo.it>
date Tue, 22 Sep 2015 04:10:07 +0100
parents 39962292dfb4
children 5bcf04234f80
rev   line source
giuliomoro@64 1 # BeagleRT
giuliomoro@64 2 # Low-latency, real-time audio and sensor processing on BeagleBone Black
giuliomoro@64 3 # (c) 2015 Andrew McPherson, Victor Zappi, Giulio Moro
giuliomoro@64 4 # Centre for Digital Music, Queen Mary University of London
giuliomoro@64 5
giuliomoro@64 6 # This Makefile is intended for use on the BeagleBone Black itself
giuliomoro@64 7 # and not for cross-compiling
giuliomoro@64 8
giuliomoro@64 9 RM := rm -rf
giuliomoro@64 10 STATIC_LIBS := ./libprussdrv.a ./libNE10.a
giuliomoro@64 11 LIBS := -lrt -lnative -lxenomai
giuliomoro@64 12
andrewm@68 13 INCLUDES := -I/usr/include/ne10 -I/usr/xenomai/include -I/usr/arm-linux-gnueabihf/include/xenomai/include -I/usr/arm-linux-gnueabihf/include/ne10
andrewm@68 14
andrewm@68 15
giuliomoro@64 16 ASM_SRCS := $(wildcard source/*.S)
giuliomoro@64 17 ASM_OBJS := $(addprefix build/source/,$(notdir $(ASM_SRCS:.S=.o)))
giuliomoro@64 18 ASM_DEPS := $(addprefix build/source/,$(notdir $(ASM_SRCS:.S=.d)))
giuliomoro@64 19
giuliomoro@64 20 C_SRCS := $(wildcard source/*.c)
giuliomoro@64 21 C_OBJS := $(addprefix build/source/,$(notdir $(C_SRCS:.c=.o)))
giuliomoro@64 22 C_DEPS := $(addprefix build/source/,$(notdir $(C_SRCS:.c=.d)))
giuliomoro@64 23
giuliomoro@64 24 CPP_SRCS := $(wildcard source/*.cpp)
giuliomoro@64 25 CPP_OBJS := $(addprefix build/source/,$(notdir $(CPP_SRCS:.cpp=.o)))
giuliomoro@64 26 CPP_DEPS := $(addprefix build/source/,$(notdir $(CPP_SRCS:.cpp=.d)))
giuliomoro@64 27
giuliomoro@64 28 # Core BeagleRT sources
giuliomoro@64 29 CORE_CPP_SRCS := \
giuliomoro@64 30 ./core/GPIOcontrol.cpp \
giuliomoro@64 31 ./core/I2c_Codec.cpp \
giuliomoro@64 32 ./core/PRU.cpp \
giuliomoro@64 33 ./core/RTAudio.cpp \
giuliomoro@64 34 ./core/RTAudioCommandLine.cpp \
giuliomoro@64 35 ./core/Utilities.cpp \
giuliomoro@105 36 ./core/UdpClient.cpp
giuliomoro@64 37
giuliomoro@64 38 CORE_OBJS := \
giuliomoro@64 39 ./build/core/GPIOcontrol.o \
giuliomoro@64 40 ./build/core/I2c_Codec.o \
giuliomoro@64 41 ./build/core/PRU.o \
giuliomoro@64 42 ./build/core/RTAudio.o \
giuliomoro@64 43 ./build/core/RTAudioCommandLine.o \
giuliomoro@64 44 ./build/core/Utilities.o \
giuliomoro@105 45 ./build/core/UdpClient.o
giuliomoro@64 46
giuliomoro@64 47 CORE_CPP_DEPS := \
giuliomoro@64 48 ./build/core/GPIOcontrol.d \
giuliomoro@64 49 ./build/core/I2c_Codec.d \
giuliomoro@64 50 ./build/core/PRU.d \
giuliomoro@64 51 ./build/core/RTAudio.d \
giuliomoro@64 52 ./build/core/RTAudioCommandLine.d \
giuliomoro@64 53 ./build/core/Utilities.d \
giuliomoro@105 54 ./build/core/UdpClient.d
giuliomoro@64 55
giuliomoro@64 56 # Objects for a system-supplied default main() file, if the user
giuliomoro@64 57 # only wants to provide the render functions.
giuliomoro@64 58 DEFAULT_MAIN_CPP_SRCS := ./core/default_main.cpp
giuliomoro@64 59 DEFAULT_MAIN_OBJS := ./build/core/default_main.o
giuliomoro@64 60 DEFAULT_MAIN_CPP_DEPS := ./build/core/default_main.d
andrewm@68 61
giuliomoro@64 62 # All = build BeagleRT
andrewm@69 63 all: SYNTAX_FLAG :=
giuliomoro@64 64 all: BeagleRT
andrewm@68 65
andrewm@69 66 # syntax = check syntax
andrewm@69 67 syntax: SYNTAX_FLAG := -fsyntax-only
andrewm@69 68 syntax: BeagleRT
andrewm@69 69
giuliomoro@64 70 # Rule for BeagleRT core C++ files
giuliomoro@64 71 build/core/%.o: ./core/%.cpp
giuliomoro@64 72 @echo 'Building file: $<'
giuliomoro@64 73 @echo 'Invoking: GCC C++ Compiler'
andrewm@69 74 g++ $(SYNTAX_FLAG) $(INCLUDES) -O2 -Wall -c -fmessage-length=0 -U_FORTIFY_SOURCE -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
giuliomoro@64 75 @echo 'Finished building: $<'
giuliomoro@64 76 @echo ' '
andrewm@68 77
giuliomoro@64 78 # Rule for user-supplied C++ files
giuliomoro@64 79 build/source/%.o: ./source/%.cpp
giuliomoro@64 80 @echo 'Building file: $<'
giuliomoro@64 81 @echo 'Invoking: GCC C++ Compiler'
andrewm@69 82 g++ $(SYNTAX_FLAG) -I./include $(INCLUDES) -O2 -Wall -c -fmessage-length=0 -U_FORTIFY_SOURCE -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
giuliomoro@64 83 @echo 'Finished building: $<'
giuliomoro@64 84 @echo ' '
andrewm@68 85
giuliomoro@64 86 # Rule for user-supplied C files
giuliomoro@64 87 build/source/%.o: ./source/%.c
giuliomoro@64 88 @echo 'Building file: $<'
giuliomoro@64 89 @echo 'Invoking: GCC C Compiler'
andrewm@69 90 gcc $(SYNTAX_FLAG) -I./include $(INCLUDES) -O2 -Wall -c -fmessage-length=0 -U_FORTIFY_SOURCE -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
giuliomoro@64 91 @echo 'Finished building: $<'
giuliomoro@64 92 @echo ' '
andrewm@68 93
giuliomoro@64 94 # Rule for user-supplied assembly files
giuliomoro@64 95 build/source/%.o: ./source/%.S
giuliomoro@64 96 @echo 'Building file: $<'
giuliomoro@64 97 @echo 'Invoking: GCC Assembler'
giuliomoro@64 98 as -o "$@" "$<"
giuliomoro@64 99 @echo 'Finished building: $<'
giuliomoro@64 100 @echo ' '
giuliomoro@64 101
giuliomoro@64 102 # This is a nasty kludge: we want to be able to optionally link in a default
giuliomoro@64 103 # main file if the user hasn't supplied one. We check for the presence of the main()
giuliomoro@64 104 # function, and conditionally call one of two recursive make targets depending on whether
giuliomoro@64 105 # we want to link in the default main file or not. The kludge is the mess of a shell script
giuliomoro@64 106 # line below. Surely there's a better way to do this?
giuliomoro@64 107 BeagleRT: $(CORE_OBJS) $(ASM_OBJS) $(C_OBJS) $(CPP_OBJS) $(STATIC_LIBS)
giuliomoro@64 108 $(eval NEXT_TARGET := $(shell bash -c 'if [ `nm build/source/*.o | grep -w T | grep -w main | wc -l` == '0' ]; then echo "BeagleRT_with_main"; else echo "BeagleRT_without_main"; fi'))
giuliomoro@64 109 $(MAKE) $(NEXT_TARGET)
giuliomoro@64 110 @echo 'Finished building target: $@'
giuliomoro@64 111 @echo ' '
giuliomoro@64 112 # $(MAKE) --no-print-directory post-build
andrewm@68 113
giuliomoro@64 114 # Rule for building BeagleRT including the default main file (no user-supplied main())
giuliomoro@64 115 BeagleRT_with_main: $(CORE_OBJS) $(DEFAULT_MAIN_OBJS) $(ASM_OBJS) $(C_OBJS) $(CPP_OBJS) $(STATIC_LIBS)
giuliomoro@64 116 @echo 'Building target: $@'
giuliomoro@64 117 @echo 'Invoking: GCC C++ Linker'
andrewm@69 118 g++ $(SYNTAX_FLAG) -L/usr/xenomai/lib -L/usr/arm-linux-gnueabihf/lib -L/usr/arm-linux-gnueabihf/lib/xenomai -L/usr/lib/arm-linux-gnueabihf -pthread -Wpointer-arith -o "BeagleRT" $(CORE_OBJS) $(DEFAULT_MAIN_OBJS) $(ASM_OBJS) $(C_OBJS) $(CPP_OBJS) $(STATIC_LIBS) $(LIBS)
giuliomoro@64 119
giuliomoro@64 120 # Rule for building BeagleRT without the default main file (user-supplied main())
giuliomoro@64 121 BeagleRT_without_main: $(CORE_OBJS) $(ASM_OBJS) $(C_OBJS) $(CPP_OBJS) $(STATIC_LIBS)
giuliomoro@64 122 @echo 'Building target: $@'
giuliomoro@64 123 @echo 'Invoking: GCC C++ Linker'
andrewm@69 124 g++ $(SYNTAX_FLAG) -L/usr/xenomai/lib -L/usr/arm-linux-gnueabihf/lib -L/usr/arm-linux-gnueabihf/lib/xenomai -L/usr/lib/arm-linux-gnueabihf -pthread -Wpointer-arith -o "BeagleRT" $(CORE_OBJS) $(ASM_OBJS) $(C_OBJS) $(CPP_OBJS) $(STATIC_LIBS) $(LIBS)
giuliomoro@64 125
giuliomoro@64 126 # Other Targets:
giuliomoro@64 127
giuliomoro@64 128 # Remove the temporary user-supplied source, plus the objects built from them
giuliomoro@64 129 sourceclean:
giuliomoro@64 130 -$(RM) source/* build/source/* BeagleRT
giuliomoro@64 131 -@echo ' '
giuliomoro@64 132
giuliomoro@64 133 # Remove all the built objects, including the core BeagleRT objects
giuliomoro@64 134 distclean:
giuliomoro@64 135 -$(RM) build/source/* $(CORE_OBJS) $(CORE_CPP_DEPS) $(DEFAULT_MAIN_OBJS) $(DEFAULT_MAIN_CPP_DEPS) BeagleRT
giuliomoro@64 136 -@echo ' '
giuliomoro@64 137
giuliomoro@64 138 # Remove only the user-generated objects
giuliomoro@64 139 clean:
giuliomoro@64 140 -$(RM) build/source/* BeagleRT
giuliomoro@64 141 -@echo ' '
giuliomoro@64 142
giuliomoro@64 143 post-build:
giuliomoro@64 144 # Nothing to do here (for now)
giuliomoro@64 145
giuliomoro@64 146 .PHONY: all clean distclean sourceclean dependents
giuliomoro@64 147 .SECONDARY: post-build