• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1cmake_minimum_required(VERSION 3.12)
2project(exmaples LANGUAGES C ASM)
3
4set(CMAKE_C_COMPILER ${TOOLCHAIN_PATH}/bin/aarch64-none-elf-gcc)
5set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PATH}/bin/aarch64-none-elf-g++)
6set(CMAKE_ASM_COMPILER ${TOOLCHAIN_PATH}/bin/aarch64-none-elf-gcc)
7set(CMAKE_LINKER ${TOOLCHAIN_PATH}/bin/aarch64-none-elf-ld)
8
9set(POSIX_OPTION "-D_POSIX_THREADS -D_POSIX_THREAD_PRIORITY_SCHEDULING -D_POSIX_PRIORITY_SCHEDULING -D_POSIX_TIMERS -D_POSIX_CPUTIME -D_POSIX_THREAD_CPUTIME -D_POSIX_MONOTONIC_CLOCK -D_POSIX_TIMEOUTS -D_POSIX_CLOCK_SELECTION -D_POSIX_THREAD_PRIO_PROTECT -D_UNIX98_THREAD_MUTEX_ATTRIBUTES -D_POSIX_READER_WRITER_LOCKS")
10set(CC_OPTION "-g -march=armv8.2-a+nofp+nosimd -Wl,--build-id=none -fno-builtin -fno-PIE -Wall -fno-dwarf2-cfi-asm -O0 -mcmodel=large -fomit-frame-pointer -fzero-initialized-in-bss -fdollars-in-identifiers -ffunction-sections -fdata-sections -fno-common -fno-aggressive-loop-optimizations -fno-optimize-strlen -fno-schedule-insns -fno-inline-small-functions -fno-inline-functions-called-once -fno-strict-aliasing -fno-builtin -finline-limit=20 -mstrict-align -mlittle-endian -specs=nosys.specs -nostartfiles -funwind-tables")
11set(AS_OPTION "-g -march=armv8.2-a+nofp+nosimd -Wl,--build-id=none -fno-builtin -fno-PIE -Wall -fno-dwarf2-cfi-asm -O0 -mcmodel=large -fomit-frame-pointer -fzero-initialized-in-bss -fdollars-in-identifiers -ffunction-sections -fdata-sections -fno-common -fno-aggressive-loop-optimizations -fno-optimize-strlen -fno-schedule-insns -fno-inline-small-functions -fno-inline-functions-called-once -fno-strict-aliasing -fno-builtin -finline-limit=20 -mstrict-align -mlittle-endian -nostartfiles -mgeneral-regs-only -DENV_EL1")
12set(LD_OPTION "-static -no-pie -Wl,--wrap=memset -Wl,--wrap=memcpy")
13set(CMAKE_C_FLAGS "${CC_OPTION} ${POSIX_OPTION}")
14set(CMAKE_ASM_FLAGS "${AS_OPTION} ${POSIX_OPTION}")
15set(CMAKE_LINK_FLAGS "${LD_OPTION} -T ../hi3093.ld")
16set(CMAKE_EXE_LINKER_FLAGS "${LD_OPTION} -T ../hi3093.ld")
17
18include_directories(
19    ./include
20    ./config
21    ./bsp
22    ./bsp/hi3093
23    ./bsp/uart
24    ./apps/openamp
25    ./build/open-amp/output/usr/local/include
26    ./build/libmetal/output/usr/local/include
27)
28
29link_directories(./libs)
30link_libraries(
31    -Wl,--start-group
32    "${CMAKE_CURRENT_SOURCE_DIR}/libs/libCortexMXsec_c.lib"
33    "${CMAKE_CURRENT_SOURCE_DIR}/libs/libHI3093.a"
34    "${CMAKE_CURRENT_SOURCE_DIR}/libs/libmetal.a"
35    "${CMAKE_CURRENT_SOURCE_DIR}/libs/libopen_amp.a"
36    -Wl,--end-group
37)
38
39add_subdirectory(bsp)
40add_subdirectory(config)
41add_subdirectory(apps)
42
43list(APPEND OBJS $<TARGET_OBJECTS:rpmsg> $<TARGET_OBJECTS:bsp> $<TARGET_OBJECTS:config> $<TARGET_OBJECTS:uart>)
44add_executable(${APP} ${OBJS})
45