# ******************************************************************************
# (C) Automotive-Lighting Reutlingen GmbH  -  ALRT/EEG
#     Tuebinger Strasse 123, 72762 Reutlingen, Germany
# ******************************************************************************

# ------------------------------------------------------------------------------
# file   Hal_030_Flags.gmk
#
# \brief compiler/assembler/linker options on HAL level
#
# \descr
#
# ------------------------------------------------------------------------------

# Result of this file:
#  CFLAGS_DEFAULT (Compiler flags for C)
#  CFLAGS_NOWARN  (Compiler flags for C, all warnings disabled)
#  CFLAGS_DEBUG   (Compiler flags for C, debug info available and optimization disabled)
#  CPPFLAGS       (Compiler flags for C++)
#  AFLAGS         (Compiler flags for assembler)
#  LDFLAGS        (Compiler flags for linker)

C_DEFINES       := $(C_DEFINES)                              \
                   __ASM=asm

C_DEFINES_TOOL_INTERNAL := $(C_DEFINES_TOOL_INTERNAL)        \
                           __ghs__                           \
                           __PRIMASK                         \
                           __attribute__()=

CFLAGS_BASE      = -thumb                                    \
                   -thumb_lib                                \
                   --short_enum                              \
                   -no_discard_zero_initializers             \
                   -align4                                   \
                   --no_commons                              \
                   --no_alternative_tokens                   \
                   -nostartfiles                             \
                   -asm3g                                    \
                   -preprocess_assembly_files                \
                   -globalcheck=normal                       \
                   -globalcheck_qualifiers                   \
                   --prototype_errors                        \
                   -reject_duplicates                        \
                   -g                                        \
                   -dual_debug                               \
                   -list

CFLAGS_OPT_SPACE = -Osize                                    \
                   -OI                                       \
                   -Omax

CFLAGS_OPT_SPEED = -Ospeed                                   \
                   -OI                                       \
                   -Ointerproc                               \
                   -Omax

CFLAGS_OPT_DEBUG = -O1

CFLAGS_WARN_NONE = -w

CFLAGS_WARN_ALL  = -Wformat                                  \
                   -Wimplicit-int                            \
                   -Wshadow                                  \
                   -Wtrigraphs                               \
                   -Wundef

ifeq ($(TYP_CORE),M0P)
CFLAGS_CORE_M0P  = -cpu=cortexm0plus                         \
                   -fsoft

CFLAGS_CORE      = $(CFLAGS_CORE_M0P)
endif

ifeq ($(TYP_CORE),M3)
CFLAGS_CORE_M3   = -cpu=cortexm3                             \
                   -fsoft

CFLAGS_CORE      = $(CFLAGS_CORE_M3)
endif

ifeq ($(TYP_CORE),M4F)
CFLAGS_CORE_M4F  = -cpu=cortexm4f                            \
                   -fhard                                    \
                   -fsingle                                  \
                   -fpu=vfpv4_d16                            \
                   --hardware_divide

CFLAGS_CORE      = $(CFLAGS_CORE_M4F)
endif

CFLAGS_DEFAULT   = -c99                                      \
                   $(CFLAGS_BASE)                            \
                   $(CFLAGS_CORE)                            \
                   $(CFLAGS_OPT_SPEED)                       \
                   $(CFLAGS_WARN_ALL)

CFLAGS_NOWARN     = -c99                                     \
                   $(CFLAGS_BASE)                            \
                   $(CFLAGS_CORE)                            \
                   $(CFLAGS_OPT_SPEED)                       \
                   $(CFLAGS_WARN_NONE)

CFLAGS_DEBUG     = -c99                                      \
                   $(CFLAGS_BASE)                            \
                   $(CFLAGS_CORE)                            \
                   $(CFLAGS_OPT_DEBUG)                       \
                   $(CFLAGS_WARN_ALL)

CPPFLAGS         = --c++11                                   \
                   --no_rtti                                 \
                   --no_exceptions                           \
                   $(CFLAGS_BASE)                            \
                   $(CFLAGS_CORE)                            \
                   $(CFLAGS_OPT_SPEED)                       \
                   $(CFLAGS_WARN_ALL)                        \
                   --diag_suppress 1721

AFLAGS           = $(CFLAGS_DEFAULT)

ifeq ($(TYP_SPECIAL_BUILD_OR_REBUILD),TYP_SPECIAL_BUILD_OR_REBUILD_DEVELOPER)
LDFLAGS          = $(CPPFLAGS)                               \
                   -lnk="-wrap TASK_OsTask_Timing_NT0_100ms       \
                         -wrap TASK_OsTask_Timing_NT0_10ms        \
                         -wrap TASK_OsTask_Timing_NT0_20ms        \
                         -wrap TASK_OsTask_Timing_NT0_50ms        \
                         -wrap TASK_OsTask_Timing_T0_100ms        \
                         -wrap TASK_OsTask_Timing_T0_10ms         \
                         -wrap TASK_OsTask_Timing_T0_10ms_BSW     \
                         -wrap TASK_OsTask_Timing_T0_1ms          \
                         -wrap TASK_OsTask_Timing_T0_2ms_BSW      \
                         -wrap TASK_OsTask_Timing_T0_50ms         \
                         -wrap TASK_OsTask_Timing_T0_5ms          \
                         -wrap TASK_OsTask_Timing_T0_5ms_BSW      \
                         -wrap TASK_OsTask_Timing_T0_Client_10ms  \
                         "                                        \
                   --stdl
else
LDFLAGS          = $(CPPFLAGS)                               \
                   --stdl
endif
