-
Notifications
You must be signed in to change notification settings - Fork 2
/
CMakeLists.txt
99 lines (73 loc) · 2.58 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# CMake.
cmake_minimum_required(VERSION 3.17.0 FATAL_ERROR)
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Werror -ggdb3")
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror -ggdb3")
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules)
set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_COLOR_MAKEFILE ON)
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0")
else()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2")
endif()
# Configure toolchain.
set(TGT_ARCH arm)
include(cmake/scripts/toolchain.cmake)
# Project configuration.
set(PROJECT_NAME adi_dmac_iio_dev)
project(${PROJECT_NAME} C)
include(CMakeDependentOption)
option(WITH_XILINX_PL_DMAC_EXAMPLE "Build FPGA image" OFF)
option(WITH_XILINX_FSBL "Build First stage boot loader (FSBL)" OFF)
option(WITH_XILINX_SSBL "Build Second stage boot loader (SSBL - UBOOT)" OFF)
cmake_dependent_option(WITH_BOOT_BIN_GEN "Generate Zynq boot binary" OFF
"WITH_XILINX_PL_DMAC_EXAMPLE;WITH_XILINX_FSBL;WITH_XILINX_SSBL" OFF)
option(WITH_ADI_LINUX_KERNEL "Build Linux kernel Image" OFF)
option(WITH_DMAC_KMOD "Build kernel module" ON)
option(WITH_DMAC_EXAMPLE "Build examples" ON)
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/image" CACHE PATH "default installation path" FORCE)
endif()
# CMake helpers.
include(GNUInstallDirs)
find_package (Git "2.14.0" REQUIRED)
if(WITH_XILINX_PL_DMAC_EXAMPLE)
find_package(Vivado "2021.1" REQUIRED)
include(cmake/scripts/hdl.cmake)
set(WITH_SYSDEF_FILE ${CMAKE_CURRENT_BINARY_DIR}/boot_gen/system_top.sysdef)
endif()
if(WITH_XILINX_FSBL)
set(HSI_VER 2018.2)
find_package(HSI ${HSI_VER} REQUIRED)
if(NOT WITH_SYSDEF_FILE)
message(FATAL_ERROR "System Definition option not set via -DWITH_SYSDEF_FILE=<filename>")
endif()
include(cmake/scripts/fsbl.cmake)
endif()
if(WITH_XILINX_SSBL)
include(cmake/scripts/ssbl.cmake)
if(NOT SSBL_ETHADDR)
set(SSBL_ETHADDR 00:e0:22:fe:ff:ff)
endif()
configure_file(uenv/uEnv.txt.in ${CMAKE_CURRENT_BINARY_DIR}/image/boot/uEnv.txt @ONLY)
endif()
if(WITH_BOOT_BIN_GEN)
add_subdirectory(boot)
endif()
if(WITH_ADI_LINUX_KERNEL)
set(UIMAGE_LOADADDR 0x8000)
include(cmake/scripts/kernel.cmake)
endif()
if(WITH_DMAC_KMOD)
if(NOT KERNEL_DIR)
message(FATAL_ERROR "KERNEL_DIR must be set root of kernel sources when WITH_DMAC_KMOD is set")
endif()
include(cmake/scripts/dmac_kmod.cmake)
endif()
if(WITH_DMAC_EXAMPLE)
add_subdirectory(test)
endif()