--- /dev/null
+set(CMAKE_SYSTEM_NAME Generic)
+set(CMAKE_SYSTEM_PROCESSOR arm)
+
+set(TOOLCHAIN_NAME gcc-arm-none-eabi)
+set(TOOLCHAIN_SHORT_NAME gcc)
+
+set(TRAIT_GCC 1)
+
+set(CMAKE_C_FLAGS "-std=c11" CACHE STRING "")
+set(CMAKE_CXX_FLAGS "-std=c++11" CACHE STRING "")
+
+set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
+
+set(PRESIDENTE_TOOLDISK_ROOT ${CMAKE_CURRENT_LIST_DIR}/..)
+
+set(PRESIDENTE_TOOLCHAIN_ROOT "${PRESIDENTE_TOOLDISK_ROOT}/gcc-arm-none-eabi")
+set(PRESIDENTE_TOOLCHAIN_BIN_PATH "${PRESIDENTE_TOOLCHAIN_ROOT}/bin")
+set(CMAKE_ASM_COMPILER ${PRESIDENTE_TOOLCHAIN_BIN_PATH}/arm-none-eabi-as.exe)
+set(CMAKE_C_COMPILER ${PRESIDENTE_TOOLCHAIN_BIN_PATH}/arm-none-eabi-gcc.exe)
+set(CMAKE_CXX_COMPILER ${PRESIDENTE_TOOLCHAIN_BIN_PATH}/arm-none-eabi-g++.exe)
+set(CMAKE_LINKER ${PRESIDENTE_TOOLCHAIN_BIN_PATH}/arm-none-eabi-g++.exe)
+set(PRESIDENTE_TOOLCHAIN_DEBUGGER ${PRESIDENTE_TOOLCHAIN_BIN_PATH}/arm-none-eabi-gdb.exe)
+set(TOOLCHAIN_SIZE_REPORTER ${PRESIDENTE_TOOLCHAIN_BIN_PATH}/arm-none-eabi-size.exe)
+set(TOOLCHAIN_NM ${PRESIDENTE_TOOLCHAIN_BIN_PATH}/arm-none-eabi-nm.exe)
+set(TOOLCHAIN_OBJCOPY ${PRESIDENTE_TOOLCHAIN_BIN_PATH}/arm-none-eabi-objcopy.exe)
+
+set(TOOLCHAIN_INCLUDE_PATHS "${PRESIDENTE_TOOLCHAIN_ROOT}/arm-none-eabi/include/c++/7.2.1"
+ "${PRESIDENTE_TOOLCHAIN_ROOT}/arm-none-eabi/include"
+ "${PRESIDENTE_TOOLCHAIN_ROOT}/arm-none-eabi/include/c++/7.2.1/arm-none-eabi"
+ "${PRESIDENTE_TOOLCHAIN_ROOT}/arm-none-eabi/include/c++/7.2.1/backward"
+ "${PRESIDENTE_TOOLCHAIN_ROOT}/lib/gcc/arm-none-eabi/7.2.1/include"
+ "${PRESIDENTE_TOOLCHAIN_ROOT}/lib/gcc/arm-none-eabi/7.2.1/include-fixed")
+
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)
+
+set(BUILD_SHARED_LIBS OFF)
\ No newline at end of file
--- /dev/null
+set(MODULE4G_COMPILER_FLAGS_DEBUG -ggdb
+ -g3
+ -O0
+ -Wall
+ -Wextra
+ -Warray-bounds
+ -mcpu=cortex-m4
+ -mthumb
+ -mlittle-endian
+ -mfloat-abi=hard
+ -mfpu=fpv4-sp-d16
+ -specs=${FWB_SPECS_NAME}
+ -specs=nosys.specs
+ -DSTM32WB55xx
+ -DDEBUG=1
+ -DSYSVIEW_DEVICE_NAME=\"STM32WB55\"
+ -DSYSVIEW_RAM_BASE=0x20000000
+ -D__ARM_ARCH_FPV4_SP_D16__
+ -D__ARM_ARCH_7EM__
+ -D__SIZEOF_WCHAR_T=4
+ -ffunction-sections
+ -fdata-sections
+ -fno-exceptions
+ -fno-unwind-tables
+ -DENABLE_WATCHDOG
+ #ONLY FOR TEMPORARY NETWORK VERIFICATION
+ -DTHINGSTREAM_DEBUG
+ #ONLY FOR TESTS PURPOSES TO PRINT LOGS ON SERIAL -DREALTIME_LOGGING
+ -DREALTIME_LOGGING
+ #ONLY FOR TESTS PURPOSES TO PRINT POWER MANAGEMENT MEASUREMENTS ON SERIAL
+ -DTRACE_PWR_MGMT_MEASUREMENTS
+ #USE FLAG BELOW ONLY WHEN DEBUGGER IS CONNECTED TO TARGET
+ -DENABLE_DEBUG_IN_SLEEP
+ )
+
+set(FWB_COMPILER_FLAGS_RELEASE -O3
+ -s
+ -Wall
+ -Wextra
+ -Warray-bounds
+ -mcpu=cortex-m4
+ -mthumb
+ -mlittle-endian
+ -mfloat-abi=hard
+ -mfpu=fpv4-sp-d16
+ -specs=${FWB_SPECS_NAME}
+ -specs=nosys.specs
+ -DSTM32WB55xx
+ -DNDEBUG
+ -DSYSVIEW_DEVICE_NAME=\"STM32WB55\"
+ -DSYSVIEW_RAM_BASE=0x20000000
+ -D__ARM_ARCH_FPV4_SP_D16__
+ -D__ARM_ARCH_7EM__
+ -D__SIZEOF_WCHAR_T=4
+ -ffunction-sections
+ -fdata-sections
+ -fno-exceptions
+ -fno-unwind-tables
+ -DENABLE_WATCHDOG
+ )
+
+set(FWB_COMPILER_DEFS_DEBUG
+ ${FWB_BOARD_COMPILATION_FLAGS}
+ FWB_TRAIT_DEBUG
+ )
+
+set(FWB_COMPILER_DEFS_RELEASE
+ ${FWB_BOARD_COMPILATION_FLAGS}
+ )
+
+set(FWB_LINKER_SCRIPT_PATH ${CMAKE_SOURCE_DIR}/linker/gcc/stm32wb55xx_flash_cm4.ld)
+
+
+set(LINKER_FLAGS
+ --no-exceptions
+ -Wl,--gc-sections
+ -Wl,-Map,./output/${FWB_PROJECT_NAME}.map
+ -T ${FWB_LINKER_SCRIPT_PATH}
+ )
--- /dev/null
+function(FWB_MAKE_PROJECT_REPORT)
+ STRING(APPEND PROJECT_REPORT "Project report for ${MODULE4G_PROJECT_NAME}\n")
+ # STRING(APPEND PROJECT_REPORT "Selected device : ${MODULE4G_TRAIT_DEVICENAME}\n")
+ # STRING(APPEND PROJECT_REPORT "Selected device : ${MODULE4G_TRAIT_DEVICENAME}\n")
+ FILE(WRITE ${CMAKE_BINARY_DIR}/build_report.txt ${PROJECT_REPORT})
+endfunction()
+
+macro(build_linker_flags_string output_var_name)
+ foreach(flag_set IN ITEMS ${ARGN})
+ foreach(flag IN ITEMS ${flag_set})
+ string(APPEND ${output_var_name} ${flag} " ")
+ endforeach()
+ endforeach()
+endmacro()