328d09ae36e9b9320fe2f3c10ae8aa1f1f7cae9e
1 # Makefile to build OpenMP applications
3 #
4 # Check if required environment variables are defined
5 #
6 ifneq ($(MAKECMDGOALS),clean)
8 # Path to C6000 compiler tools
9 ifeq ($(CGTROOT),)
10 $(call error,ERROR - CGTROOT NOT DEFINED, PLEASE REFER TO README.txt)
11 endif
13 ifeq ($(XDC_DIR),)
14 $(call error,ERROR - XDC_DIR NOT DEFINED, PLEASE REFER TO README.txt)
15 endif
17 ifeq ($(XDAIS_DIR),)
18 $(call error,ERROR - XDAIS_DIR NOT DEFINED, PLEASE REFER TO README.txt)
19 endif
21 ifeq ($(BIOS_DIR),)
22 $(call error,ERROR - BIOS_DIR NOT DEFINED, PLEASE REFER TO README.txt)
23 endif
25 ifeq ($(IPC_DIR),)
26 $(call error,ERROR - IPC_DIR NOT DEFINED, PLEASE REFER TO README.txt)
27 endif
29 ifeq ($(OMP_DIR),)
30 $(call error,ERROR - OMP_DIR NOT DEFINED, PLEASE REFER TO README.txt)
31 endif
33 ifeq ($(PDK_DIR),)
34 $(call error,ERROR - PDK_DIR NOT DEFINED, PLEASE REFER TO README.txt)
35 endif
37 ifeq ($(FC_DIR),)
38 $(call error,ERROR - FC_DIR NOT DEFINED, PLEASE REFER TO README.txt)
39 endif
41 ifeq ($(EDMA3_DIR),)
42 $(call error,ERROR - EDMA3_DIR NOT DEFINED, PLEASE REFER TO README.txt)
43 endif
45 ifeq ($(LIBARCH_DIR),)
46 $(call error,ERROR - LIBARCH_DIR NOT DEFINED, PLEASE REFER TO README.txt)
47 endif
49 ifeq ($(LINALG_DIR),)
50 $(call error,ERROR - LINALG_DIR NOT DEFINED, PLEASE REFER TO README.txt)
51 endif
53 endif
56 default: all
58 # Configuration file used (without the .cfg extension)
59 CFGDIR = $(COMMON_FOLDER)/omp_config
61 # Set BUILD_TYPE to debug/release to pick appropriate libraries
62 BUILD_TYPE = release
64 # Platform file
65 ifneq ($(MAKECMDGOALS),clean)
67 ifeq ($(TARGET),SOC_AM572x)
68 XDCPLATFORM = ti.runtime.openmp.platforms.am57x
69 CL_OPTS += -DSOC_AM572x
70 else ifeq ($(TARGET),SOC_C6678)
71 XDCPLATFORM = ti.runtime.openmp.platforms.evm6678
72 CL_OPTS += -DSOC_C6678
73 else ifeq ($(TARGET),SOC_K2H)
74 XDCPLATFORM = ti.runtime.openmp.platforms.evmTCI6636K2H
75 CL_OPTS += -DSOC_K2H
76 else
77 $(call error, ERROR - TARGET NOT DEFINED. Must specify one of: TARGET=SOC_K2H,TARGET=SOC_C6678,TARGET=SOC_AM572X)
78 endif
80 ifeq ($(BUILD_TYPE),debug)
81 CL_OPTS += -g --optimize_with_debug=on
82 else
83 CL_OPTS += -o3
84 endif
86 endif
88 testfiles_obj += ticblas_config.obj fc_config_c6678.obj
90 CL_OPTS += -@ $(OPT_CMD) -mv6600 --omp -I $(OMP_DIR)/packages/ti/runtime/openmp
91 CL_OPTS += -I$(FC_DIR)/packages -I$(XDAIS_DIR)/packages -I$(EDMA3_DIR)/packages -I$(LIBARCH_DIR)/packages -I$(LINALG_DIR)/packages
92 CL_OPTS += -D$(TARGET) -DLIB_RTOS
94 # Include . to find config.bld
95 XDCPATH = $(PDK_DIR)/packages;$(OMP_DIR)/packages;$(BIOS_DIR)/packages;$(IPC_DIR)/packages;$(FC_DIR)/packages;$(XDAIS_DIR)/packages;$(EDMA3_DIR)/packages;.
97 XS = $(XDC_DIR)/xs
98 XDC = $(XDC_DIR)/xdc
99 XDCTARGET = ti.targets.elf.C66
101 #
102 # Compiler option configuration
103 #
104 LNK_CMD = $(CFGDIR)/linker.cmd
105 LNK_CMD_FC= $(COMMON_FOLDER)/linker_fc.cmd
106 OPT_CMD = $(CFGDIR)/compiler.opt
107 LNK_OPTS = -x -c --priority -w
108 CL = $(CGTROOT)/bin/cl6x
109 RTS_LIB = $(CGTROOT)/lib/libc.a
110 LIBARCH_LIB = $(LIBARCH_DIR)/packages/ti/libarch/lib/libarch.ae66
111 LINALG_LIB = $(LINALG_DIR)/packages/ti/linalg/lib/libcblas.ae66
113 all: $(outfile)
115 # Generate and build libomp config packages
116 libomp_config: $(CFGDIR).cfg
117 @echo making $(CFGDIR) files
118 $(XS) --xdcpath "$(XDCPATH)" xdc.tools.configuro -c $(CGTROOT) --cb -t $(XDCTARGET) -p $(XDCPLATFORM) -r $(BUILD_TYPE) $(CFGDIR).cfg
120 libomp_clean:
121 @echo Removing $(CFGDIR)
122 @rm -rf $(CFGDIR)/
124 $(outfile): libomp_config $(testfiles_obj)
125 echo generating $(outfile)
126 $(CL) $(CL_OPTS) -z $(LNK_OPTS) -m $*.map $(LNK_CMD) $(LNK_CMD_FC) $(testfiles_obj) $(RTS_LIB) $(LIBARCH_LIB) $(LINALG_LIB) --output_file=$(outfile)
128 ticblas_config.obj: $(COMMON_FOLDER)/ticblas_config.c
129 $(CL) $(CL_OPTS) $<
130 echo Compiling $<
132 fc_config_c6678.obj: $(COMMON_FOLDER)/fc_config_c6678.c
133 $(CL) $(CL_OPTS) $<
134 echo Compiling $<
136 clean: libomp_clean
137 @rm -rf *.map *.out *.obj *.mak
139 #
140 # Cleans libomp artifacts
141 #
142 realclean: libomp_clean
143 @rm -rf *.map *.out *.obj *.mak