summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhathach <[email protected]>2023-04-24 11:54:58 +0700
committerhathach <[email protected]>2023-04-24 11:54:58 +0700
commit5254202b203ee58e2fdb319c85e2ae1a87518140 (patch)
tree94e6f9d9d0f71b1496e55af6ad01dbcd61ad909a
parent9858d45815ca5dec16b267d3c795e42b5084e394 (diff)
minor update
-rw-r--r--cmake/toolchain/arm_gcc.cmake35
-rw-r--r--cmake/toolchain/set_flags.cmake36
-rw-r--r--hw/bsp/imxrt/family.cmake4
-rw-r--r--src/CMakeLists.txt50
4 files changed, 83 insertions, 42 deletions
diff --git a/cmake/toolchain/arm_gcc.cmake b/cmake/toolchain/arm_gcc.cmake
index 44683118e..c5937192e 100644
--- a/cmake/toolchain/arm_gcc.cmake
+++ b/cmake/toolchain/arm_gcc.cmake
@@ -16,4 +16,39 @@ set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES CMAKE_SYSTEM_PROCESSOR)
include(${CMAKE_CURRENT_LIST_DIR}/../cpu/${CMAKE_SYSTEM_PROCESSOR}.cmake)
+
+# enable all possible warnings for building examples
+list(APPEND TOOLCHAIN_COMMON_FLAGS
+ -fdata-sections
+ -ffunction-sections
+ -fsingle-precision-constant
+ -fno-strict-aliasing
+ )
+
+set(TOOLCHAIN_WARNING_FLAGS
+ -Wall
+ -Wextra
+ -Werror
+ -Wfatal-errors
+ -Wdouble-promotion
+ -Wstrict-prototypes
+ -Wstrict-overflow
+ -Werror-implicit-function-declaration
+ -Wfloat-equal
+ -Wundef
+ -Wshadow
+ -Wwrite-strings
+ -Wsign-compare
+ -Wmissing-format-attribute
+ -Wunreachable-code
+ -Wcast-align
+ -Wcast-function-type
+ -Wcast-qual
+ -Wnull-dereference
+ -Wuninitialized
+ -Wunused
+ -Wreturn-type
+ -Wredundant-decls
+ )
+
include(${CMAKE_CURRENT_LIST_DIR}/set_flags.cmake)
diff --git a/cmake/toolchain/set_flags.cmake b/cmake/toolchain/set_flags.cmake
index e6c7b6feb..da381c254 100644
--- a/cmake/toolchain/set_flags.cmake
+++ b/cmake/toolchain/set_flags.cmake
@@ -1,22 +1,20 @@
-get_property(IS_IN_TRY_COMPILE GLOBAL PROPERTY IN_TRY_COMPILE)
-
-# join the toolchain flags into a single string
-list(JOIN TOOLCHAIN_COMMON_FLAGS " " TOOLCHAIN_COMMON_FLAGS)
-
+include(CMakePrintHelpers)
foreach(LANG IN ITEMS C CXX ASM)
- set(CMAKE_${LANG}_FLAGS_INIT "${TOOLCHAIN_COMMON_FLAGS}")
- if (PICO_DEOPTIMIZED_DEBUG)
- set(CMAKE_${LANG}_FLAGS_DEBUG_INIT "-O0")
- else()
- set(CMAKE_${LANG}_FLAGS_DEBUG_INIT "-Og")
- endif()
- set(CMAKE_${LANG}_LINK_FLAGS "-Wl,--build-id=none")
+ # join the toolchain flags into a single string
+ list(APPEND TOOLCHAIN_${LANG}_FLAGS ${TOOLCHAIN_COMMON_FLAGS})
+ list(JOIN TOOLCHAIN_${LANG}_FLAGS " " TOOLCHAIN_${LANG}_FLAGS)
+ set(CMAKE_${LANG}_FLAGS_INIT "${TOOLCHAIN_${LANG}_FLAGS}")
- # try_compile is where the feature testing is done, and at that point,
- # pico_standard_link is not ready to be linked in to provide essential
- # functions like _exit. So pass -nostdlib so it doesn't link in an exit()
- # function at all.
- if(IS_IN_TRY_COMPILE)
- set(CMAKE_${LANG}_LINK_FLAGS "${CMAKE_${LANG}_LINK_FLAGS} -nostdlib")
- endif()
+ #cmake_print_variables(CMAKE_${LANG}_FLAGS_INIT)
+
+ # optimization flags
+ set(CMAKE_${LANG}_FLAGS_DEBUG_INIT "-Og")
endforeach()
+
+# try_compile is cmake test compiling its own example,
+# pass -nostdlib to skip stdlib linking
+get_property(IS_IN_TRY_COMPILE GLOBAL PROPERTY IN_TRY_COMPILE)
+if(IS_IN_TRY_COMPILE)
+ set(CMAKE_C_LINK_FLAGS "${CMAKE_C_LINK_FLAGS} -nostdlib")
+ set(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -nostdlib")
+endif()
diff --git a/hw/bsp/imxrt/family.cmake b/hw/bsp/imxrt/family.cmake
index 40b8ab974..e36adaf5a 100644
--- a/hw/bsp/imxrt/family.cmake
+++ b/hw/bsp/imxrt/family.cmake
@@ -19,8 +19,6 @@ function(family_configure_target TARGET)
include(${CMAKE_CURRENT_FUNCTION_LIST_DIR}/boards/${BOARD}/board.cmake)
- cmake_print_variables(TOP CMAKE_CURRENT_FUNCTION_LIST_DIR)
-
target_compile_definitions(${TARGET} PUBLIC
CFG_TUSB_MCU=OPT_MCU_MIMXRT
__ARMVFP__=0
@@ -77,6 +75,8 @@ function(family_configure_target TARGET)
# include tinyusb cmake
include(${TOP}/src/CMakeLists.txt)
+ add_tinyusb(${TARGET})
+
endfunction()
function(family_add_freertos_config TARGET)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index ade4c2c85..00755df95 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,25 +1,33 @@
# cmake_minimum_required(VERSION 3.17)
# TODO make tinyusb as library that depends on 'tusb_config' interface that exposes the tusb_config.h file
-target_sources(${PROJECT} PUBLIC
- ${CMAKE_CURRENT_LIST_DIR}/tusb.c
- ${CMAKE_CURRENT_LIST_DIR}/common/tusb_fifo.c
- ${CMAKE_CURRENT_LIST_DIR}/device/usbd.c
- ${CMAKE_CURRENT_LIST_DIR}/device/usbd_control.c
- ${CMAKE_CURRENT_LIST_DIR}/class/audio/audio_device.c
- ${CMAKE_CURRENT_LIST_DIR}/class/cdc/cdc_device.c
- ${CMAKE_CURRENT_LIST_DIR}/class/dfu/dfu_device.c
- ${CMAKE_CURRENT_LIST_DIR}/class/dfu/dfu_rt_device.c
- ${CMAKE_CURRENT_LIST_DIR}/class/hid/hid_device.c
- ${CMAKE_CURRENT_LIST_DIR}/class/midi/midi_device.c
- ${CMAKE_CURRENT_LIST_DIR}/class/msc/msc_device.c
- ${CMAKE_CURRENT_LIST_DIR}/class/net/ecm_rndis_device.c
- ${CMAKE_CURRENT_LIST_DIR}/class/net/ncm_device.c
- ${CMAKE_CURRENT_LIST_DIR}/class/usbtmc/usbtmc_device.c
- ${CMAKE_CURRENT_LIST_DIR}/class/vendor/vendor_device.c
- ${CMAKE_CURRENT_LIST_DIR}/class/video/video_device.c
- )
+function(add_tinyusb TARGET)
+ target_sources(${TARGET} PUBLIC
+ ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/tusb.c
+ ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/common/tusb_fifo.c
+ ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/device/usbd.c
+ ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/device/usbd_control.c
+ ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/class/audio/audio_device.c
+ ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/class/cdc/cdc_device.c
+ ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/class/dfu/dfu_device.c
+ ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/class/dfu/dfu_rt_device.c
+ ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/class/hid/hid_device.c
+ ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/class/midi/midi_device.c
+ ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/class/msc/msc_device.c
+ ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/class/net/ecm_rndis_device.c
+ ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/class/net/ncm_device.c
+ ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/class/usbtmc/usbtmc_device.c
+ ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/class/vendor/vendor_device.c
+ ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/class/video/video_device.c
+ )
-target_include_directories(${PROJECT} PUBLIC
- ${CMAKE_CURRENT_LIST_DIR}
- )
+ target_include_directories(${TARGET} PUBLIC
+ ${CMAKE_CURRENT_FUNCTION_LIST_DIR}
+ )
+
+ # enable all possible warnings
+ target_compile_options(${TARGET} PUBLIC
+
+ )
+
+endfunction()