xref: /aosp_15_r20/system/chre/build/arch/hexagon.mk (revision 84e339476a462649f82315436d70fd732297a399)
1*84e33947SAndroid Build Coastguard Worker#
2*84e33947SAndroid Build Coastguard Worker# Build targets for a Hexagon-based processor
3*84e33947SAndroid Build Coastguard Worker#
4*84e33947SAndroid Build Coastguard Worker
5*84e33947SAndroid Build Coastguard Worker# Hexagon Environment Checks ###################################################
6*84e33947SAndroid Build Coastguard Worker
7*84e33947SAndroid Build Coastguard Worker# Ensure that the user has specified a path to the Hexagon toolchain that they
8*84e33947SAndroid Build Coastguard Worker# wish to use.
9*84e33947SAndroid Build Coastguard Workerifeq ($(HEXAGON_TOOLS_PREFIX),)
10*84e33947SAndroid Build Coastguard Worker$(error "You must supply a HEXAGON_TOOLS_PREFIX environment variable \
11*84e33947SAndroid Build Coastguard Worker         containing a path to the hexagon toolchain. Example: \
12*84e33947SAndroid Build Coastguard Worker         export HEXAGON_TOOLS_PREFIX=$$HOME/Qualcomm/HEXAGON_Tools/8.0.07")
13*84e33947SAndroid Build Coastguard Workerendif
14*84e33947SAndroid Build Coastguard Worker
15*84e33947SAndroid Build Coastguard Workerifeq ($(IS_NANOAPP_BUILD),)
16*84e33947SAndroid Build Coastguard Workerifeq ($(SLPI_PREFIX),)
17*84e33947SAndroid Build Coastguard Worker$(error "You must supply an SLPI_PREFIX environment variable \
18*84e33947SAndroid Build Coastguard Worker         containing a path to the SLPI source tree. Example: \
19*84e33947SAndroid Build Coastguard Worker         export SLPI_PREFIX=$$HOME/slpi_proc")
20*84e33947SAndroid Build Coastguard Workerendif
21*84e33947SAndroid Build Coastguard Workerendif
22*84e33947SAndroid Build Coastguard Worker
23*84e33947SAndroid Build Coastguard Worker# Hexagon Tools ################################################################
24*84e33947SAndroid Build Coastguard Worker
25*84e33947SAndroid Build Coastguard WorkerTARGET_AR = $(HEXAGON_TOOLS_PREFIX)/Tools/bin/hexagon-ar
26*84e33947SAndroid Build Coastguard WorkerTARGET_CC = $(HEXAGON_TOOLS_PREFIX)/Tools/bin/hexagon-clang
27*84e33947SAndroid Build Coastguard WorkerTARGET_LD = $(HEXAGON_TOOLS_PREFIX)/Tools/bin/hexagon-link
28*84e33947SAndroid Build Coastguard Worker
29*84e33947SAndroid Build Coastguard Worker# Hexagon Compiler Flags #######################################################
30*84e33947SAndroid Build Coastguard Worker
31*84e33947SAndroid Build Coastguard Worker# Define CUST_H to allow including the customer header file.
32*84e33947SAndroid Build Coastguard WorkerTARGET_CFLAGS += -DCUST_H='"custaaaaaaaaq.h"'
33*84e33947SAndroid Build Coastguard Worker
34*84e33947SAndroid Build Coastguard Worker# Add Hexagon compiler flags
35*84e33947SAndroid Build Coastguard WorkerTARGET_CFLAGS += $(HEXAGON_CFLAGS)
36*84e33947SAndroid Build Coastguard Worker
37*84e33947SAndroid Build Coastguard Worker# Enable position independence.
38*84e33947SAndroid Build Coastguard WorkerTARGET_CFLAGS += -fpic
39*84e33947SAndroid Build Coastguard Worker
40*84e33947SAndroid Build Coastguard Worker# Disable splitting double registers.
41*84e33947SAndroid Build Coastguard WorkerTARGET_CFLAGS += -mllvm -disable-hsdr
42*84e33947SAndroid Build Coastguard Worker
43*84e33947SAndroid Build Coastguard Worker# Don't use small data section.
44*84e33947SAndroid Build Coastguard WorkerTARGET_CFLAGS += -G0
45*84e33947SAndroid Build Coastguard Worker
46*84e33947SAndroid Build Coastguard Worker# Enable default visibility for FastRPC entry points.
47*84e33947SAndroid Build Coastguard WorkerTARGET_CFLAGS += -D'__QAIC_SKEL_EXPORT=__attribute__((visibility("default")))'
48*84e33947SAndroid Build Coastguard Worker
49*84e33947SAndroid Build Coastguard Worker# This code is loaded into a dynamic module. Define this symbol in the event
50*84e33947SAndroid Build Coastguard Worker# that any Qualcomm code needs it.
51*84e33947SAndroid Build Coastguard WorkerTARGET_CFLAGS += -D__V_DYNAMIC__
52*84e33947SAndroid Build Coastguard Worker
53*84e33947SAndroid Build Coastguard Worker# This flag is used by some QC-supplied code to differentiate things intended to
54*84e33947SAndroid Build Coastguard Worker# run on Hexagon vs. other architectures
55*84e33947SAndroid Build Coastguard WorkerTARGET_CFLAGS += -DQDSP6
56*84e33947SAndroid Build Coastguard Worker
57*84e33947SAndroid Build Coastguard Worker# Declare support for std headers that the QC SDK contains so that libs like
58*84e33947SAndroid Build Coastguard Worker# pigweed don't try to redefine functionality.
59*84e33947SAndroid Build Coastguard WorkerTARGET_CFLAGS += -D__cpp_lib_byte=201603L
60*84e33947SAndroid Build Coastguard WorkerTARGET_CFLAGS += -D__cpp_lib_integer_sequence=201304L
61*84e33947SAndroid Build Coastguard WorkerTARGET_CFLAGS += -D__cpp_lib_is_null_pointer=201309L
62*84e33947SAndroid Build Coastguard WorkerTARGET_CFLAGS += -D__cpp_lib_logical_traits=201510L
63*84e33947SAndroid Build Coastguard WorkerTARGET_CFLAGS += -D__cpp_lib_nonmember_container_access=201411L
64*84e33947SAndroid Build Coastguard WorkerTARGET_CFLAGS += -D__cpp_lib_transformation_trait_aliases=201304L
65*84e33947SAndroid Build Coastguard Worker
66*84e33947SAndroid Build Coastguard Worker# Hexagon Shared Object Linker Flags ###########################################
67*84e33947SAndroid Build Coastguard Worker
68*84e33947SAndroid Build Coastguard WorkerTARGET_SO_LDFLAGS += --gc-sections
69*84e33947SAndroid Build Coastguard WorkerTARGET_SO_LDFLAGS += -shared
70*84e33947SAndroid Build Coastguard WorkerTARGET_SO_LDFLAGS += -call_shared
71*84e33947SAndroid Build Coastguard WorkerTARGET_SO_LDFLAGS += -Bsymbolic
72*84e33947SAndroid Build Coastguard WorkerTARGET_SO_LDFLAGS += --wrap=malloc
73*84e33947SAndroid Build Coastguard WorkerTARGET_SO_LDFLAGS += --wrap=calloc
74*84e33947SAndroid Build Coastguard WorkerTARGET_SO_LDFLAGS += --wrap=free
75*84e33947SAndroid Build Coastguard WorkerTARGET_SO_LDFLAGS += --wrap=realloc
76*84e33947SAndroid Build Coastguard WorkerTARGET_SO_LDFLAGS += --wrap=memalign
77*84e33947SAndroid Build Coastguard WorkerTARGET_SO_LDFLAGS += --wrap=__stack_chk_fail
78*84e33947SAndroid Build Coastguard WorkerTARGET_SO_LDFLAGS += --no-threads
79*84e33947SAndroid Build Coastguard Worker
80*84e33947SAndroid Build Coastguard WorkerHEXAGON_LIB_PATH = $(HEXAGON_TOOLS_PREFIX)/Tools/target/hexagon/lib
81*84e33947SAndroid Build Coastguard WorkerTARGET_SO_EARLY_LIBS += $(HEXAGON_LIB_PATH)/$(HEXAGON_ARCH)/G0/pic/initS.o
82*84e33947SAndroid Build Coastguard WorkerTARGET_SO_LATE_LIBS += $(HEXAGON_LIB_PATH)/$(HEXAGON_ARCH)/G0/pic/finiS.o
83*84e33947SAndroid Build Coastguard WorkerTARGET_SO_LATE_LIBS += $(LDLIBS)
84*84e33947SAndroid Build Coastguard Worker
85*84e33947SAndroid Build Coastguard Worker# Supported Hexagon Architectures ##############################################
86*84e33947SAndroid Build Coastguard Worker
87*84e33947SAndroid Build Coastguard WorkerHEXAGON_SUPPORTED_ARCHS = v55 v60 v62 v65 v66
88*84e33947SAndroid Build Coastguard Worker
89*84e33947SAndroid Build Coastguard Worker# Environment Checks ###########################################################
90*84e33947SAndroid Build Coastguard Worker
91*84e33947SAndroid Build Coastguard Worker# Ensure that an architecture is chosen.
92*84e33947SAndroid Build Coastguard Workerifeq ($(filter $(HEXAGON_ARCH), $(HEXAGON_SUPPORTED_ARCHS)),)
93*84e33947SAndroid Build Coastguard Worker$(error "The HEXAGON_ARCH variable must be set to a supported architecture \
94*84e33947SAndroid Build Coastguard Worker         ($(HEXAGON_SUPPORTED_ARCHS))")
95*84e33947SAndroid Build Coastguard Workerendif
96*84e33947SAndroid Build Coastguard Worker
97*84e33947SAndroid Build Coastguard Worker# Target Architecture ##########################################################
98*84e33947SAndroid Build Coastguard Worker
99*84e33947SAndroid Build Coastguard Worker# Set the Hexagon architecture.
100*84e33947SAndroid Build Coastguard WorkerTARGET_CFLAGS += -m$(strip $(HEXAGON_ARCH))
101*84e33947SAndroid Build Coastguard Worker
102*84e33947SAndroid Build Coastguard Worker# Optimization Level ###########################################################
103*84e33947SAndroid Build Coastguard Worker
104*84e33947SAndroid Build Coastguard WorkerTARGET_CFLAGS += -O$(OPT_LEVEL)
105*84e33947SAndroid Build Coastguard Worker
106*84e33947SAndroid Build Coastguard Worker# TODO: Consider disabling this when compiling for >-O0.
107*84e33947SAndroid Build Coastguard WorkerTARGET_CFLAGS += -D_DEBUG
108*84e33947SAndroid Build Coastguard Worker
109*84e33947SAndroid Build Coastguard Worker# Variant Specific Sources #####################################################
110*84e33947SAndroid Build Coastguard Worker
111*84e33947SAndroid Build Coastguard WorkerTARGET_VARIANT_SRCS += $(HEXAGON_SRCS)
112