comparison Makefile @ 318:f7b19ea31bbb prerelease

Added NEON vectorised float<->int converters. Curiously, its performance is worse than the C version. I guess clang is better at vectorising than we thought! The new code remains disabled for now.
author andrewm
date Mon, 30 May 2016 01:06:01 +0100
parents 868cfb137fe5
children bd54819ccfa7
comparison
equal deleted inserted replaced
317:52733b58bdf3 318:f7b19ea31bbb
86 # Core Bela sources 86 # Core Bela sources
87 CORE_CPP_SRCS = $(filter-out core/default_main.cpp, $(wildcard core/*.cpp)) 87 CORE_CPP_SRCS = $(filter-out core/default_main.cpp, $(wildcard core/*.cpp))
88 CORE_OBJS := $(addprefix build/core/,$(notdir $(CORE_CPP_SRCS:.cpp=.o))) 88 CORE_OBJS := $(addprefix build/core/,$(notdir $(CORE_CPP_SRCS:.cpp=.o)))
89 CORE_CPP_DEPS := $(addprefix build/core/,$(notdir $(CORE_CPP_SRCS:.cpp=.d))) 89 CORE_CPP_DEPS := $(addprefix build/core/,$(notdir $(CORE_CPP_SRCS:.cpp=.d)))
90 90
91 CORE_ASM_SRCS := $(wildcard core/*.S)
92 CORE_ASM_OBJS := $(addprefix build/core/,$(notdir $(CORE_ASM_SRCS:.S=.o)))
93 CORE_ASM_DEPS := $(addprefix build/core/,$(notdir $(CORE_ASM_SRCS:.S=.d)))
94
95
91 # Objects for a system-supplied default main() file, if the user 96 # Objects for a system-supplied default main() file, if the user
92 # only wants to provide the render functions. 97 # only wants to provide the render functions.
93 DEFAULT_MAIN_CPP_SRCS := ./core/default_main.cpp 98 DEFAULT_MAIN_CPP_SRCS := ./core/default_main.cpp
94 DEFAULT_MAIN_OBJS := ./build/core/default_main.o 99 DEFAULT_MAIN_OBJS := ./build/core/default_main.o
95 DEFAULT_MAIN_CPP_DEPS := ./build/core/default_main.d 100 DEFAULT_MAIN_CPP_DEPS := ./build/core/default_main.d
115 # @echo 'Invoking: C++ Compiler' 120 # @echo 'Invoking: C++ Compiler'
116 @$(CXX) $(SYNTAX_FLAG) $(INCLUDES) $(CPP_FLAGS) -Wall -c -fmessage-length=0 -U_FORTIFY_SOURCE -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" 121 @$(CXX) $(SYNTAX_FLAG) $(INCLUDES) $(CPP_FLAGS) -Wall -c -fmessage-length=0 -U_FORTIFY_SOURCE -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
117 @echo ' ...done' 122 @echo ' ...done'
118 @echo ' ' 123 @echo ' '
119 124
125 # Rule for Bela core ASM files
126 build/core/%.o: ./core/%.S
127 @echo 'Building $(notdir $<)...'
128 # @echo 'Invoking: GCC Assembler'
129 @as -o "$@" "$<"
130 @echo ' ...done'
131 @echo ' '
132
120 # Rule for user-supplied C++ files 133 # Rule for user-supplied C++ files
121 $(PROJECT_DIR)/build/%.o: $(PROJECT_DIR)/%.cpp 134 $(PROJECT_DIR)/build/%.o: $(PROJECT_DIR)/%.cpp
122 @echo 'Building $(notdir $<)...' 135 @echo 'Building $(notdir $<)...'
123 # @echo 'Invoking: C++ Compiler' 136 # @echo 'Invoking: C++ Compiler'
124 @$(CXX) $(SYNTAX_FLAG) $(INCLUDES) $(CPP_FLAGS) -Wall -c -fmessage-length=0 -U_FORTIFY_SOURCE -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" 137 @$(CXX) $(SYNTAX_FLAG) $(INCLUDES) $(CPP_FLAGS) -Wall -c -fmessage-length=0 -U_FORTIFY_SOURCE -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
144 # This is a nasty kludge: we want to be able to optionally link in a default 157 # This is a nasty kludge: we want to be able to optionally link in a default
145 # main file if the user hasn't supplied one. We check for the presence of the main() 158 # main file if the user hasn't supplied one. We check for the presence of the main()
146 # function, and conditionally call one of two recursive make targets depending on whether 159 # function, and conditionally call one of two recursive make targets depending on whether
147 # we want to link in the default main file or not. The kludge is the mess of a shell script 160 # we want to link in the default main file or not. The kludge is the mess of a shell script
148 # line below. Surely there's a better way to do this? 161 # line below. Surely there's a better way to do this?
149 Bela: $(CORE_OBJS) $(ASM_OBJS) $(C_OBJS) $(CPP_OBJS) $(STATIC_LIBS) $(DEFAULT_MAIN_OBJS) 162 Bela: $(CORE_ASM_OBJS) $(CORE_OBJS) $(ASM_OBJS) $(C_OBJS) $(CPP_OBJS) $(STATIC_LIBS) $(DEFAULT_MAIN_OBJS)
150 $(eval DEFAULT_MAIN_CONDITIONAL := $(shell bash -c 'if [ `nm $(PROJECT_DIR)/build/*.o | grep -w T | grep -w main | wc -l` == '0' ]; then echo "$(DEFAULT_MAIN_OBJS)"; else echo ""; fi')) 163 $(eval DEFAULT_MAIN_CONDITIONAL := $(shell bash -c 'if [ `nm $(PROJECT_DIR)/build/*.o | grep -w T | grep -w main | wc -l` == '0' ]; then echo "$(DEFAULT_MAIN_OBJS)"; else echo ""; fi'))
151 @echo 'Invoking: C++ linker' 164 @echo 'Invoking: C++ linker'
152 @$(CXX) $(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 "$(PROJECT_DIR)/$(PROJECT)" $(CORE_OBJS) $(DEFAULT_MAIN_CONDITIONAL) $(ASM_OBJS) $(C_OBJS) $(CPP_OBJS) $(STATIC_LIBS) $(LIBS) 165 @$(CXX) $(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 "$(PROJECT_DIR)/$(PROJECT)" $(CORE_ASM_OBJS) $(CORE_OBJS) $(DEFAULT_MAIN_CONDITIONAL) $(ASM_OBJS) $(C_OBJS) $(CPP_OBJS) $(STATIC_LIBS) $(LIBS)
153 @echo 'Finished building target: $@' 166 @echo 'Finished building target: $@'
154 167
155 # Other Targets: 168 # Other Targets:
156 # This rule compiles c and c++ source files without output or linking 169 # This rule compiles c and c++ source files without output or linking
157 SYNTAX: $(C_OBJS) $(CPP_OBJS) 170 SYNTAX: $(C_OBJS) $(CPP_OBJS)