ifndef NEURAL_MODELLING_DIRS $(error NEURAL_MODELLING_DIRS is not set. Please define NEURAL_MODELLING_DIRS (possibly by running "source setup" in the neural_modelling folder within the sPyNNaker source folder)) endif MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST))) CURRENT_DIR := $(dir $(MAKEFILE_PATH)) EXTRA_SRC_DIR := $(abspath $(CURRENT_DIR)) SOURCE_DIRS += $(EXTRA_SRC_DIR) APP_OUTPUT_DIR := $(abspath $(CURRENT_DIR)../../python_models/model_binaries/)/ CFLAGS += -I$(NEURAL_MODELLING_DIRS)/src EXTRA_SYNAPSE_TYPE_OBJECTS += EXTRA_STDP += SYNAPSE_BENCHMARK = NO_SYNAPSE_BENCHMARKS ifeq ($(DEBUG), DEBUG) NEURON_DEBUG = LOG_DEBUG SYNAPSE_DEBUG = LOG_DEBUG PLASTIC_DEBUG = LOG_DEBUG endif ifndef NEURON_DEBUG NEURON_DEBUG = LOG_INFO endif ifndef SYNAPSE_DEBUG SYNAPSE_DEBUG = LOG_INFO endif ifndef PLASTIC_DEBUG PLASTIC_DEBUG = LOG_INFO endif #POPULATION_TABLE_IMPL ?= fixed POPULATION_TABLE_IMPL ?= binary_search ifndef ADDITIONAL_INPUT_H ADDITIONAL_INPUT_H = $(SOURCE_DIR)/neuron/additional_inputs/additional_input_none_impl.h endif ifndef NEURON_MODEL $(error NEURON_MODEL is not set. Please choose a neuron model to compile) else NEURON_MODEL_O = $(BUILD_DIR)neuron/models/$(notdir $(basename $(NEURON_MODEL))).o endif ifndef NEURON_MODEL_H $(error NEURON_MODEL_H is not set. Please select a neuron model header file) endif ifndef INPUT_TYPE_H $(error INPUT_TYPE_H is not set. Please select an input type header file) endif ifndef THRESHOLD_TYPE_H $(error THRESHOLD_TYPE_H is not set. Please select a threshold type header file) endif ifndef SYNAPSE_TYPE_H $(error SYNAPSE_TYPE_H is not set. Please select a synapse type header file) endif ifndef SYNAPSE_DYNAMICS $(error SYNAPSE_DYNAMICS is not set. Please select a synapse dynamics implementation) endif ifdef WEIGHT_DEPENDENCE WEIGHT_DEPENDENCE_O = $(BUILD_DIR)neuron/plasticity/stdp/weight_dependence/$(notdir $(basename $(WEIGHT_DEPENDENCE))).o endif ifdef TIMING_DEPENDENCE TIMING_DEPENDENCE_O = $(BUILD_DIR)neuron/plasticity/stdp/timing_dependence/$(notdir $(basename $(TIMING_DEPENDENCE))).o endif SOURCES = $(EXTRA_SRC_DIR)/neuron/c_main.c \ $(EXTRA_SRC_DIR)/neuron/neuron.c \ $(EXTRA_SRC_DIR)/neuron/synapses.c \ $(SOURCE_DIR)/common/out_spikes.c \ $(SOURCE_DIR)/neuron/spike_processing.c \ $(SOURCE_DIR)/neuron/population_table/population_table_$(POPULATION_TABLE_IMPL)_impl.c \ $(NEURON_MODEL) $(SYNAPSE_DYNAMICS) $(WEIGHT_DEPENDENCE) \ $(TIMING_DEPENDENCE) $(OTHER_SOURCES) SYNAPSE_TYPE_SOURCES += $(EXTRA_SRC_DIR)/neuron/c_main.c \ $(EXTRA_SRC_DIR)/neuron/synapses.c \ $(SOURCE_DIR)/neuron/spike_processing.c \ $(SOURCE_DIR)/neuron/population_table/population_table_fixed_impl.c \ $(SOURCE_DIR)/neuron/population_table/population_table_binary_search_impl.c \ $(SOURCE_DIR)/neuron/plasticity/synapse_dynamics_static_impl.c STDP += $(SOURCE_DIR)/neuron/plasticity/stdp/synapse_dynamics_stdp_mad_impl.c \ $(SOURCE_DIR)/neuron/plasticity/stdp/synapse_dynamics_stdp_impl.c \ $(SOURCE_DIR)/neuron/plasticity/common/post_events.c CFLAGS += -D$(SYNAPSE_BENCHMARK) include ../../../Makefile.spindle define stdp-build-rules $$(patsubst $1/%.c,$$(BUILD_DIR)%.o,$$(filter $1/%.c,$$(SYNAPSE_TYPE_SOURCES))):$$(BUILD_DIR)%.o: $1/%.c $$(SYNAPSE_TYPE_H) -mkdir -p $$(dir $$@) $$(CC) -D__FILE__=\"$$(notdir $$*.c)\" -DLOG_LEVEL=$(SYNAPSE_DEBUG) \ $$(CFLAGS) \ -include $(SYNAPSE_TYPE_H) -o $$@ $$< $$(patsubst $1/%.c,$$(BUILD_DIR)%.o,$$(filter $1/%.c,$$(STDP))):$$(BUILD_DIR)%.o: $1/%.c $$(SYNAPSE_TYPE_H) \ $$(WEIGHT_DEPENDENCE_H) $$(TIMING_DEPENDENCE_H) -mkdir -p $$(dir $$@) $$(CC) -D__FILE__=\"$$(notdir $$*.c)\" -DLOG_LEVEL=$$(PLASTIC_DEBUG) \ $$(CFLAGS) \ -include $$(SYNAPSE_TYPE_H) \ -include $$(WEIGHT_DEPENDENCE_H) \ -include $$(TIMING_DEPENDENCE_H) -o $$@ $$< endef $(foreach dir, $(SOURCE_DIRS), $(eval $(call stdp-build-rules,$(dir)))) $(WEIGHT_DEPENDENCE_O): $(WEIGHT_DEPENDENCE) $(SYNAPSE_TYPE_H) -mkdir -p $(dir $@) $(CC) -D__FILE__=\"$(notdir $*.c)\" -DLOG_LEVEL=$(PLASTIC_DEBUG) $(CFLAGS) \ -include $(SYNAPSE_TYPE_H) -o $@ $< $(TIMING_DEPENDENCE_O): $(TIMING_DEPENDENCE) $(SYNAPSE_TYPE_H) \ $(WEIGHT_DEPENDENCE_H) -mkdir -p $(dir $@) $(CC) -D__FILE__=\"$(notdir $*.c)\" -DLOG_LEVEL=$(PLASTIC_DEBUG) $(CFLAGS) \ -include $(SYNAPSE_TYPE_H)\ -include $(WEIGHT_DEPENDENCE_H) -o $@ $< $(NEURON_MODEL_O): $(NEURON_MODEL) -mkdir -p $(dir $@) $(CC) -D__FILE__=\"$(notdir $*.c)\" -DLOG_LEVEL=$(NEURON_DEBUG) \ $(CFLAGS) -o $@ $< $(BUILD_DIR)neuron/neuron.o: $(EXTRA_SRC_DIR)/neuron/neuron.c\ $(NEURON_MODEL_H) \ $(SYNAPSE_TYPE_H) -mkdir -p $(dir $@) $(CC) -D__FILE__=\"neuron.c\" -DLOG_LEVEL=$(NEURON_DEBUG) $(CFLAGS) \ -include $(NEURON_MODEL_H) \ -include $(SYNAPSE_TYPE_H) \ -include $(INPUT_TYPE_H) \ -include $(THRESHOLD_TYPE_H) \ -include $(ADDITIONAL_INPUT_H) -o $@ $< $(BUILD_DIR)neuron/fp_math.o: $(EXTRA_SRC_DIR)/neuron/fp_math.c\ $(EXTRA_SRC_DIR)/neuron/fp_math.h $(CC) -D__FILE__=\"fp_math.c\" -DLOG_LEVEL=$(NEURON_DEBUG) $(CFLAGS) \ -o $@ $<