External library compiles, but linking

I'm using Windows 11, WSL2, VSCode extension, NCS v2.

I am trying to build an application against a library which is outside the application folder.  It seems to compile correctly, but linking isn't working.  Can you tell me how to set up my build environment to get this to work?

Here is the folder structure.  The git/app/BikeControlBoard folder is the application.  The git/lib is the library root folder.  There are many sub-directories of the git/lib folder.

git
├── README.md
├── app
│   └── BikeControlBoard
│       ├── CMakeLists.txt
│       ├── app.overlay
│       ├── prj.conf
│       └── src
│           ├── main.cpp
│           └── test.h
├── lib
│   ├── CMakeLists.txt
│   ├── Kconfig
│   ├── app
│   │   ├── App.h
│   │   ├── Application.h
│   │   └── CMakeLists.txt
│   ├── ble
│   │   ├── ...
│   │   └── CMakeLists.txt
│   ├── ...
│   └── zephyr
│       └── module.yml

The git/app/BikeControlBoard/CMakeLists.txt is this:

cmake_minimum_required(VERSION 3.20.0)
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})

add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../../lib build)

project(app)

target_sources(app PRIVATE
    src/main.cpp
)

The git/lib/CMakeLists.txt is this:

add_subdirectory(app)
add_subdirectory(ble)
#...

zephyr_include_directories(.)

file(GLOB lib_sources *.cpp)
if (lib_sources)
  zephyr_library()
  zephyr_library_sources(
    ${lib_sources}
  )
endif()

The git/lib/app/CMakeLists.txt, and all other sub-directories of git/lib, is this:

zephyr_include_directories(.)
file(GLOB lib_sources *.cpp)
if (lib_sources)
  zephyr_library()
  zephyr_library_sources(
    ${lib_sources}
  )
endif()

The full build log is this:

 *  Executing task: nRF Connect: Build [pristine]: BikeControlBoard/build (active) 

Building BikeControlBoard
west build --build-dir /home/doug/git/nRF52/app/BikeControlBoard/build /home/doug/git/nRF52/app/BikeControlBoard --pristine --board adafruit_feather_nrf52840 -- -DNCS_TOOLCHAIN_VERSION:STRING="NONE" -DCONFIG_DEBUG_OPTIMIZATIONS:STRING="y" -DCONFIG_DEBUG_THREAD_INFO:STRING="y" -DDTC_OVERLAY_FILE:STRING="/home/doug/git/nRF52/app/BikeControlBoard/app.overlay" -DCONF_FILE:STRING="/home/doug/git/nRF52/app/BikeControlBoard/prj.conf"

-- west build: generating a build system
Loading Zephyr default modules (Zephyr base).
-- Application: /home/doug/git/nRF52/app/BikeControlBoard
-- Found Python3: /home/doug/ncs/toolchains/v2.0.0/usr/local/bin/python3.8 (found suitable exact version "3.8.2") found components: Interpreter 
-- Cache files will be written to: /home/doug/.cache/zephyr
-- Zephyr version: 3.0.99 (/home/doug/ncs/v2.0.0/zephyr)
-- Found west (found suitable version "0.13.1", minimum required is "0.7.1")
-- Board: adafruit_feather_nrf52840
-- Found host-tools: zephyr 0.14.1 (/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk)
-- Found dtc: /home/doug/ncs/toolchains/v2.0.0/usr/bin/dtc (found suitable version "1.4.7", minimum required is "1.4.6")
-- Found toolchain: zephyr 0.14.1 (/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk)
-- Found BOARD.dts: /home/doug/ncs/v2.0.0/zephyr/boards/arm/adafruit_feather_nrf52840/adafruit_feather_nrf52840.dts
-- Found devicetree overlay: /home/doug/git/nRF52/app/BikeControlBoard/app.overlay
-- Generated zephyr.dts: /home/doug/git/nRF52/app/BikeControlBoard/build/zephyr/zephyr.dts
-- Generated devicetree_unfixed.h: /home/doug/git/nRF52/app/BikeControlBoard/build/zephyr/include/generated/devicetree_unfixed.h
-- Generated device_extern.h: /home/doug/git/nRF52/app/BikeControlBoard/build/zephyr/include/generated/device_extern.h
-- Including generated dts.cmake file: /home/doug/git/nRF52/app/BikeControlBoard/build/zephyr/dts.cmake
Parsing /home/doug/ncs/v2.0.0/zephyr/Kconfig
Loaded configuration '/home/doug/ncs/v2.0.0/zephyr/boards/arm/adafruit_feather_nrf52840/adafruit_feather_nrf52840_defconfig'
Merged configuration '/home/doug/git/nRF52/app/BikeControlBoard/prj.conf'
Merged configuration '/home/doug/git/nRF52/app/BikeControlBoard/build/zephyr/misc/generated/extra_kconfig_options.conf'
Configuration saved to '/home/doug/git/nRF52/app/BikeControlBoard/build/zephyr/.config'
Kconfig header saved to '/home/doug/git/nRF52/app/BikeControlBoard/build/zephyr/include/generated/autoconf.h'
-- The C compiler identification is GNU 10.3.0
-- The CXX compiler identification is GNU 10.3.0
-- The ASM compiler identification is GNU
-- Found assembler: /home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc
CMake Warning at /home/doug/ncs/v2.0.0/zephyr/subsys/bluetooth/host/CMakeLists.txt:103 (message):
  CONFIG_BT_FIXED_PASSKEY is enabled

    A fixed passkey is easy to deduce during the pairing procedure, do not use in
    production.


CMake Warning at /home/doug/ncs/v2.0.0/zephyr/subsys/usb/device/CMakeLists.txt:22 (message):
  CONFIG_USB_DEVICE_VID has default value 0x2FE3.

  This value is only for testing and MUST be configured for USB products.


CMake Warning at /home/doug/ncs/v2.0.0/zephyr/CMakeLists.txt:1803 (message):
  __ASSERT() statements are globally ENABLED


-- Configuring done
-- Generating done
-- Build files have been written to: /home/doug/git/nRF52/app/BikeControlBoard/build
-- west build: building application
[1/282] Preparing syscall dependency handling

[2/282] Generating include/generated/version.h
-- Zephyr version: 3.0.99 (/home/doug/ncs/v2.0.0/zephyr), build: v3.0.99-ncs1
[3/282] Generating misc/generated/syscalls_subdirs.trigger
[4/282] Generating misc/generated/syscalls.json, misc/generated/struct_tags.json
[5/282] Generating include/generated/syscall_dispatch.c, include/generated/syscall_list.h
[6/282] Generating include/generated/kobj-types-enum.h, include/generated/otype-to-str.h, include/generated/otype-to-size.h
[7/282] Generating include/generated/driver-validation.h
[8/282] Building C object zephyr/CMakeFiles/offsets.dir/arch/arm/core/offsets/offsets.c.obj
[9/282] Generating include/generated/offsets.h
[10/282] Building CXX object build/peripheral/CMakeFiles/..__..__..__git__nRF52__lib__peripheral.dir/Pin.cpp.obj
[11/282] Building CXX object build/mpsl/CMakeFiles/..__..__..__git__nRF52__lib__mpsl.dir/MpslSession.cpp.obj
[12/282] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/cbprintf_packaged.c.obj
[13/282] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/crc32c_sw.c.obj
[14/282] Building CXX object CMakeFiles/app.dir/src/main.cpp.obj
[15/282] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/cbprintf.c.obj
[16/282] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/crc32_sw.c.obj
[17/282] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/crc16_sw.c.obj
[18/282] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/crc8_sw.c.obj
[19/282] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/dec.c.obj
[20/282] Building CXX object build/service/CMakeFiles/..__..__..__git__nRF52__lib__service.dir/Shell.cpp.obj
[21/282] Building CXX object build/mpsl/CMakeFiles/..__..__..__git__nRF52__lib__mpsl.dir/MPSL.cpp.obj
[22/282] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/notify.c.obj
[23/282] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/fdtable.c.obj
[24/282] Building CXX object build/ble/CMakeFiles/..__..__..__git__nRF52__lib__ble.dir/BleScanner.cpp.obj
[25/282] Building CXX object build/evm/CMakeFiles/..__..__..__git__nRF52__lib__evm.dir/Evm.cpp.obj
[26/282] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/crc7_sw.c.obj
[27/282] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/hex.c.obj
[28/282] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/printk.c.obj
[29/282] Building CXX object build/ble/CMakeFiles/..__..__..__git__nRF52__lib__ble.dir/Ble.cpp.obj
[30/282] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/onoff.c.obj
[31/282] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/rb.c.obj
[32/282] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/timeutil.c.obj
[33/282] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/multi_heap.c.obj
[34/282] Building CXX object build/evm/CMakeFiles/..__..__..__git__nRF52__lib__evm.dir/TimedEventHandler.cpp.obj
[35/282] Linking CXX static library app/libapp.a
[36/282] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/heap-validate.c.obj
[37/282] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/cbprintf_complete.c.obj
[38/282] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/sem.c.obj
[39/282] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/thread_entry.c.obj
[40/282] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/bitarray.c.obj
[41/282] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/ring_buffer.c.obj
[42/282] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/heap.c.obj
[43/282] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/assert.c.obj
[44/282] Building C object zephyr/CMakeFiles/zephyr.dir/lib/util/fnmatch/fnmatch.c.obj
[45/282] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/mpsc_pbuf.c.obj
[46/282] Building C object zephyr/CMakeFiles/zephyr.dir/misc/generated/configs.c.obj
[47/282] Building ASM object zephyr/CMakeFiles/zephyr.dir/soc/arm/nordic_nrf/common/soc_nrf_common.S.obj
[48/282] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/reboot.c.obj
[49/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/logging/log_list.c.obj
[50/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/debug/thread_info.c.obj
[51/282] Building C object zephyr/CMakeFiles/zephyr.dir/soc/arm/nordic_nrf/validate_enabled_instances.c.obj
[52/282] Building CXX object build/service/CMakeFiles/..__..__..__git__nRF52__lib__service.dir/Log.cpp.obj
[53/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/logging/log_core.c.obj
[54/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/logging/log_msg.c.obj
[55/282] Building C object zephyr/CMakeFiles/zephyr.dir/soc/arm/nordic_nrf/validate_base_addresses.c.obj
[56/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/logging/log_output.c.obj
[57/282] Building CXX object build/service/CMakeFiles/..__..__..__git__nRF52__lib__service.dir/Work.cpp.obj
[58/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/logging/log_msg2.c.obj
[59/282] Building CXX object build/peripheral/CMakeFiles/..__..__..__git__nRF52__lib__peripheral.dir/PAL.cpp.obj
/home/doug/git/nRF52/lib/peripheral/PAL.cpp:15:13: warning: 'void approtect_hw_disable()' defined but not used [-Wunused-function]
   15 | static void approtect_hw_disable(void)
      |             ^~~~~~~~~~~~~~~~~~~~
[60/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/logging/log_mgmt.c.obj
[61/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/shell/backends/shell_uart.c.obj
[62/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/logging/log_backend_swo.c.obj
[63/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/shell/shell.c.obj
[64/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/shell/modules/device_service.c.obj
[65/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/logging/log_cmds.c.obj
[66/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/shell/modules/kernel_service.c.obj
[67/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/shell/modules/devmem_service.c.obj
[68/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/shell/shell_fprintf.c.obj
[69/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/shell/shell_utils.c.obj
[70/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/shell/shell_ops.c.obj
[71/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/cpp/cpp_init_array.c.obj
[72/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/cpp/cpp_init.c.obj
[73/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/cpp/cpp_dtors.c.obj
[74/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/shell/shell_help.c.obj
[75/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/shell/shell_log_backend.c.obj
[76/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/shell/shell_cmds.c.obj
[77/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/shell/shell_history.c.obj
[78/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/shell/shell_wildcard.c.obj
[79/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/cpp/cpp_ctors.c.obj
[80/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/net/lib/utils/addr_utils.c.obj
[81/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/disk/disk_access.c.obj
[82/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/fs/nvs/nvs.c.obj
[83/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/usb/device/usb_device.c.obj
[84/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/usb/device/class/msc.c.obj
[85/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/usb/device/usb_descriptor.c.obj
[86/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/storage/flash_map/flash_map.c.obj
[87/282] Building CXX object build/utl/CMakeFiles/..__..__..__git__nRF52__lib__utl.dir/Timeline.cpp.obj
[88/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/usb/device/usb_transfer.c.obj
[89/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/storage/flash_map/flash_map_default.c.obj
[90/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/storage/flash_map/flash_map_layout.c.obj
[91/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/settings/src/settings_store.c.obj
[92/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/tracing/tracing_none.c.obj
[93/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/settings/src/settings.c.obj
[94/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/settings/src/settings_nvs.c.obj
[95/282] Building C object zephyr/CMakeFiles/zephyr.dir/home/doug/ncs/v2.0.0/modules/crypto/tinycrypt/lib/source/aes_decrypt.c.obj
[96/282] Building C object zephyr/CMakeFiles/zephyr.dir/home/doug/ncs/v2.0.0/modules/crypto/tinycrypt/lib/source/utils.c.obj
[97/282] Building C object zephyr/CMakeFiles/zephyr.dir/home/doug/ncs/v2.0.0/modules/crypto/tinycrypt/lib/source/aes_encrypt.c.obj
[98/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/settings/src/settings_init.c.obj
[99/282] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/settings/src/settings_line.c.obj
[100/282] Building C object zephyr/CMakeFiles/zephyr.dir/home/doug/ncs/v2.0.0/modules/crypto/tinycrypt/lib/source/cmac_mode.c.obj
[101/282] Building ASM object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/cpu_idle.S.obj
[102/282] Building C object zephyr/CMakeFiles/zephyr.dir/home/doug/ncs/v2.0.0/nrfxlib/crypto/nrf_cc310_platform/src/nrf_cc3xx_platform_abort_zephyr.c.obj
[103/282] Building C object zephyr/CMakeFiles/zephyr.dir/home/doug/ncs/v2.0.0/nrfxlib/crypto/nrf_cc310_platform/src/nrf_cc3xx_platform_mutex_zephyr.c.obj
[104/282] Building C object zephyr/arch/common/CMakeFiles/isr_tables.dir/isr_tables.c.obj
[105/282] Building C object zephyr/arch/common/CMakeFiles/arch__common.dir/sw_isr_common.c.obj
[106/282] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/fatal.c.obj
[107/282] Building ASM object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/nmi_on_reset.S.obj
[108/282] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/irq_manage.c.obj
[109/282] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/nmi.c.obj
[110/282] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/prep_c.c.obj
[111/282] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/swap.c.obj
[112/282] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/thread.c.obj
[113/282] Building ASM object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/swap_helper.S.obj
[114/282] Building ASM object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/isr_wrapper.S.obj
[115/282] Linking C static library zephyr/arch/common/libisr_tables.a
[116/282] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/__aeabi_atexit.c.obj
[117/282] Building ASM object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/exc_exit.S.obj
[118/282] Building ASM object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/fault_s.S.obj
[119/282] Generating linker_zephyr_pre0.cmd
[120/282] Generating linker_zephyr_pre1.cmd
[121/282] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/fault.c.obj
[122/282] Building ASM object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/vector_table.S.obj
[123/282] Building ASM object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/reset.S.obj
[124/282] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/scb.c.obj
[125/282] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/thread_abort.c.obj
[126/282] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/fpu.c.obj
[127/282] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/irq_init.c.obj
[128/282] Linking C static library zephyr/libzephyr.a
[129/282] Linking C static library zephyr/arch/arch/arm/core/aarch32/libarch__arm__core__aarch32.a
[130/282] Building C object zephyr/arch/arch/arm/core/aarch32/mpu/CMakeFiles/arch__arm__core__aarch32__mpu.dir/arm_core_mpu.c.obj
[131/282] Building C object zephyr/arch/arch/arm/core/aarch32/mpu/CMakeFiles/arch__arm__core__aarch32__mpu.dir/arm_mpu.c.obj
[132/282] Building C object zephyr/CMakeFiles/zephyr_pre0.dir/misc/empty_file.c.obj
[133/282] Linking C static library zephyr/arch/common/libarch__common.a
[134/282] Building C object zephyr/lib/libc/newlib/CMakeFiles/lib__libc__newlib.dir/libc-hooks.c.obj
[135/282] Building C object zephyr/lib/posix/CMakeFiles/lib__posix.dir/pthread_common.c.obj
[136/282] Building C object zephyr/lib/posix/CMakeFiles/lib__posix.dir/nanosleep.c.obj
[137/282] Building C object zephyr/soc/arm/nordic_nrf/nrf52/CMakeFiles/soc__arm__nordic_nrf__nrf52.dir/soc.c.obj
[138/282] Building C object zephyr/subsys/bluetooth/common/CMakeFiles/subsys__bluetooth__common.dir/dummy.c.obj
[139/282] Building C object zephyr/subsys/bluetooth/host/CMakeFiles/subsys__bluetooth__host.dir/uuid.c.obj
[140/282] Building C object zephyr/drivers/console/CMakeFiles/drivers__console.dir/uart_console.c.obj
[141/282] Building C object zephyr/subsys/bluetooth/common/CMakeFiles/subsys__bluetooth__common.dir/log.c.obj
[142/282] Building C object zephyr/subsys/bluetooth/host/CMakeFiles/subsys__bluetooth__host.dir/addr.c.obj
[143/282] Building C object zephyr/soc/arm/common/cortex_m/CMakeFiles/soc__arm__common__cortex_m.dir/arm_mpu_regions.c.obj
[144/282] Building C object zephyr/subsys/bluetooth/common/CMakeFiles/subsys__bluetooth__common.dir/rpa.c.obj
[145/282] Linking C static library zephyr/arch/arch/arm/core/aarch32/mpu/libarch__arm__core__aarch32__mpu.a
[146/282] Linking C static library zephyr/arch/arch/arm/core/aarch32/cortex_m/libarch__arm__core__aarch32__cortex_m.a
[147/282] Building C object zephyr/subsys/bluetooth/host/CMakeFiles/subsys__bluetooth__host.dir/settings.c.obj
[148/282] Building C object zephyr/subsys/bluetooth/host/CMakeFiles/subsys__bluetooth__host.dir/hci_core.c.obj
[149/282] Linking C static library zephyr/lib/libc/newlib/liblib__libc__newlib.a
[150/282] Linking C static library zephyr/soc/arm/nordic_nrf/nrf52/libsoc__arm__nordic_nrf__nrf52.a
[151/282] Building C object zephyr/subsys/bluetooth/host/CMakeFiles/subsys__bluetooth__host.dir/buf.c.obj
[152/282] Linking C static library zephyr/lib/posix/liblib__posix.a
[153/282] Building C object zephyr/subsys/bluetooth/host/CMakeFiles/subsys__bluetooth__host.dir/hci_common.c.obj
[154/282] Linking C static library zephyr/drivers/console/libdrivers__console.a
[155/282] Building C object zephyr/subsys/bluetooth/host/CMakeFiles/subsys__bluetooth__host.dir/id.c.obj
[156/282] Linking C static library zephyr/soc/arm/common/cortex_m/libsoc__arm__common__cortex_m.a
[157/282] Building C object zephyr/subsys/bluetooth/host/CMakeFiles/subsys__bluetooth__host.dir/adv.c.obj
[158/282] Linking C static library zephyr/subsys/bluetooth/common/libsubsys__bluetooth__common.a
[159/282] Building C object zephyr/subsys/bluetooth/host/CMakeFiles/subsys__bluetooth__host.dir/scan.c.obj
[160/282] Building C object zephyr/subsys/bluetooth/host/CMakeFiles/subsys__bluetooth__host.dir/conn.c.obj
[161/282] Building C object zephyr/subsys/bluetooth/host/CMakeFiles/subsys__bluetooth__host.dir/l2cap.c.obj
[162/282] Building C object zephyr/subsys/bluetooth/host/CMakeFiles/subsys__bluetooth__host.dir/att.c.obj
[163/282] Building C object zephyr/subsys/bluetooth/host/CMakeFiles/subsys__bluetooth__host.dir/ecc.c.obj
[164/282] Building C object zephyr/subsys/bluetooth/host/CMakeFiles/subsys__bluetooth__host.dir/gatt.c.obj
[165/282] Building C object zephyr/subsys/bluetooth/host/CMakeFiles/subsys__bluetooth__host.dir/smp.c.obj
[166/282] Building C object zephyr/subsys/bluetooth/host/CMakeFiles/subsys__bluetooth__host.dir/keys.c.obj
[167/282] Building C object zephyr/subsys/fs/CMakeFiles/subsys__fs.dir/fat_fs.c.obj
[168/282] Building C object zephyr/subsys/fs/CMakeFiles/subsys__fs.dir/fs.c.obj
[169/282] Building C object zephyr/subsys/fs/CMakeFiles/subsys__fs.dir/fs_impl.c.obj
[170/282] Building C object zephyr/subsys/net/CMakeFiles/subsys__net.dir/buf.c.obj
[171/282] Building C object zephyr/subsys/random/CMakeFiles/subsys__random.dir/rand32_entropy_device.c.obj
[172/282] Building C object zephyr/drivers/disk/CMakeFiles/drivers__disk.dir/ramdisk.c.obj
[173/282] Building C object zephyr/drivers/usb/device/CMakeFiles/drivers__usb__device.dir/usb_dc_nrfx.c.obj
[174/282] Building C object zephyr/drivers/clock_control/CMakeFiles/drivers__clock_control.dir/clock_control_nrf.c.obj
[175/282] Building C object zephyr/drivers/gpio/CMakeFiles/drivers__gpio.dir/gpio_nrfx.c.obj
[176/282] Building C object zephyr/drivers/pwm/CMakeFiles/drivers__pwm.dir/pwm_nrfx.c.obj
[177/282] Building C object zephyr/drivers/pwm/CMakeFiles/drivers__pwm.dir/pwm_shell.c.obj
[178/282] Building C object zephyr/drivers/hwinfo/CMakeFiles/drivers__hwinfo.dir/hwinfo_weak_impl.c.obj
[179/282] Building C object zephyr/drivers/hwinfo/CMakeFiles/drivers__hwinfo.dir/hwinfo_shell.c.obj
[180/282] Linking C static library zephyr/subsys/bluetooth/host/libsubsys__bluetooth__host.a
[181/282] Building C object zephyr/drivers/hwinfo/CMakeFiles/drivers__hwinfo.dir/hwinfo_nrf.c.obj
[182/282] Building C object zephyr/drivers/flash/CMakeFiles/drivers__flash.dir/soc_flash_nrf.c.obj
[183/282] Linking C static library zephyr/subsys/random/libsubsys__random.a
[184/282] Building C object zephyr/drivers/flash/CMakeFiles/drivers__flash.dir/flash_page_layout.c.obj
[185/282] Building C object zephyr/drivers/serial/CMakeFiles/drivers__serial.dir/uart_nrfx_uart.c.obj
[186/282] Building C object zephyr/drivers/flash/CMakeFiles/drivers__flash.dir/flash_shell.c.obj
[187/282] Building C object zephyr/drivers/serial/CMakeFiles/drivers__serial.dir/uart_nrfx_uarte.c.obj
[188/282] Building C object zephyr/drivers/entropy/CMakeFiles/drivers__entropy.dir/entropy_nrf5.c.obj
[189/282] Linking C static library zephyr/drivers/usb/device/libdrivers__usb__device.a
[190/282] Building C object zephyr/drivers/timer/CMakeFiles/drivers__timer.dir/sys_clock_init.c.obj
[191/282] Linking C static library zephyr/subsys/net/libsubsys__net.a
[192/282] Linking C static library zephyr/drivers/disk/libdrivers__disk.a
[193/282] Building C object zephyr/drivers/timer/CMakeFiles/drivers__timer.dir/nrf_rtc_timer.c.obj
[194/282] Linking C static library zephyr/subsys/fs/libsubsys__fs.a
[195/282] Linking C static library zephyr/drivers/pwm/libdrivers__pwm.a
[196/282] Building C object modules/nrf/lib/multithreading_lock/CMakeFiles/..__nrf__lib__multithreading_lock.dir/multithreading_lock.c.obj
[197/282] Building C object zephyr/drivers/pinctrl/CMakeFiles/drivers__pinctrl.dir/pinctrl_nrf.c.obj
[198/282] Linking C static library zephyr/drivers/hwinfo/libdrivers__hwinfo.a
[199/282] Building C object zephyr/drivers/entropy/CMakeFiles/drivers__entropy.dir/home/doug/ncs/v2.0.0/nrf/drivers/entropy/entropy_cc3xx.c.obj
[200/282] Linking C static library zephyr/drivers/flash/libdrivers__flash.a
[201/282] Linking C static library zephyr/drivers/clock_control/libdrivers__clock_control.a
[202/282] Linking C static library zephyr/drivers/gpio/libdrivers__gpio.a
[203/282] Linking C static library zephyr/drivers/serial/libdrivers__serial.a
[204/282] Building C object zephyr/drivers/pinctrl/CMakeFiles/drivers__pinctrl.dir/common.c.obj
[205/282] Building C object modules/nrf/subsys/bluetooth/controller/CMakeFiles/..__nrf__subsys__bluetooth__controller.dir/crypto.c.obj
[206/282] Building C object modules/nrf/subsys/bluetooth/controller/CMakeFiles/..__nrf__subsys__bluetooth__controller.dir/hci_driver.c.obj
[207/282] Linking C static library zephyr/drivers/timer/libdrivers__timer.a
[208/282] Building C object modules/nrf/subsys/bluetooth/controller/CMakeFiles/..__nrf__subsys__bluetooth__controller.dir/hci_internal.c.obj
[209/282] Building C object modules/nrf/subsys/esb/CMakeFiles/..__nrf__subsys__esb.dir/esb.c.obj
[210/282] Building C object modules/nrf/subsys/bluetooth/controller/CMakeFiles/..__nrf__subsys__bluetooth__controller.dir/ecdh.c.obj
[211/282] Linking C static library modules/nrf/lib/multithreading_lock/lib..__nrf__lib__multithreading_lock.a
[212/282] Building C object modules/nrf/subsys/mpsl/init/CMakeFiles/..__nrf__subsys__mpsl__init.dir/mpsl_init.c.obj
[213/282] Linking C static library zephyr/drivers/entropy/libdrivers__entropy.a
[214/282] Building C object modules/nrf/drivers/mpsl/clock_control/CMakeFiles/..__nrf__drivers__mpsl__clock_control.dir/nrfx_clock_mpsl.c.obj
[215/282] Building C object modules/fatfs/CMakeFiles/..__modules__fs__fatfs.dir/ff.c.obj
[216/282] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/home/doug/ncs/v2.0.0/modules/hal/nordic/nrfx/mdk/system_nrf52840.c.obj
[217/282] Building C object modules/nrf/drivers/mpsl/flash_sync/CMakeFiles/..__nrf__drivers__mpsl__flash_sync.dir/flash_sync_mpsl.c.obj
[218/282] Building C object modules/nrf/drivers/hw_cc310/CMakeFiles/..__nrf__drivers__hw_cc310.dir/hw_cc310.c.obj
[219/282] Linking C static library zephyr/drivers/pinctrl/libdrivers__pinctrl.a
[220/282] Building C object modules/fatfs/CMakeFiles/..__modules__fs__fatfs.dir/zfs_diskio.c.obj
[221/282] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/nrfx_glue.c.obj
[222/282] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/home/doug/ncs/v2.0.0/modules/hal/nordic/nrfx/helpers/nrfx_flag32_allocator.c.obj
[223/282] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/home/doug/ncs/v2.0.0/modules/hal/nordic/nrfx/drivers/src/nrfx_gpiote.c.obj
[224/282] Linking C static library modules/nrf/drivers/mpsl/clock_control/lib..__nrf__drivers__mpsl__clock_control.a
[225/282] Linking C static library modules/nrf/subsys/esb/lib..__nrf__subsys__esb.a
[226/282] Linking C static library modules/nrf/subsys/bluetooth/controller/lib..__nrf__subsys__bluetooth__controller.a
[227/282] Linking C static library modules/nrf/subsys/mpsl/init/lib..__nrf__subsys__mpsl__init.a
[228/282] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/home/doug/ncs/v2.0.0/modules/hal/nordic/nrfx/drivers/src/nrfx_nvmc.c.obj
[229/282] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/home/doug/ncs/v2.0.0/modules/hal/nordic/nrfx/drivers/src/nrfx_power.c.obj
[230/282] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/home/doug/ncs/v2.0.0/modules/hal/nordic/nrfx/drivers/src/nrfx_ppi.c.obj
[231/282] Linking C static library modules/nrf/drivers/mpsl/flash_sync/lib..__nrf__drivers__mpsl__flash_sync.a
[232/282] Linking C static library modules/nrf/drivers/hw_cc310/lib..__nrf__drivers__hw_cc310.a
[233/282] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/home/doug/ncs/v2.0.0/modules/hal/nordic/nrfx/drivers/src/nrfx_pwm.c.obj
[234/282] Linking C static library modules/fatfs/lib..__modules__fs__fatfs.a
[235/282] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/home/doug/ncs/v2.0.0/modules/hal/nordic/nrfx/drivers/src/nrfx_usbd.c.obj
[236/282] Building C object zephyr/kernel/CMakeFiles/kernel.dir/main_weak.c.obj
[237/282] Building C object zephyr/kernel/CMakeFiles/kernel.dir/device.c.obj
[238/282] Building C object zephyr/kernel/CMakeFiles/kernel.dir/banner.c.obj
[239/282] Building C object zephyr/kernel/CMakeFiles/kernel.dir/errno.c.obj
[240/282] Building C object zephyr/kernel/CMakeFiles/kernel.dir/fatal.c.obj
[241/282] Building C object zephyr/kernel/CMakeFiles/kernel.dir/init.c.obj
[242/282] Building C object zephyr/kernel/CMakeFiles/kernel.dir/kheap.c.obj
[243/282] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mem_slab.c.obj
[244/282] Building C object zephyr/kernel/CMakeFiles/kernel.dir/version.c.obj
[245/282] Building C object zephyr/kernel/CMakeFiles/kernel.dir/thread.c.obj
[246/282] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mailbox.c.obj
[247/282] Building C object zephyr/kernel/CMakeFiles/kernel.dir/idle.c.obj
[248/282] Building C object zephyr/kernel/CMakeFiles/kernel.dir/msg_q.c.obj
[249/282] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mutex.c.obj
[250/282] Building C object zephyr/kernel/CMakeFiles/kernel.dir/pipes.c.obj
[251/282] Linking C static library modules/hal_nordic/nrfx/libmodules__hal_nordic__nrfx.a
[252/282] Building C object zephyr/kernel/CMakeFiles/kernel.dir/queue.c.obj
[253/282] Building C object zephyr/kernel/CMakeFiles/kernel.dir/sem.c.obj
[254/282] Building C object zephyr/kernel/CMakeFiles/kernel.dir/stack.c.obj
[255/282] Building C object zephyr/kernel/CMakeFiles/kernel.dir/system_work_q.c.obj
[256/282] Building C object zephyr/kernel/CMakeFiles/kernel.dir/work.c.obj
[257/282] Building C object zephyr/kernel/CMakeFiles/kernel.dir/sched.c.obj
[258/282] Building C object zephyr/kernel/CMakeFiles/kernel.dir/condvar.c.obj
[259/282] Building C object zephyr/kernel/CMakeFiles/kernel.dir/xip.c.obj
[260/282] Building C object zephyr/kernel/CMakeFiles/kernel.dir/timer.c.obj
[261/282] Building C object zephyr/kernel/CMakeFiles/kernel.dir/poll.c.obj
[262/282] Building C object zephyr/kernel/CMakeFiles/kernel.dir/usage.c.obj
[263/282] Building C object zephyr/kernel/CMakeFiles/kernel.dir/timeout.c.obj
[264/282] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mempool.c.obj
[265/282] Linking CXX static library build/evm/lib..__..__..__git__nRF52__lib__evm.a
[266/282] Linking CXX static library build/peripheral/lib..__..__..__git__nRF52__lib__peripheral.a
[267/282] Linking CXX static library build/utl/lib..__..__..__git__nRF52__lib__utl.a
[268/282] Linking CXX static library build/ble/lib..__..__..__git__nRF52__lib__ble.a
[269/282] Linking CXX static library build/service/lib..__..__..__git__nRF52__lib__service.a
[270/282] Linking CXX static library build/mpsl/lib..__..__..__git__nRF52__lib__mpsl.a
[271/282] Linking C static library zephyr/kernel/libkernel.a
[272/282] Linking CXX executable zephyr/zephyr_pre0.elf
FAILED: zephyr/zephyr_pre0.elf zephyr/zephyr_pre0.map 
: && ccache /home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi-g++   zephyr/CMakeFiles/zephyr_pre0.dir/misc/empty_file.c.obj -o zephyr/zephyr_pre0.elf  -fuse-ld=bfd  -Wl,-T  zephyr/linker_zephyr_pre0.cmd  -Wl,-Map=/home/doug/git/nRF52/app/BikeControlBoard/build/zephyr/zephyr_pre0.map  -Wl,--whole-archive  app/libapp.a  zephyr/libzephyr.a  zephyr/arch/common/libarch__common.a  zephyr/arch/arch/arm/core/aarch32/libarch__arm__core__aarch32.a  zephyr/arch/arch/arm/core/aarch32/cortex_m/libarch__arm__core__aarch32__cortex_m.a  zephyr/arch/arch/arm/core/aarch32/mpu/libarch__arm__core__aarch32__mpu.a  zephyr/lib/libc/newlib/liblib__libc__newlib.a  zephyr/lib/posix/liblib__posix.a  zephyr/soc/arm/common/cortex_m/libsoc__arm__common__cortex_m.a  zephyr/soc/arm/nordic_nrf/nrf52/libsoc__arm__nordic_nrf__nrf52.a  zephyr/subsys/bluetooth/common/libsubsys__bluetooth__common.a  zephyr/subsys/bluetooth/host/libsubsys__bluetooth__host.a  zephyr/subsys/fs/libsubsys__fs.a  zephyr/subsys/net/libsubsys__net.a  zephyr/subsys/random/libsubsys__random.a  zephyr/drivers/disk/libdrivers__disk.a  zephyr/drivers/usb/device/libdrivers__usb__device.a  zephyr/drivers/clock_control/libdrivers__clock_control.a  zephyr/drivers/console/libdrivers__console.a  zephyr/drivers/gpio/libdrivers__gpio.a  zephyr/drivers/pwm/libdrivers__pwm.a  zephyr/drivers/hwinfo/libdrivers__hwinfo.a  zephyr/drivers/flash/libdrivers__flash.a  zephyr/drivers/serial/libdrivers__serial.a  zephyr/drivers/entropy/libdrivers__entropy.a  zephyr/drivers/timer/libdrivers__timer.a  zephyr/drivers/pinctrl/libdrivers__pinctrl.a  modules/nrf/lib/multithreading_lock/lib..__nrf__lib__multithreading_lock.a  modules/nrf/subsys/bluetooth/controller/lib..__nrf__subsys__bluetooth__controller.a  modules/nrf/subsys/esb/lib..__nrf__subsys__esb.a  modules/nrf/subsys/mpsl/init/lib..__nrf__subsys__mpsl__init.a  modules/nrf/drivers/mpsl/clock_control/lib..__nrf__drivers__mpsl__clock_control.a  modules/nrf/drivers/mpsl/flash_sync/lib..__nrf__drivers__mpsl__flash_sync.a  modules/nrf/drivers/hw_cc310/lib..__nrf__drivers__hw_cc310.a  modules/fatfs/lib..__modules__fs__fatfs.a  modules/hal_nordic/nrfx/libmodules__hal_nordic__nrfx.a  -Wl,--no-whole-archive  zephyr/kernel/libkernel.a  zephyr/CMakeFiles/offsets.dir/./arch/arm/core/offsets/offsets.c.obj  -L"/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/thumb/v7e-m/nofp"  -L/home/doug/git/nRF52/app/BikeControlBoard/build/zephyr  -lgcc  zephyr/arch/common/libisr_tables.a  /home/doug/ncs/v2.0.0/nrfxlib/crypto/nrf_oberon/lib/cortex-m4/soft-float/liboberon_3.0.11.a  -no-pie  -mcpu=cortex-m4  -mthumb  -mabi=aapcs  -mfp16-format=ieee  -Wl,--gc-sections  -Wl,--build-id=none  -Wl,--sort-common=descending  -Wl,--sort-section=alignment  -Wl,-u,_OffsetAbsSyms  -Wl,-u,_ConfigAbsSyms  -nostdlib  -static  -Wl,-X  -Wl,-N  -Wl,--orphan-handling=warn  -lstdc++  -lm  -Wl,-lc  -L"/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/arm-zephyr-eabi"/lib/thumb/v7e-m/nofp  -u_printf_float  -Wl,-lgcc  -lc  -specs=nano.specs  /home/doug/ncs/v2.0.0/nrfxlib/mpsl/lib/cortex-m4/soft-float/libmpsl.a  /home/doug/ncs/v2.0.0/nrfxlib/crypto/nrf_cc310_platform/lib/cortex-m4/soft-float/no-interrupts/libnrf_cc310_platform_0.9.14.a  -lc  /home/doug/ncs/v2.0.0/nrfxlib/softdevice_controller/lib/cortex-m4/soft-float/libsoftdevice_controller_multirole.a && cd /home/doug/git/nRF52/app/BikeControlBoard/build/zephyr && /home/doug/ncs/toolchains/v2.0.0/usr/local/lib/python3.8/site-packages/cmake/data/bin/cmake -E echo
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::Start()::{lambda()#3}::operator()() const':
/home/doug/git/nRF52/lib/esb/Esb.h:306: undefined reference to `Log(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::Init()::{lambda()#4}::operator()() const':
/home/doug/git/nRF52/lib/esb/Esb.h:1055: undefined reference to `TimedEventHandler::DeRegisterForTimedEvent()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/esb/Esb.h:1050: undefined reference to `Log(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::Init()::{lambda()#6}::operator()() const':
/home/doug/git/nRF52/lib/esb/Esb.h:1092: undefined reference to `Timeline::ReportNow(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `__static_initialization_and_destruction_0(int, int)':
/home/doug/git/nRF52/lib/utl/Timeline.h:61: undefined reference to `Timeline::Timeline(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `__static_initialization_and_destruction_0(int, int)':
/home/doug/git/nRF52/lib/mpsl/MPSL.h:121: undefined reference to `Timeline::Timeline(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::Init()::{lambda(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >)#12}::operator()(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >) const':
/home/doug/git/nRF52/lib/esb/Esb.h:1129: undefined reference to `Log(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::Stop()':
/home/doug/git/nRF52/lib/esb/Esb.h:323: undefined reference to `Timeline::Event(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/esb/Esb.h:329: undefined reference to `MpslSession::CloseSession()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `TimedEventHandler::~TimedEventHandler()':
/home/doug/git/nRF52/lib/evm/TimedEventHandler.h:41: undefined reference to `TimedEventHandler::DeRegisterForTimedEvent()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/evm/TimedEventHandler.h:41: undefined reference to `TimedEventHandler::DeRegisterForTimedEvent()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::~Esb()':
/home/doug/git/nRF52/lib/esb/Esb.h:68: undefined reference to `MpslSession::~MpslSession()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `RgbLedEffectsController::StopSampler()':
/home/doug/git/nRF52/lib/led/RgbLedEffectsController.h:384: undefined reference to `TimedEventHandler::DeRegisterForTimedEvent()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::OnMpslTimeslotEnd()':
/home/doug/git/nRF52/lib/esb/Esb.h:463: undefined reference to `Timeline::Event(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::StopModeRx()':
/home/doug/git/nRF52/lib/esb/Esb.h:493: undefined reference to `Timeline::Event(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::StopModeTx()':
/home/doug/git/nRF52/lib/esb/Esb.h:505: undefined reference to `Timeline::Event(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void LogNNL<char const (&) [2], int&>(char const (&) [2], int&)':
/home/doug/git/nRF52/lib/service/Log.h:132: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:133: undefined reference to `LogNNL(int)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:134: undefined reference to `LogNNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::Init()::{lambda(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >)#7}::operator()(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >) const':
/home/doug/git/nRF52/lib/esb/Esb.h:1098: undefined reference to `Log(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::EnableTimeslotExtensions()':
/home/doug/git/nRF52/lib/esb/Esb.h:278: undefined reference to `MpslSession::EnableTimeslotExtensions()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::Init()::{lambda(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >)#7}::operator()(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >) const':
/home/doug/git/nRF52/lib/esb/Esb.h:1103: undefined reference to `Log(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::DisableTimeslotExtensions()':
/home/doug/git/nRF52/lib/esb/Esb.h:283: undefined reference to `MpslSession::DisableTimeslotExtensions()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void LogNNL<char const (&) [13], char const*&>(char const (&) [13], char const*&)':
/home/doug/git/nRF52/lib/service/Log.h:132: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:133: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:134: undefined reference to `LogNNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void Log<char const (&) [13], char const*>(char const (&) [13], char const*&&)':
/home/doug/git/nRF52/lib/service/Log.h:141: undefined reference to `LogNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void LogNNL<char const (&) [13], unsigned short&>(char const (&) [13], unsigned short&)':
/home/doug/git/nRF52/lib/service/Log.h:132: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:133: undefined reference to `LogNNL(unsigned short)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:134: undefined reference to `LogNNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void Log<char const (&) [13], unsigned short&>(char const (&) [13], unsigned short&)':
/home/doug/git/nRF52/lib/service/Log.h:141: undefined reference to `LogNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void LogNNL<char const (&) [13], unsigned char&, char const (&) [2]>(char const (&) [13], unsigned char&, char const (&) [2])':
/home/doug/git/nRF52/lib/service/Log.h:132: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:133: undefined reference to `LogNNL(unsigned char)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:134: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void Log<char const (&) [13], unsigned char&, char const (&) [2]>(char const (&) [13], unsigned char&, char const (&) [2])':
/home/doug/git/nRF52/lib/service/Log.h:141: undefined reference to `LogNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void LogNNL<char const (&) [13], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&>(char const (&) [13], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)':
/home/doug/git/nRF52/lib/service/Log.h:132: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:133: undefined reference to `LogNNL(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:134: undefined reference to `LogNNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void Log<char const (&) [13], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >>(char const (&) [13], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)':
/home/doug/git/nRF52/lib/service/Log.h:141: undefined reference to `LogNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void LogNNL<char const (&) [13], unsigned char&>(char const (&) [13], unsigned char&)':
/home/doug/git/nRF52/lib/service/Log.h:132: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:133: undefined reference to `LogNNL(unsigned char)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:134: undefined reference to `LogNNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void Log<char const (&) [13], unsigned char&>(char const (&) [13], unsigned char&)':
/home/doug/git/nRF52/lib/service/Log.h:141: undefined reference to `LogNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void LogNNL<char const (&) [17], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&>(char const (&) [17], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)':
/home/doug/git/nRF52/lib/service/Log.h:132: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:133: undefined reference to `LogNNL(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:134: undefined reference to `LogNNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void Log<char const (&) [17], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >>(char const (&) [17], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)':
/home/doug/git/nRF52/lib/service/Log.h:141: undefined reference to `LogNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void LogNNL<char const (&) [26], int&>(char const (&) [26], int&)':
/home/doug/git/nRF52/lib/service/Log.h:132: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:133: undefined reference to `LogNNL(int)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:134: undefined reference to `LogNNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void Log<char const (&) [26], int&>(char const (&) [26], int&)':
/home/doug/git/nRF52/lib/service/Log.h:141: undefined reference to `LogNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void LogNNL<char const (&) [37], int&>(char const (&) [37], int&)':
/home/doug/git/nRF52/lib/service/Log.h:132: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:133: undefined reference to `LogNNL(int)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:134: undefined reference to `LogNNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void Log<char const (&) [37], int&>(char const (&) [37], int&)':
/home/doug/git/nRF52/lib/service/Log.h:141: undefined reference to `LogNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void LogNNL<char const (&) [34], int&>(char const (&) [34], int&)':
/home/doug/git/nRF52/lib/service/Log.h:132: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:133: undefined reference to `LogNNL(int)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:134: undefined reference to `LogNNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void Log<char const (&) [34], int&>(char const (&) [34], int&)':
/home/doug/git/nRF52/lib/service/Log.h:141: undefined reference to `LogNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void LogNNL<char const (&) [22], int&>(char const (&) [22], int&)':
/home/doug/git/nRF52/lib/service/Log.h:132: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:133: undefined reference to `LogNNL(int)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:134: undefined reference to `LogNNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void Log<char const (&) [22], int&>(char const (&) [22], int&)':
/home/doug/git/nRF52/lib/service/Log.h:141: undefined reference to `LogNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::Init()::{lambda(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >)#13}::operator()(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >) const':
/home/doug/git/nRF52/lib/esb/Esb.h:1136: undefined reference to `Log(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::LiveModeChangeFromTxToRx()':
/home/doug/git/nRF52/lib/esb/Esb.h:510: undefined reference to `Timeline::Event(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::StopModeTx()':
/home/doug/git/nRF52/lib/esb/Esb.h:505: undefined reference to `Timeline::Event(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::StartModeRx()':
/home/doug/git/nRF52/lib/esb/Esb.h:486: undefined reference to `Timeline::Event(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::Init()::{lambda(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >)#13}::operator()(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >) const':
/home/doug/git/nRF52/lib/esb/Esb.h:1141: undefined reference to `Log(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::LiveModeChangeFromRxToTx()':
/home/doug/git/nRF52/lib/esb/Esb.h:519: undefined reference to `Timeline::Event(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::StopModeRx()':
/home/doug/git/nRF52/lib/esb/Esb.h:493: undefined reference to `Timeline::Event(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::StartModeTx()':
/home/doug/git/nRF52/lib/esb/Esb.h:499: undefined reference to `Timeline::Event(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::Send(Esb::Message&)':
/home/doug/git/nRF52/lib/esb/Esb.h:345: undefined reference to `Timeline::Event(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/esb/Esb.h:377: undefined reference to `Timeline::Event(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj):/home/doug/git/nRF52/lib/esb/Esb.h:356: more undefined references to `Timeline::Event(char const*)' follow
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void LogNNL<char const (&) [4], bool&, char const (&) [2]>(char const (&) [4], bool&, char const (&) [2])':
/home/doug/git/nRF52/lib/service/Log.h:132: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:133: undefined reference to `LogNNL(int)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:134: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void Log<char const (&) [4], bool&, char const (&) [2]>(char const (&) [4], bool&, char const (&) [2])':
/home/doug/git/nRF52/lib/service/Log.h:141: undefined reference to `LogNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void LogNNL<char const (&) [14], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, char const (&) [9]>(char const (&) [14], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, char const (&) [9])':
/home/doug/git/nRF52/lib/service/Log.h:132: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:133: undefined reference to `LogNNL(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:134: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void Log<char const (&) [14], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, char const (&) [9]>(char const (&) [14], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&, char const (&) [9])':
/home/doug/git/nRF52/lib/service/Log.h:141: undefined reference to `LogNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void LogNNL<char const (&) [11], unsigned int&>(char const (&) [11], unsigned int&)':
/home/doug/git/nRF52/lib/service/Log.h:132: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:133: undefined reference to `LogNNL(unsigned int)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:134: undefined reference to `LogNNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void Log<char const (&) [11], unsigned int&>(char const (&) [11], unsigned int&)':
/home/doug/git/nRF52/lib/service/Log.h:141: undefined reference to `LogNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void LogNNL<char const (&) [5], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&>(char const (&) [5], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)':
/home/doug/git/nRF52/lib/service/Log.h:132: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:133: undefined reference to `LogNNL(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:134: undefined reference to `LogNNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void Log<char const (&) [5], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >>(char const (&) [5], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)':
/home/doug/git/nRF52/lib/service/Log.h:141: undefined reference to `LogNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void LogNNL<char const (&) [16], char const*&>(char const (&) [16], char const*&)':
/home/doug/git/nRF52/lib/service/Log.h:132: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:133: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:134: undefined reference to `LogNNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void Log<char const (&) [16], char const*>(char const (&) [16], char const*&&)':
/home/doug/git/nRF52/lib/service/Log.h:141: undefined reference to `LogNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void LogNNL<char const (&) [14], char const*&>(char const (&) [14], char const*&)':
/home/doug/git/nRF52/lib/service/Log.h:132: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:133: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:134: undefined reference to `LogNNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void Log<char const (&) [14], char const*>(char const (&) [14], char const*&&)':
/home/doug/git/nRF52/lib/service/Log.h:141: undefined reference to `LogNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void LogNNL<char const (&) [12], unsigned short&>(char const (&) [12], unsigned short&)':
/home/doug/git/nRF52/lib/service/Log.h:132: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:133: undefined reference to `LogNNL(unsigned short)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:134: undefined reference to `LogNNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void Log<char const (&) [12], unsigned short&>(char const (&) [12], unsigned short&)':
/home/doug/git/nRF52/lib/service/Log.h:141: undefined reference to `LogNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void LogNNL<char const (&) [9], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&>(char const (&) [9], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)':
/home/doug/git/nRF52/lib/service/Log.h:132: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:133: undefined reference to `LogNNL(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:134: undefined reference to `LogNNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void Log<char const (&) [9], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >>(char const (&) [9], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)':
/home/doug/git/nRF52/lib/service/Log.h:141: undefined reference to `LogNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void LogNNL<char const (&) [10], unsigned char&>(char const (&) [10], unsigned char&)':
/home/doug/git/nRF52/lib/service/Log.h:132: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:133: undefined reference to `LogNNL(unsigned char)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:134: undefined reference to `LogNNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void LogNNL<char const (&) [5], unsigned char&, char const (&) [10], unsigned char&>(char const (&) [5], unsigned char&, char const (&) [10], unsigned char&)':
/home/doug/git/nRF52/lib/service/Log.h:132: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:133: undefined reference to `LogNNL(unsigned char)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void Log<char const (&) [5], unsigned char, char const (&) [10], unsigned char>(char const (&) [5], unsigned char&&, char const (&) [10], unsigned char&&)':
/home/doug/git/nRF52/lib/service/Log.h:141: undefined reference to `LogNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void Log<char const (&) [10], unsigned char&>(char const (&) [10], unsigned char&)':
/home/doug/git/nRF52/lib/service/Log.h:141: undefined reference to `LogNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void LogNNL<char const (&) [15], unsigned int&>(char const (&) [15], unsigned int&)':
/home/doug/git/nRF52/lib/service/Log.h:132: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:133: undefined reference to `LogNNL(unsigned int)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:134: undefined reference to `LogNNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void Log<char const (&) [15], unsigned int&>(char const (&) [15], unsigned int&)':
/home/doug/git/nRF52/lib/service/Log.h:141: undefined reference to `LogNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void LogNNL<char const (&) [10], unsigned int&>(char const (&) [10], unsigned int&)':
/home/doug/git/nRF52/lib/service/Log.h:132: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:133: undefined reference to `LogNNL(unsigned int)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:134: undefined reference to `LogNNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void Log<char const (&) [10], unsigned int&>(char const (&) [10], unsigned int&)':
/home/doug/git/nRF52/lib/service/Log.h:141: undefined reference to `LogNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::Init()::{lambda(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >)#20}::operator()(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >) const':
/home/doug/git/nRF52/lib/esb/Esb.h:1194: undefined reference to `PlatformAbstractionLayer::Micros()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/esb/Esb.h:1196: undefined reference to `TimedEventHandler::RegisterForTimedEvent(unsigned int)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void LogNNL<char const (&) [23], unsigned int&>(char const (&) [23], unsigned int&)':
/home/doug/git/nRF52/lib/service/Log.h:132: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:133: undefined reference to `LogNNL(unsigned int)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:134: undefined reference to `LogNNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void Log<char const (&) [23], unsigned int>(char const (&) [23], unsigned int&&)':
/home/doug/git/nRF52/lib/service/Log.h:141: undefined reference to `LogNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void LogNNL<char const (&) [10], int&>(char const (&) [10], int&)':
/home/doug/git/nRF52/lib/service/Log.h:132: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:133: undefined reference to `LogNNL(int)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:134: undefined reference to `LogNNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void Log<char const (&) [10], int>(char const (&) [10], int&&)':
/home/doug/git/nRF52/lib/service/Log.h:141: undefined reference to `LogNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::Init()::{lambda()#3}::operator()() const':
/home/doug/git/nRF52/lib/esb/Esb.h:1041: undefined reference to `TimedEventHandler::RegisterForTimedEvent(unsigned int)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::Start()':
/home/doug/git/nRF52/lib/esb/Esb.h:288: undefined reference to `Timeline::Event(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/esb/Esb.h:292: undefined reference to `Log(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/esb/Esb.h:302: undefined reference to `MpslSession::SetCbOnStart(std::function<void ()>)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/esb/Esb.h:303: undefined reference to `MpslSession::SetCbOnEnd(std::function<void ()>)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/esb/Esb.h:306: undefined reference to `MpslSession::SetCbOnNoMoreComing(std::function<void ()>)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/esb/Esb.h:308: undefined reference to `MpslSession::OpenSession()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/esb/Esb.h:315: undefined reference to `MpslSession::RequestTimeslots(unsigned int, unsigned int, bool)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::Init()::{lambda(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >)#11}::operator()(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >) const':
/home/doug/git/nRF52/lib/esb/Esb.h:1124: undefined reference to `Log(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::Stop()':
/home/doug/git/nRF52/lib/esb/Esb.h:323: undefined reference to `Timeline::Event(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/esb/Esb.h:329: undefined reference to `MpslSession::CloseSession()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/esb/Esb.h:323: undefined reference to `Timeline::Event(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/esb/Esb.h:329: undefined reference to `MpslSession::CloseSession()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/esb/Esb.h:323: undefined reference to `Timeline::Event(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/esb/Esb.h:329: undefined reference to `MpslSession::CloseSession()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/esb/Esb.h:323: undefined reference to `Timeline::Event(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/esb/Esb.h:329: undefined reference to `MpslSession::CloseSession()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::Report()':
/home/doug/git/nRF52/lib/esb/Esb.h:408: undefined reference to `Timeline::Report(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::EsbIsrEventHandler(esb_evt const*)':
/home/doug/git/nRF52/lib/esb/Esb.h:813: undefined reference to `Timeline::Event(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/esb/Esb.h:820: undefined reference to `Timeline::Event(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/esb/Esb.h:827: undefined reference to `Timeline::Event(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/esb/Esb.h:875: undefined reference to `Timeline::Event(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::OnEsbRx(esb_payload*)':
/home/doug/git/nRF52/lib/esb/Esb.h:533: undefined reference to `Evm::QueueWork(char const*, std::function<void ()>&&)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::EsbIsrEventHandler(esb_evt const*)':
/home/doug/git/nRF52/lib/esb/Esb.h:858: undefined reference to `Timeline::Event(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::OnMpslTimeslotStart()':
/home/doug/git/nRF52/lib/esb/Esb.h:439: undefined reference to `Timeline::Event(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::StartModeRx()':
/home/doug/git/nRF52/lib/esb/Esb.h:486: undefined reference to `Timeline::Event(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::StartModeTx()':
/home/doug/git/nRF52/lib/esb/Esb.h:499: undefined reference to `Timeline::Event(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void LogNNL<esb_payload>(esb_payload*)':
/home/doug/git/nRF52/lib/service/Log.h:119: undefined reference to `LogNNL(unsigned int)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void LogNNL<char const (&) [6], esb_payload*&>(char const (&) [6], esb_payload*&)':
/home/doug/git/nRF52/lib/service/Log.h:132: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:134: undefined reference to `LogNNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void Log<char const (&) [6], esb_payload*>(char const (&) [6], esb_payload*&&)':
/home/doug/git/nRF52/lib/service/Log.h:141: undefined reference to `LogNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void Log<char const (&) [6], esb_payload*&>(char const (&) [6], esb_payload*&)':
/home/doug/git/nRF52/lib/service/Log.h:141: undefined reference to `LogNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void LogNNL<unsigned char [252]>(unsigned char (*) [252])':
/home/doug/git/nRF52/lib/service/Log.h:119: undefined reference to `LogNNL(unsigned int)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void LogNNL<char const (&) [6], unsigned char (*&) [252]>(char const (&) [6], unsigned char (*&) [252])':
/home/doug/git/nRF52/lib/service/Log.h:132: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:134: undefined reference to `LogNNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void Log<char const (&) [6], unsigned char (*) [252]>(char const (&) [6], unsigned char (*&&) [252])':
/home/doug/git/nRF52/lib/service/Log.h:141: undefined reference to `LogNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void LogNNL<unsigned char>(unsigned char*)':
/home/doug/git/nRF52/lib/service/Log.h:119: undefined reference to `LogNNL(unsigned int)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void LogNNL<char const (&) [6], unsigned char (&) [252]>(char const (&) [6], unsigned char (&) [252])':
/home/doug/git/nRF52/lib/service/Log.h:132: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:134: undefined reference to `LogNNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void Log<char const (&) [6], unsigned char (&) [252]>(char const (&) [6], unsigned char (&) [252])':
/home/doug/git/nRF52/lib/service/Log.h:141: undefined reference to `LogNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::Stop()':
/home/doug/git/nRF52/lib/esb/Esb.h:323: undefined reference to `Timeline::Event(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/esb/Esb.h:329: undefined reference to `MpslSession::CloseSession()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Application::Run()':
/home/doug/git/nRF52/lib/app/Application.h:67: undefined reference to `Timeline::EnableCcGlobal()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/app/Application.h:68: undefined reference to `Timeline::Global()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/app/Application.h:68: undefined reference to `Timeline::SetMaxEvents(unsigned short)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/app/Application.h:70: undefined reference to `UartSelect(int)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/app/Application.h:71: undefined reference to `UartOut(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/app/Application.h:72: undefined reference to `UartSelect(int)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/app/Application.h:73: undefined reference to `UartOut(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/app/Application.h:75: undefined reference to `Log(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/app/Application.h:78: undefined reference to `PlatformAbstractionLayer::Delay(unsigned int)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::SetCbOnAssert(std::function<void ()>)':
/home/doug/git/nRF52/lib/esb/Esb.h:217: undefined reference to `MpslSession::SetCbOnAssert(std::function<void ()>)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::Init()':
/home/doug/git/nRF52/lib/esb/Esb.h:1095: undefined reference to `Shell::AddCommand(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<void (std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >)>, Shell::CmdOptions)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/esb/Esb.h:1108: undefined reference to `Shell::AddCommand(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<void (std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >)>, Shell::CmdOptions)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/esb/Esb.h:1113: undefined reference to `Shell::AddCommand(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<void (std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >)>, Shell::CmdOptions)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/esb/Esb.h:1118: undefined reference to `Shell::AddCommand(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<void (std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >)>, Shell::CmdOptions)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/esb/Esb.h:1123: undefined reference to `Shell::AddCommand(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<void (std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >)>, Shell::CmdOptions)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj):/home/doug/git/nRF52/lib/esb/Esb.h:1128: more undefined references to `Shell::AddCommand(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<void (std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >)>, Shell::CmdOptions)' follow
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::Esb()':
/home/doug/git/nRF52/lib/esb/Esb.h:166: undefined reference to `Timeline::Timeline(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/esb/Esb.h:167: undefined reference to `MpslSession::EnableTimeslotExtensions()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::Init()':
/home/doug/git/nRF52/lib/esb/Esb.h:950: undefined reference to `vtable for MpslSession'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `App::App()':
/home/doug/git/nRF52/lib/app/App.h:27: undefined reference to `LogNL(unsigned char)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `App::SetThreadPriority()':
/home/doug/git/nRF52/lib/app/App.h:63: undefined reference to `PlatformAbstractionLayer::SetThreadPriority(int)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `App::SetupPin()':
/home/doug/git/nRF52/lib/app/App.h:68: undefined reference to `Pin::Init()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `App::SetupPAL()':
/home/doug/git/nRF52/lib/app/App.h:73: undefined reference to `PlatformAbstractionLayer::Init()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `App::SetupLog()':
/home/doug/git/nRF52/lib/app/App.h:78: undefined reference to `LogInit()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `App::SetupTimeline()':
/home/doug/git/nRF52/lib/app/App.h:83: undefined reference to `Timeline::Init()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/app/App.h:84: undefined reference to `Timeline::Global()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/app/App.h:84: undefined reference to `Timeline::SetMaxEvents(unsigned short)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `App::SetupEvm()':
/home/doug/git/nRF52/lib/app/App.h:89: undefined reference to `Evm::Init()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `App::SetupWork()':
/home/doug/git/nRF52/lib/app/App.h:94: undefined reference to `Work::Init()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `App::SetupBle()':
/home/doug/git/nRF52/lib/app/App.h:99: undefined reference to `Ble::Init()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `App::SetupMPSL()':
/home/doug/git/nRF52/lib/app/App.h:104: undefined reference to `MPSL::Init()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `App::SetupMpslSession()':
/home/doug/git/nRF52/lib/app/App.h:109: undefined reference to `MpslSession::Init()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Application::Application()':
/home/doug/git/nRF52/lib/app/Application.h:60: undefined reference to `Ble::CreateObserver()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::Esb()':
/home/doug/git/nRF52/lib/esb/Esb.h:166: undefined reference to `Timeline::Timeline(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/esb/Esb.h:167: undefined reference to `MpslSession::EnableTimeslotExtensions()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Application::Application()':
/home/doug/git/nRF52/lib/app/Application.h:63: undefined reference to `vtable for MpslSession'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void LogNNL<char const (&) [16], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, char const (&) [4]>(char const (&) [16], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, char const (&) [4])':
/home/doug/git/nRF52/lib/service/Log.h:132: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:133: undefined reference to `LogNNL(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:134: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void LogNNL<char const (&) [7], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, char const (&) [16], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, char const (&) [4]>(char const (&) [7], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, char const (&) [16], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, char const (&) [4])':
/home/doug/git/nRF52/lib/service/Log.h:132: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:133: undefined reference to `LogNNL(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void LogNNL<char const (&) [8], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, char const (&) [7], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, char const (&) [16], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, char const (&) [4]>(char const (&) [8], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, char const (&) [7], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, char const (&) [16], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, char const (&) [4])':
/home/doug/git/nRF52/lib/service/Log.h:132: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:133: undefined reference to `LogNNL(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void Log<char const (&) [8], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, char const (&) [7], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, char const (&) [16], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, char const (&) [4]>(char const (&) [8], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&, char const (&) [7], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&, char const (&) [16], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&, char const (&) [4])':
/home/doug/git/nRF52/lib/service/Log.h:141: undefined reference to `LogNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::Init()::{lambda()#2}::operator()() const':
/home/doug/git/nRF52/lib/esb/Esb.h:995: undefined reference to `TimedEventHandler::RegisterForTimedEvent(unsigned int)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/esb/Esb.h:999: undefined reference to `PlatformAbstractionLayer::Micros()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/esb/Esb.h:1021: undefined reference to `TimedEventHandler::RegisterForTimedEvent(unsigned int)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/esb/Esb.h:1011: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/esb/Esb.h:1016: undefined reference to `LogNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void LogNNL<char const (&) [3], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&>(char const (&) [3], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)':
/home/doug/git/nRF52/lib/service/Log.h:132: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:133: undefined reference to `LogNNL(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:134: undefined reference to `LogNNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void LogNNL<char const (&) [3], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, char const (&) [3], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&>(char const (&) [3], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, char const (&) [3], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)':
/home/doug/git/nRF52/lib/service/Log.h:132: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:133: undefined reference to `LogNNL(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void LogNNL<char const (&) [8], unsigned int&, char const (&) [3], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, char const (&) [3], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&>(char const (&) [8], unsigned int&, char const (&) [3], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, char const (&) [3], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)':
/home/doug/git/nRF52/lib/service/Log.h:132: undefined reference to `LogNNL(char const*)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/service/Log.h:133: undefined reference to `LogNNL(unsigned int)'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `void Log<char const (&) [8], unsigned int, char const (&) [3], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, char const (&) [3], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(char const (&) [8], unsigned int&&, char const (&) [3], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&, char const (&) [3], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)':
/home/doug/git/nRF52/lib/service/Log.h:141: undefined reference to `LogNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(main.cpp.obj): in function `Esb::Init()::{lambda(Esb::Message)#5}::operator()(Esb::Message) const':
/home/doug/git/nRF52/lib/esb/Esb.h:1072: undefined reference to `LogNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/doug/git/nRF52/lib/esb/Esb.h:1075: undefined reference to `LogNL()'
/home/doug/ncs/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: modules/nrf/subsys/mpsl/init/lib..__nrf__subsys__mpsl__init.a(mpsl_init.c.obj): in function `m_assert_handler':
/home/doug/ncs/v2.0.0/nrf/subsys/mpsl/init/mpsl_init.c:116: undefined reference to `mpsl_assert_handle'
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
FATAL ERROR: command exited with status 1: /home/doug/ncs/toolchains/v2.0.0/usr/local/bin/cmake --build /home/doug/git/nRF52/app/BikeControlBoard/build

 *  The terminal process terminated with exit code: 1. 
 *  Terminal will be reused by tasks, press any key to close it. 

I'm unclear on whether I should be using the add_subdirectory() cmake command in the application, or trying to call the library an ZEPHYR_EXTRA_MODULES.

The requirement for the library is:

  • The library is a mix of .h and .cpp files in each sub-folder
  • Any .h or .cpp file may try to include another .h file from that folder, or another sub-folder of lib
  • The application code may try to include any .h file from any sub-folder of lib
  • The whole thing has to compile at once and link together

Thanks.

Parents Reply
  • Thank you Raoul, I will read through these resources in detail.

    I will also re-examine if/how I can re-arrange my project structure to fit something that fits better with your examples.

    In reality I have no CMake experience myself, so it's also been challenging for me, especially when making progress on the software itself is the priority.

    Much appreciated that you're working toward figuring this out.  Thank you.

Children
  • Hi, here are some thoughts

    the source compiles but includes are not working correctly

    Technically I was saying the build/includes work, but the linking doesn't.

    Is it absolutely necessary for you to have this directory structure?

    What is your configuration, do you have a freestanding application?

    It is not necessary to have this structure.  Let me explain the constraints I want.

    I want all of my code to live outside of the zephyr/ncs tree, applications and libraries both.

    I want to have multiple freestanding applications.
    I want each application to have a main build.
    I want each application to have tests run.
    I want each application to have multiple board configurations/overlays.

    I want to have a multi-library folder (lib) which lives outside the zephyr/ncs tree, and outside any application tree.
    I want lib to build against Zephyr.
    I want each application to be able to build against the code in this library.
    This library will, say, include functionality for BLE and USB.
    If application 1 enables BLE, but application 2 doesn't, I still want both applications to be able to build independently of one another without changing anything in lib.

    The libraries folder (lib) should include many sub-directories, and sub-directories within those (organizing code structure).
    eg ./lib; which contains ./lib/A and ./lib/B
    Any file within the library structure should be able to include any .h file within the whole library folder.
    eg ./lib/A/code.cpp includes libB.h which lives at ./lib/B

    Any application should be able to include any .h file within the whole library folder.

    Are you using NCS v.2.0.0 or something newer?

    I have been using NCS v2.0.0, but downloaded v2.3.0 just now, but tried using it yet.  Is there functionality I should be looking for?

    I will look at the examples you have linked to.  Please read over my requirements and let me know what can be done.

    Thanks!

  • I have spent HOURS and HOURS on this this weekend and am getting nowhere.

    I have last simply tried walking step-by-step through your linked-to https://github.com/nrfconnect/ncs-example-application.

    I have no idea what I'm doing wrong, but it simply doesn't work even copy/paste.

    To start, I installed the nRF Connect Desktop, installed nRF Connect SDK v2.3.0 in c:\ncs\.  No idea if that's what I'm supposed to do, the example just says go look at the getting started page, which I do, and getting started says to do that, so I did that.

    (from a git bash shell)

    west init -m github.com/.../ncs-example-application --mr v2.3.0 my-workspace

    cd my-workspace

    west update

    // ok so far

    (now copy and paste directly from the example, except use custom_plank instead of $BOARD)

    west build -b custom_plank app

    ERROR: source directory app does not exist
    FATAL ERROR: refusing to proceed without --force due to above error
    

    No.

    What if "app" meant "ncs-example-application?"

    west build -b custom_plank ncs-example-application/

    -- west build: generating a build system
    CMake Warning (dev) in CMakeLists.txt:
      No project() command is present.  The top-level CMakeLists.txt file must
      contain a literal, direct call to the project() command.  Add a line of
      code such as
    
        project(ProjectName)
    
      near the top of the file, but after cmake_minimum_required().
    
      CMake is pretending there is a "project(Project)" command on the first
      line.
    This warning is for project developers.  Use -Wno-dev to suppress it.
    
    CMake Warning (dev) in CMakeLists.txt:
      cmake_minimum_required() should be called prior to this top-level project()
      call.  Please see the cmake-commands(7) manual for usage documentation of
      both commands.
    This warning is for project developers.  Use -Wno-dev to suppress it.
    
    CMake Error: CMake was unable to find a build program corresponding to "Ninja".  CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool.
    CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
    CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
    CMake Warning (dev) in CMakeLists.txt:
      No cmake_minimum_required command is present.  A line of code such as
    
        cmake_minimum_required(VERSION 3.26)
    
      should be added at the top of the file.  The version specified may be lower
      if you wish to support older CMake versions for this project.  For more
      information run "cmake --help-policy CMP0000".
    This warning is for project developers.  Use -Wno-dev to suppress it.
    
    -- Configuring incomplete, errors occurred!
    FATAL ERROR: command exited with status 1: 'C:\Program Files\CMake\bin\cmake.EXE' '-DWEST_PYTHON=C:\Users\dougl\AppData\Local\Programs\Python\Python311\python.exe' '-BC:\Users\dougl\git\my-workspace\build' -GNinja -DBOARD=custom_plank '-SC:\Users\dougl\git\my-workspace\ncs-example-application'
    

    No.

    What is the right thing to do here?

    What are my other options?

    I tried this from a shell that has no zephyr environment variables set.

    I also tried one from a shell that sourced the zephyr environment (source /c/ncs/v2.3.0/zephyr/zephyr-env.sh).

    I tried this from the ncs desktop application to launch a bash shell, that has issues with the compiler environment variable being set.

    Did you actually yourself validate the example builds and works from a clean start?  What specifically did you do?

    How can I make progress here?

  • I have figured it out.  I don't understand every nuance of this scheme but it got me what I wanted.

    For the sake of the rest of the community I will explain in detail here.

    Structure

    I have a directory structure like this:

    git
    |   
    +---app
    |   +---App1
    |   |   |   CMakeLists.txt
    |   |   |   
    |   |   |       
    |   |   +---src
    |   |   |       main.cpp
    |   |           
    |               
    +---lib
    |   |   CMakeLists.txt
    |   |   Kconfig
    |   |   
    |   +---App
    |   |   |   CMakeLists.txt
    |   |   |   
    |   |   +---Evm
    |   |   |       CMakeLists.txt
    |   |   |       Evm.cpp
    |   |   |       Evm.h
    |   |   |       
    |   |   +---Log
    |   |   |       CMakeLists.txt
    |   |   |       Log.cpp
    |   |   |       Log.h
    |   |           
    |   +---MPSL
    |   |       CMakeLists.txt
    |   |       MPSL.cpp
    |   |       MPSL.h
    |   |           
    |   \---zephyr
    |           module.yml
    

    The Idea I'm going for

    I have a single root folder for everything, which I call git.

    The app folder has App1, but later App2, App3, etc.

    The lib folder has 3 sub-directories:

    • lib/App
    • lib/MPSL
    • lib/zephyr

    The lib dir has 2 code directories (App and MPSL), and one build-tree hook directory (zephyr).  I can have an indefinite number of code directories.

    Notice that lib/App has sub-directories of its own.  The depth of any code directory is unbounded provided the pattern below is followed.

    The key overarching idea here matches my set of requirements I laid out above.

    Modules and Libraries

    The zephyr mechanisms making this work are:

    • App1 is a standalone application (out of the zephyr tree)
    • lib is configured to be a module (out of the zephyr tree, arbitrary location compared to App1)
      • The sub-directories of lib are all part of the module
      • However, each sub-directory actually configures itself as a zephyr library
        • lib/App sub-directories are actually all part of the lib/App library
        • lib/MPSL is a different library than libApp
        • doesn't really matter if they're separate though, they automatically link against my application regardless

    Module Mechanisms

    App1 can get lib to build by including this in its CMakeLists.txt file

    list(APPEND ZEPHYR_EXTRA_MODULES ${CMAKE_CURRENT_SOURCE_DIR}/../../lib)

    lib is identified as being a valid module by zephyr because:

    • lib contains lib/zephyr
      • which contains module.yml
    • lib contains lib/CMakeLists.txt
    • lib contains lib/Kconfig

    The lib/zephyr/module.yml is:

    build:
      cmake: .
      kconfig: Kconfig

    The lib/CMakeLists.txt is:

    add_subdirectory(App)
    add_subdirectory(MPSL)
    

    The lib/Kconfig is empty.

    Library Mechanisms

    Because the lib/CMakeFiles.txt said to add_subdirectory(App), the build system drops to that level and evaluates the CMakeLists.txt file at that level next.

    What it finds in lib/App/CMakeLists.txt is:

    # root of library tree known to have compilable sources
    
    # headers in this dir are directly includable (-I)
    zephyr_include_directories(.)
    
    # declare this is a library
    zephyr_library()
    
    # compile everything in this directory
    file(GLOB lib_sources *.cpp)
    if (lib_sources)
      zephyr_library_sources(${lib_sources})
    endif()
    
    # traverse down build-wise
    add_subdirectory(Evm)
    add_subdirectory(Log)

    The build system lets any file in lib/App be #include'd without any prefix because of the zephyr_include_directories(.).

    A library is declared, any .cpp files spotted in lib/App are added to the library, and sub-directories are then traversed.

    As an example, the lib/app/Evm CMakeLists.txt is:

    # leaf of library subtree
    
    zephyr_include_directories(.)
    
    file(GLOB lib_sources *.cpp)
    if (lib_sources)
      zephyr_library_sources(${lib_sources})
    endif()

    This one does not declare a library (it's working on behalf of the call of the root folder still I believe).  Any .cpp files are added to the library.

    No further sub-directories, so no further traversal, job done, and the build system goes back up a level and then down to lib/App/Log where the exact same thing happens again.

    The CMakeLists.txt for MPSL looks the same as for lib/App, except it has no sub-directories, and so no add_subdirectory calls.

    Summary

    I should be able to create as many modules and libraries as I want with this pattern.

    Also possible to put in conditionals in the CMakeLists.txt to enable/disable certain functionality, if that's valuable to you.

    Next

    Next I want to build in tests and be able to run them.  I don't really understand what is involved in that, or how I need to build out this structure to do that.

    I also want to see how I can automatically set configuration values (a la prj.conf)  when an application includes a given module.  That way I can factor out certain functionality into its own module, and the mere act of including it will automatically enable the underlying zephyr configuration.  No more prj.conf fiddling.

    Raoul - Can you look at what is necessary for me to do the above?

    Thanks

Related