Commit Graph

23 Commits

Author SHA1 Message Date
xuxin19 1bc50b53bb cmake:implement ALLSYMS feat of CMake version
when declaring the target to be `nuttx`,create an empty allsyms source file for it;
when the target is declared as something else,the link behavior of the `nuttx` target is cloned
and added to actually generate the allsyms file.
finally use allsyms_nuttx to overwrite the already generated nuttx
and regenerate binary outputs

Signed-off-by: xuxin19 <xuxin19@xiaomi.com>
2024-04-03 10:16:21 -03:00
xuxin19 741de4b450 cmake:init protected-mode for CMake build
adjust link options for userspace elf
specify system libs and apps lib to only link with nuttx target in flat build mode

Signed-off-by: xuxin19 <xuxin19@xiaomi.com>
2024-03-27 23:01:08 +08:00
zhangjun21 ce61e866c3 CMake:Duplicate definition of CMAKE_CXX_STANDARD
CMAKE_CXX_STANDARD is repeatedly defined in the two files, nuttx/CMakeLists(14) and libs/libxx/libcxx.cmake(17), and is defined to different values. Matter needs to use the new features(std::is_signed_v) of c++17,so delete the definition in nuttx/CMakeLists and retain the definition in libs/libxx/libcxx.cmake.

Signed-off-by: zhangjun21 <zhangjun21@xiaomi.com>
2024-03-25 13:57:44 +08:00
Yanfeng Liu ea8682572c build/cmake: add initial KERNEL mode support
Currently only FLAT mode development can enjoy cmake build system. This
patch tries to add initial kernel mode support. It can build NuttX kernel
and libproxies.a, the latter will be further checked though.

This can already help to build an AMP remote node image as it can share
userland apps living in the AMP master node.

Major changes:

- in top folder:
  - CMakeLists.txt    adjust for KERNEL mode, separate from PROTECTED mode.
- in `syscall`:
  - CMakeLists.txt    add mksyscall target for stubs/proxies generation
- in `syscall/stubs`:
  - CMakeLists.txt    use dependency to mksyscall
- in `syscall/proxies`:
  - CMakeLists.txt    use dependency to mksyscall
- in `arch`:
  - CMakeLists.txt    separate KERNEL from PROTECTED mode.
- in `arch/risc-v/src`:
  - CMakeLists.txt    separate from PROTECTED mode, add sub folders.
- in `arch/risc-v/common`:
  - CMakeLists.txt    add sources and sub-folders for KERNEL mode.
- in `arch/risc-v/k230`:
  - CMakeLists.txt    add sources for KERNEL mode.
- in `boards/risc-v/k230/canmv230/src`:
  - CMakeLists.txt    adjust k230 specific scripts for kernel mode.

New additions:

- in `arch/risc-v/src/nuttsbi/`           add CMakeLists.txt
- in `arch/risc-v/src/common/supervisor/` add CMakeLists.txt

Signed-off-by: Yanfeng Liu <yfliu2008@qq.com>
2024-03-15 16:21:23 +08:00
trns1997 54e9e582d5 Use C++ standard lib from toolchain
Signed-off-by: trns1997 <trns1997@gmail.com>
2024-03-06 08:42:44 +08:00
xuxin19 92987708ec cmake:adapt BOARD_CONFIG absolute paths and relative paths when reconfig
Define `NUTTX_DEFCONFIG` and `NUTTX_BOARD_ABS_DIR` instead of `BOARD_CONFIG`

when reconfiguring a custom configuration,
because ${BOARD_CONFIG} uses a relative path,
it will cause the following error:
CMake Error at CMakeLists.txt:134 (message)
  No config file found at

Signed-off-by: xuxin19 <xuxin19@xiaomi.com>
2024-02-23 18:15:56 -08:00
YAMAMOTO Takashi 6eb7aa04bd cmake: use -fvisibility=default for sim_head
So that macos build can find _main and _sim_doirq.
2024-01-06 04:21:52 -08:00
YAMAMOTO Takashi 595a0aa5fb cmake: Use CMAKE_LINKER to link nuttx.rel for macOS
Otherwise, it produces a lot of warnings like:
```
ld: warning: object file (/Users/yamamoto/git/nuttx/nuttx/build/libs/libxx/liblibcxx.a(d2s.cpp.o)) was built for newer macOS version (12.7) than being linked (12.0)
```
2024-01-06 04:21:52 -08:00
YAMAMOTO Takashi e0c4e292bf cmake: do not run objcopy for macOS
The mach-o support of objcopy is fragile at best and often results
in a broken output. It's better not to rely on it.
This matches what the non-cmake version does.
2024-01-06 04:21:52 -08:00
raiden00pl 267d039295 cmake: NUTTX_COMMON_DIR must be set after .config definitions are included
otherwise NUTTX_COMMON_DIR is empty if CONFIG_ARCH_BOARD_COMMON is set from menuconfig

Co-authored-by: hartmannathan <59230071+hartmannathan@users.noreply.github.com>
2023-12-12 16:48:08 -03:00
chao an a3eb42f469 cmake: split extra library from library group
Signed-off-by: chao an <anchao@xiaomi.com>
2023-12-06 07:56:17 -08:00
chao an fa943c11b3 cmake: correct cmake rule file name
The rule of cmake file name should be CMakeLists.txt not CMakeList.txt

Signed-off-by: chao an <anchao@xiaomi.com>
2023-10-21 11:00:27 +08:00
raiden00pl b90c6b5b20 cmake: raise error if previous make build was not cleaned
Uncleanded make build can cause various cmake errors.
It's better to stop cmake build early and display an error.
2023-10-02 23:35:19 +08:00
xuxin19 10f32910a9 cmake:new feature on enhance apps header cmake module
`nuttx_export_header` for applications global header file export
`nuttx_add_dependencies` is the wrapper to use import

Signed-off-by: xuxin19 <xuxin19@xiaomi.com>
2023-08-17 13:10:15 +08:00
chao an dc6f1406d1 tools/ci: migrate some ci build configurations to CMake
Signed-off-by: chao an <anchao@xiaomi.com>
2023-07-15 23:32:36 +08:00
raiden00pl 73e5b9405f cmake: avoid warning about DOWNLOAD_EXTRACT_TIMESTAMP in CMake 3.24 2023-07-13 23:49:02 +03:00
chao an 73a06a4975 cmake/win32: set default LINK_STACKSIZE to avoid stack overflow
Signed-off-by: chao an <anchao@xiaomi.com>
2023-07-14 02:05:58 +08:00
raiden00pl a59f82b8d2 cmake: support pre-processor for linker script 2023-07-13 03:05:39 +08:00
raiden00pl 1f641fd63b cmake: fix NUTTX_COMMON_DIR definition 2023-07-12 01:01:19 +08:00
raiden00pl 2115679db3 cmake: add missing crypto 2023-07-10 22:24:44 +08:00
raiden00pl 88e01fd335 cmake: define NUTTX_COMMON_DIR 2023-07-10 22:24:44 +08:00
chao an de7132c697 cmake/sched: fix build break based on mainline
Signed-off-by: chao an <anchao@xiaomi.com>
2023-07-10 13:26:21 +08:00
chao an 6ee9ec7656 build: add initial cmake build system
1. Update all CMakeLists.txt to adapt to new layout
2. Fix cmake build break
3. Update all new file license
4. Fully compatible with current compilation environment(use configure.sh or cmake as you choose)

------------------

How to test

From within nuttx/. Configure:

cmake -B build -DBOARD_CONFIG=sim/nsh -GNinja
cmake -B build -DBOARD_CONFIG=sim:nsh -GNinja
cmake -B build -DBOARD_CONFIG=sabre-6quad/smp -GNinja
cmake -B build -DBOARD_CONFIG=lm3s6965-ek/qemu-flat -GNinja

(or full path in custom board) :
cmake -B build -DBOARD_CONFIG=$PWD/boards/sim/sim/sim/configs/nsh -GNinja

This uses ninja generator (install with sudo apt install ninja-build). To build:

$ cmake --build build

menuconfig:

$ cmake --build build -t menuconfig

--------------------------

2. cmake/build: reformat the cmake style by cmake-format

https://github.com/cheshirekow/cmake_format

$ pip install cmakelang

$ for i in `find -name CMakeLists.txt`;do cmake-format $i -o $i;done
$ for i in `find -name *\.cmake`;do cmake-format $i -o $i;done

Co-authored-by: Matias N <matias@protobits.dev>
Signed-off-by: chao an <anchao@xiaomi.com>
2023-07-08 13:50:48 +08:00