]> rtime.felk.cvut.cz Git - pes-rpp/rpp-lib.git/blobdiff - build/Makefile.rules.arm
Generate list of GIO pin names
[pes-rpp/rpp-lib.git] / build / Makefile.rules.arm
index 3fae3259b6dd1a3f9fd3efc54179ef2a9637294a..b730edab79fc93c5b9b89711b425d0ff135b3cf2 100644 (file)
@@ -21,18 +21,11 @@ endif
 
 # Code composer studio sets this variable when it invokes make. Let's use it
 # as a hint for where is the compiler installed.
-CCS_UTILS_DIR ?= /opt/ti/ccsv5/utils
+CCS_UTILS_DIR ?= $(or $(wildcard /opt/ti/ccsv5/utils),\
+                                         $(error Please set CCS_UTILS_DIR variable, e.g. by running 'make CCS_UTILS_DIR=$$HOME/ti/ccsv5/utils'))
 
 ARM_COMPILER_DIR ?= $(dir $(CCS_UTILS_DIR))/tools/compiler/arm_5.1.1
 
-ifeq ($(wildcard $(CCS_UTILS_DIR)),)
-define msg
-'$(CCS_UTILS_DIR)' directory does not exist.
-Please set CCS_UTILS_DIR variable, e.g. by running 'make CCS_UTILS_DIR=$$HOME/ti/ccsv5/utils'
-endef
-$(error $(msg))
-endif
-
 CC=$(ARM_COMPILER_DIR)/bin/armcl
 AR=$(ARM_COMPILER_DIR)/bin/armar
 LD=$(CC)
@@ -40,16 +33,33 @@ LD=$(CC)
 # Include definition of $(rpp_lib_INCLUDES)
 include $(makefile_rules_arm_dir)/../Makefile.var
 
-RPP_CFLAGS = $(TARGET_CFLAGS) --gcc -I$(ARM_COMPILER_DIR)/include      \
-               $(rpp_lib_INCLUDES:%=-I$(makefile_rules_arm_dir)/../%)                  \
-               --diag_warning=225 --display_error_number --diag_wrap=off               \
-               --gen_func_subsections=on --enum_type=packed
+# Include UPPERCASE function
+include $(makefile_rules_dir)/../common.mk
+
+# Construct target specific CFLAGS. Start from what's in Makefile.config.
+RPP_TARGET_CFLAGS = $(TARGET_CFLAGS)
+
+# Add -DTARGET_<NAME>
+RPP_TARGET_CFLAGS += -DTARGET_$(call UPPERCASE,$(TARGET))
+
+# Then add -DTARGET_HAS_xxx for each make variable named TARGET_HAS_*
+# having value 'y'
+TARGET_HAS_NAMES = $(filter TARGET_HAS_%,$(.VARIABLES))
+RPP_TARGET_CFLAGS += $(foreach name,$(TARGET_HAS_NAMES),$(if $(filter y,$($(name))),-D$(name)))
+
+ARM_COMPILER_CFLAGS = --gcc --diag_error=225 --display_error_number    \
+                                         --diag_wrap=off --gen_func_subsections=on --enum_type=packed
+
+RPP_CFLAGS = $(RPP_TARGET_CFLAGS) -I$(ARM_COMPILER_DIR)/include        \
+               $(rpp_lib_INCLUDES:%=-I$(makefile_rules_arm_dir)/../%)  \
+               $(ARM_COMPILER_CFLAGS)
 
 RPP_MAKE_CFLAGS = \
                --preproc_dependency=$(@:%=%.dep) --obj_directory=$(dir $@)     \
                --preproc_with_compile
 
 RPP_COMPILE_CMD = $(CC) $(RPP_CFLAGS) $(RPP_MAKE_CFLAGS) $<
+RPP_PREPROC_CMD = $(CC) $(RPP_CFLAGS) --preproc_only --output_file=$@ $<
 
 BUILD_DIR ?= Debug
 RPP_LIB_DIR = $(makefile_rules_arm_dir)/$(TARGET)/$(BUILD_DIR)
@@ -63,5 +73,8 @@ RPP_LDFLAGS = \
 
 RPP_LDLIBS = $(makefile_rules_arm_dir)/$(TARGET)/$(TARGET_LDCMD) -l$(RPP_LIB_DIR)/rpp-lib.lib $(TARGET_LDLIBS)
 
+# Do not define any rules when compiling Simulink models
+ifeq ($(MATLAB_ROOT),)
 $(RPP_LIB_DIR)/rpp-lib.lib:
        $(MAKE) -C $(dir $@)
+endif