Google Coral Dev board

Hi, I'm trying to integrate the google Coral Dev board Micro with in Arduino IDE as suggested in their homepage. But when I load a sketch and compile, I always get a library error that some package or file is missing. Has anyone use this integration of Arduino with the google Coral Dev board Micro.Get started with Arduino | Coral
even if i use the basic example from the library, I get the same error:

/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/camera/camera.cc:27:10: fatal error: third_party/nxp/rt1176-sdk/devices/MIMXRT1176/drivers/cm7/fsl_cache.h: No such file or directory
   27 | #include "third_party/nxp/rt1176-sdk/devices/MIMXRT1176/drivers/cm7/fsl_cache.h"
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
exit status 1

Compilation error: exit status 1

When i manually fix the missing file path in the SDK, then i get lot more errors with duplicate definition as shown below:

/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(pmic.cc.obj): in function `coralmicro::PmicTask::Transfer(_lpi2c_master_transfer*)':
/third_party/toolchain-linux/gcc-arm-none-eabi-9-2020-q2-update/arm-none-eabi/include/c++/9.3.1/bits/stl_tree.h:2207: multiple definition of `coralmicro::PmicTask::Transfer(_lpi2c_master_transfer*)'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(pmic.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/pmic/pmic.cc:87: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(pmic.cc.obj): in function `coralmicro::PmicTask::SetPage(unsigned short)':
/third_party/toolchain-linux/gcc-arm-none-eabi-9-2020-q2-update/arm-none-eabi/include/c++/9.3.1/bits/stl_tree.h:2225: multiple definition of `coralmicro::PmicTask::SetPage(unsigned short)'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(pmic.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/pmic/pmic.cc:71: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(pmic.cc.obj): in function `coralmicro::PmicTask::Read(unsigned short, unsigned char*)':
/libs/pmic/pmic.cc:42: multiple definition of `coralmicro::PmicTask::Read(unsigned short, unsigned char*)'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(pmic.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/pmic/pmic.cc:42: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(pmic.cc.obj): in function `coralmicro::PmicTask::Write(unsigned short, unsigned char)':
/libs/pmic/pmic.cc:56: multiple definition of `coralmicro::PmicTask::Write(unsigned short, unsigned char)'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(pmic.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/pmic/pmic.cc:56: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(pmic.cc.obj): in function `coralmicro::PmicTask::Init(_lpi2c_rtos_handle*)':
/libs/pmic/pmic.cc:109: multiple definition of `coralmicro::PmicTask::Init(_lpi2c_rtos_handle*)'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(pmic.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/pmic/pmic.cc:109: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(pmic.cc.obj): in function `coralmicro::PmicTask::HandleRailRequest(coralmicro::pmic::RailRequest const&)':
/libs/pmic/pmic.cc:114: multiple definition of `coralmicro::PmicTask::HandleRailRequest(coralmicro::pmic::RailRequest const&)'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(pmic.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/pmic/pmic.cc:114: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(pmic.cc.obj): in function `coralmicro::PmicTask::HandleChipIdRequest()':
/libs/pmic/pmic.cc:137: multiple definition of `coralmicro::PmicTask::HandleChipIdRequest()'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(pmic.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/pmic/pmic.cc:137: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(pmic.cc.obj): in function `coralmicro::PmicTask::RequestHandler(coralmicro::pmic::Request*)':
/libs/pmic/pmic.cc:143: multiple definition of `coralmicro::PmicTask::RequestHandler(coralmicro::pmic::Request*)'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(pmic.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/pmic/pmic.cc:143: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(pmic.cc.obj): in function `coralmicro::PmicTask::SetRailState(coralmicro::PmicRail, bool)':
/libs/pmic/pmic.cc:157: multiple definition of `coralmicro::PmicTask::SetRailState(coralmicro::PmicRail, bool)'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(pmic.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/pmic/pmic.cc:157: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(pmic.cc.obj): in function `coralmicro::PmicTask::GetChipId()':
/libs/pmic/pmic.cc:165: multiple definition of `coralmicro::PmicTask::GetChipId()'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(pmic.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/pmic/pmic.cc:165: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(pmic.cc.obj):(.rodata._ZTVN10coralmicro8PmicTaskE+0x0): multiple definition of `vtable for coralmicro::PmicTask'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(pmic.cc.o):(.rodata._ZTVN10coralmicro8PmicTaskE+0x0): first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(camera.cc.obj): in function `CSI_IRQHandler':
/libs/camera/camera.cc:460: multiple definition of `CSI_IRQHandler'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(camera.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/camera/camera.cc:460: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(camera.cc.obj): in function `coralmicro::CameraFormatBpp(coralmicro::CameraFormat)':
/libs/camera/camera.cc:466: multiple definition of `coralmicro::CameraFormatBpp(coralmicro::CameraFormat)'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(camera.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/camera/camera.cc:466: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(camera.cc.obj): in function `coralmicro::CameraTask::Read(unsigned short, unsigned char*)':
/libs/camera/camera.cc:559: multiple definition of `coralmicro::CameraTask::Read(unsigned short, unsigned char*)'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(camera.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/camera/camera.cc:559: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(camera.cc.obj): in function `coralmicro::CameraTask::Write(unsigned short, unsigned char)':
/libs/camera/camera.cc:572: multiple definition of `coralmicro::CameraTask::Write(unsigned short, unsigned char)'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(camera.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/camera/camera.cc:572: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(camera.cc.obj): in function `coralmicro::CameraTask::Trigger()':
/libs/camera/camera.cc:648: multiple definition of `coralmicro::CameraTask::Trigger()'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(camera.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/camera/camera.cc:648: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(camera.cc.obj): in function `coralmicro::CameraTask::SetMotionDetectionRegisters()':
/libs/camera/camera.cc:679: multiple definition of `coralmicro::CameraTask::SetMotionDetectionRegisters()'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(camera.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/camera/camera.cc:679: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(camera.cc.obj): in function `coralmicro::CameraTask::SetDefaultRegisters()':
/libs/camera/camera.cc:696: multiple definition of `coralmicro::CameraTask::SetDefaultRegisters()'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(camera.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/camera/camera.cc:696: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(camera.cc.obj): in function `coralmicro::CameraTask::HandleDisableRequest()':
/libs/camera/camera.cc:787: multiple definition of `coralmicro::CameraTask::HandleDisableRequest()'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(camera.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/camera/camera.cc:787: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(camera.cc.obj): in function `coralmicro::CameraTask::HandlePowerRequest(coralmicro::camera::PowerRequest const&)':
/libs/camera/camera.cc:793: multiple definition of `coralmicro::CameraTask::HandlePowerRequest(coralmicro::camera::PowerRequest const&)'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(camera.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/camera/camera.cc:793: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(camera.cc.obj): in function `coralmicro::CameraTask::TaskInit()':
/libs/camera/camera.cc:659: multiple definition of `coralmicro::CameraTask::TaskInit()'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(camera.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/camera/camera.cc:659: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(camera.cc.obj): in function `coralmicro::CameraTask::HandleFrameRequest(coralmicro::camera::FrameRequest const&)':
/libs/camera/camera.cc:825: multiple definition of `coralmicro::CameraTask::HandleFrameRequest(coralmicro::camera::FrameRequest const&)'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(camera.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/camera/camera.cc:825: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(camera.cc.obj): in function `coralmicro::CameraTask::HandleTestPatternRequest(coralmicro::camera::TestPatternRequest const&)':
/libs/camera/camera.cc:841: multiple definition of `coralmicro::CameraTask::HandleTestPatternRequest(coralmicro::camera::TestPatternRequest const&)'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(camera.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/camera/camera.cc:841: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(camera.cc.obj): in function `coralmicro::CameraTask::HandleDiscardRequest(coralmicro::camera::DiscardRequest const&)':
/libs/camera/camera.cc:857: multiple definition of `coralmicro::CameraTask::HandleDiscardRequest(coralmicro::camera::DiscardRequest const&)'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(camera.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/camera/camera.cc:857: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(camera.cc.obj): in function `coralmicro::CameraTask::GetMotionDetectionConfigDefault(coralmicro::CameraMotionDetectionConfig&)':
/libs/camera/camera.cc:874: multiple definition of `coralmicro::CameraTask::GetMotionDetectionConfigDefault(coralmicro::CameraMotionDetectionConfig&)'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(camera.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/camera/camera.cc:874: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(camera.cc.obj): in function `coralmicro::CameraTask::Init(_lpi2c_rtos_handle*)':
/libs/camera/camera.cc:585: multiple definition of `coralmicro::CameraTask::Init(_lpi2c_rtos_handle*)'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(camera.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/camera/camera.cc:585: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(camera.cc.obj): in function `coralmicro::CameraTask::HandleMotionDetectionConfig(coralmicro::CameraMotionDetectionConfig const&)':
/libs/camera/camera.cc:892: multiple definition of `coralmicro::CameraTask::HandleMotionDetectionConfig(coralmicro::CameraMotionDetectionConfig const&)'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(camera.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/camera/camera.cc:892: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(camera.cc.obj): in function `coralmicro::CameraTask::HandleMotionDetectionInterrupt()':
/libs/camera/camera.cc:897: multiple definition of `coralmicro::CameraTask::HandleMotionDetectionInterrupt()'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(camera.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/camera/camera.cc:897: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(camera.cc.obj): in function `coralmicro::CameraTask::SetMode(coralmicro::CameraMode const&)':
/libs/camera/camera.cc:904: multiple definition of `coralmicro::CameraTask::SetMode(coralmicro::CameraMode const&)'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(camera.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/camera/camera.cc:904: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(camera.cc.obj): in function `coralmicro::CameraTask::HandleEnableRequest(coralmicro::CameraMode const&)':
/libs/camera/camera.cc:753: multiple definition of `coralmicro::CameraTask::HandleEnableRequest(coralmicro::CameraMode const&)'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(camera.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/camera/camera.cc:753: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(camera.cc.obj): in function `coralmicro::CameraTask::RequestHandler(coralmicro::camera::Request*)':
/libs/camera/camera.cc:909: multiple definition of `coralmicro::CameraTask::RequestHandler(coralmicro::camera::Request*)'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(camera.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/camera/camera.cc:909: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(camera.cc.obj): in function `coralmicro::CameraTask::GetFrame(unsigned char**, bool)':
/libs/camera/camera.cc:599: multiple definition of `coralmicro::CameraTask::GetFrame(unsigned char**, bool)'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(camera.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/camera/camera.cc:599: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(camera.cc.obj): in function `coralmicro::CameraTask::ReturnFrame(int)':
/libs/camera/camera.cc:611: multiple definition of `coralmicro::CameraTask::ReturnFrame(int)'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(camera.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/camera/camera.cc:611: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(camera.cc.obj): in function `coralmicro::CameraTask::GetFrame(std::vector<coralmicro::CameraFrameFormat, std::allocator<coralmicro::CameraFrameFormat> > const&)':
/libs/camera/camera.cc:476: multiple definition of `coralmicro::CameraTask::GetFrame(std::vector<coralmicro::CameraFrameFormat, std::allocator<coralmicro::CameraFrameFormat> > const&)'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(camera.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/camera/camera.cc:476: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(camera.cc.obj): in function `coralmicro::CameraTask::Enable(coralmicro::CameraMode)':
/libs/camera/camera.cc:618: multiple definition of `coralmicro::CameraTask::Enable(coralmicro::CameraMode)'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(camera.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/camera/camera.cc:618: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(camera.cc.obj): in function `coralmicro::CameraTask::Disable()':
/libs/camera/camera.cc:627: multiple definition of `coralmicro::CameraTask::Disable()'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(camera.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/camera/camera.cc:627: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(camera.cc.obj): in function `coralmicro::CameraTask::SetPower(bool)':
/libs/camera/camera.cc:633: multiple definition of `coralmicro::CameraTask::SetPower(bool)'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(camera.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/camera/camera.cc:633: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(camera.cc.obj): in function `coralmicro::CameraTask::SetTestPattern(coralmicro::CameraTestPattern)':
/libs/camera/camera.cc:641: multiple definition of `coralmicro::CameraTask::SetTestPattern(coralmicro::CameraTestPattern)'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(camera.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/camera/camera.cc:641: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(camera.cc.obj): in function `coralmicro::CameraTask::DiscardFrames(int)':
/libs/camera/camera.cc:650: multiple definition of `coralmicro::CameraTask::DiscardFrames(int)'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(camera.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/camera/camera.cc:650: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(camera.cc.obj): in function `coralmicro::CameraTask::SetMotionDetectionConfig(coralmicro::CameraMotionDetectionConfig const&)':
/libs/camera/camera.cc:884: multiple definition of `coralmicro::CameraTask::SetMotionDetectionConfig(coralmicro::CameraMotionDetectionConfig const&)'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(camera.cc.o):/Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/cores/arduino/include/libs/camera/camera.cc:884: first defined here
/Users/suresh/Library/Arduino15/packages/coral/tools/arm-none-eabi-gcc/9-2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: /Users/suresh/Library/Arduino15/packages/coral/hardware/coral_micro/1.0.1/variants/coral_micro/libs/liblibs_arduino_coral_micro_bundled.a(camera.cc.obj):(.rodata._ZTVN10coralmicro10CameraTaskE+0x0): multiple definition of `vtable for coralmicro::CameraTask'; /Users/suresh/Library/Caches/arduino/sketches/88F962584478EFBECD5A0AA9C9812296/../../cores/coral_coral_micro_coral_micro_upload_both_6bc9892376f735dcb5a1c19bd57df841/core.a(camera.cc.o):(.rodata._ZTVN10coralmicro10CameraTaskE+0x0): first defined here
collect2: error: ld returned 1 exit status
exit status 1

Compilation error: exit status 1

Not sure if any one had similar experience in the past. Any leads would be appreciated.
Note: I'm running this on Mac OS. Arduino IDE Version: 2.3.6

Did they provide a boards file? OR is this google board compatible with an existing Arduino or ESP board.

You'll have to be more accurate. Please post the compiler output here using code tags (as described in https://forum.arduino.cc/t/how-to-get-the-best-out-of-this-forum/679966#use-code-tags).

@sonofcy
Yes, there is a dedicated board package.


This is the board package used from Coral

Same problem for me.

Ubuntu 24.04
arduino ide 2.3.6 app image
coral 1.0.1

There must be a workaround...

Ok, I spent 2h with chatgpt and made the workaround with it.

The comments are in German but you can use it nevertheless...

patch.sh:

#!/usr/bin/env bash
set -Eeuo pipefail

# ========================
#  Coral Micro Arduino fix
#  - ergänzt fehlende Header (NXP RT1176 SDK, CMSIS/Core, FreeRTOS)
#  - setzt FreeRTOSConfig.h (inkl. STATIC_ALLOCATION=1)
#  - deaktiviert doppelte Core-Quellen (camera.cc/pmic.cc etc.)
#  - leert Arduino-Caches
#  Optionales 1. Argument: Board-Paket-Version (Standard: 1.0.1)
# ========================

VER="${1:-1.0.1}"
PKG="$HOME/.arduino15/packages/coral/hardware/coral_micro/$VER"
INC="$PKG/cores/arduino/include"
SDKDST="$INC/third_party/nxp/rt1176-sdk"
FR_DST="$INC/third_party/freertos_kernel"

abort() { echo "❌ $*" >&2; exit 1; }
need() { command -v "$1" >/dev/null || abort "Bitte installieren: $1"; }

echo "==> Prüfe Voraussetzungen …"
[ -d "$PKG" ] || abort "Coral Micro Paket $VER nicht gefunden unter $PKG"
need git; need rsync; need find

# Sauberer Start: evtl. alte Patch-Reste entfernen
echo "==> Aufräumen (alte Patch-Reste) …"
rm -rf \
  "$SDKDST" \
  "$FR_DST" \
  "$INC/core_cm7.h" "$INC/core_cmInstr.h" "$INC/core_cmFunc.h" "$INC/cmsis_gcc.h" \
  2>/dev/null || true
# sicherstellen, dass include/third_party Ordner ist (kein alter Symlink)
if [ -L "$INC/third_party" ] || [ -f "$INC/third_party" ]; then rm -f "$INC/third_party"; fi
mkdir -p "$INC/third_party"

TMP="$(mktemp -d)"; trap 'rm -rf "$TMP"' EXIT

echo "==> Klone coralmicro (inkl. Submodules) …"
git clone --depth=1 --recurse-submodules https://github.com/google-coral/coralmicro.git "$TMP/cm" >/dev/null

# Quellen robust finden
SDK_SRC="$TMP/cm/third_party/nxp/rt1176-sdk"
[ -d "$SDK_SRC/devices/MIMXRT1176" ] || abort "NXP RT1176 SDK im Repo nicht gefunden"

# CMSIS kann variieren -> automatisch suchen
CMSIS_SRC="$(find "$TMP/cm/third_party" -maxdepth 6 -type d -path '*/CMSIS/Core/Include' | head -n1 || true)"
[ -n "$CMSIS_SRC" ] || abort "CMSIS/Core/Include im Repo nicht gefunden"

FR_SRC="$TMP/cm/third_party/freertos_kernel"
[ -d "$FR_SRC/include" ] || abort "FreeRTOS Kernel im Repo nicht gefunden"

# Zielordner sicher anlegen
mkdir -p \
  "$SDKDST/devices/MIMXRT1176" "$SDKDST/components" "$SDKDST/platform" "$SDKDST/middleware" \
  "$FR_DST/include" "$FR_DST/portable/GCC/ARM_CM7/r0p1"

echo "==> Installiere NXP RT1176 SDK Header …"
rsync -a --include='*/' --include='*.h' --include='*.hpp' --exclude='*' \
  "$SDK_SRC/devices/MIMXRT1176/" "$SDKDST/devices/MIMXRT1176/"
rsync -a --include='*/' --include='*.h' --include='*.hpp' --exclude='*' \
  "$SDK_SRC/components/"          "$SDKDST/components/"          2>/dev/null || true
rsync -a --include='*/' --include='*.h' --include='*.hpp' --exclude='*' \
  "$SDK_SRC/platform/"            "$SDKDST/platform/"            2>/dev/null || true
rsync -a --include='*/' --include='*.h' --include='*.hpp' --exclude='*' \
  "$SDK_SRC/middleware/"          "$SDKDST/middleware/"          2>/dev/null || true

echo "==> Kopiere CMSIS/Core Header in Include-Root (wegen #include \"core_cm7.h\") …"
rsync -a --include='*/' --include='*.h' --exclude='*' \
  "$CMSIS_SRC/" "$INC/"

echo "==> Installiere FreeRTOS Header + ARM_CM7/GCC-Port …"
rsync -a --include='*/' --include='*.h' --exclude='*' \
  "$FR_SRC/include/" "$FR_DST/include/"
rsync -a --include='*/' --include='*.h' --exclude='*' \
  "$FR_SRC/portable/GCC/ARM_CM7/r0p1/" "$FR_DST/portable/GCC/ARM_CM7/r0p1/"
ln -sfn ../portable/GCC/ARM_CM7/r0p1/portmacro.h "$FR_DST/include/portmacro.h"

# Minimal-Config für FreeRTOS, falls es keine gibt
FR_CFG="$FR_DST/include/FreeRTOSConfig.h"
if [ ! -f "$FR_CFG" ]; then
  echo "==> Erzeuge minimale FreeRTOSConfig.h …"
  cat > "$FR_CFG" << 'EOF'
/* Minimal FreeRTOSConfig.h for Cortex-M7 (compile-time only) */
#ifndef FREERTOS_CONFIG_H
#define FREERTOS_CONFIG_H
#include <stdint.h>
#define configUSE_PREEMPTION                     1
#define configUSE_TIME_SLICING                   1
#define configCPU_CLOCK_HZ                       ((uint32_t)600000000)
#define configTICK_RATE_HZ                       ((TickType_t)1000)
#define configMAX_PRIORITIES                     7
#define configMINIMAL_STACK_SIZE                 ((unsigned short)256)
#define configTOTAL_HEAP_SIZE                    ((size_t)(128*1024))
#define configMAX_TASK_NAME_LEN                  16
#define configUSE_16_BIT_TICKS                   0
#define configUSE_MUTEXES                        1
#define configUSE_RECURSIVE_MUTEXES              1
#define configCHECK_FOR_STACK_OVERFLOW           0
#define configUSE_IDLE_HOOK                      0
#define configUSE_TICK_HOOK                      0
#define configUSE_MALLOC_FAILED_HOOK             0
#define configSUPPORT_DYNAMIC_ALLOCATION         1
#define configSUPPORT_STATIC_ALLOCATION          1
/* Cortex-M specifics */
#define configPRIO_BITS                          3
#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY  0x7
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5
#define configKERNEL_INTERRUPT_PRIORITY          ( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
#define configMAX_SYSCALL_INTERRUPT_PRIORITY     ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
#define configUSE_PORT_OPTIMISED_TASK_SELECTION  0
/* API selection */
#define INCLUDE_vTaskPrioritySet                 1
#define INCLUDE_uxTaskPriorityGet                1
#define INCLUDE_vTaskDelete                      1
#define INCLUDE_vTaskDelay                       1
#define INCLUDE_vTaskDelayUntil                  1
#define INCLUDE_vTaskSuspend                     1
#define INCLUDE_vTaskSuspendAll                  1
#define INCLUDE_xTaskResumeAll                   1
#define INCLUDE_xTaskGetSchedulerState           1
#define INCLUDE_xTaskGetCurrentTaskHandle        1
#define INCLUDE_xTaskGetIdleTaskHandle           1
#define INCLUDE_xTimerPendFunctionCall           1
#define INCLUDE_uxTaskGetStackHighWaterMark      1
#endif /* FREERTOS_CONFIG_H */
EOF
else
  # sicherstellen, dass STATIC_ALLOCATION aktiv ist
  sed -i -E 's/^[[:space:]]*#define[[:space:]]+configSUPPORT_STATIC_ALLOCATION[[:space:]]+[0-9]+/#define configSUPPORT_STATIC_ALLOCATION 1/' "$FR_CFG"
  grep -qE '^[[:space:]]*#define[[:space:]]+configSUPPORT_STATIC_ALLOCATION[[:space:]]+1' "$FR_CFG" || \
    printf '\n#define configSUPPORT_STATIC_ALLOCATION 1\n' >> "$FR_CFG"
fi

# Doppeldefinitionen verhindern: alle .cc/.cpp in cores/arduino/include/libs/ deaktivieren
ROOT_LIBS="$PKG/cores/arduino/include/libs"
BACKUP="$PKG/.disabled_src_$(date +%s)"
if [ -d "$ROOT_LIBS" ]; then
  echo "==> Deaktiviere doppelte Core-Quellen unter include/libs/ …"
  mkdir -p "$BACKUP"
  while IFS= read -r -d '' f; do
    mv "$f" "$BACKUP/$(basename "$f").disabled"
    echo "   -> disabled: ${f#$PKG/}"
  done < <(find "$ROOT_LIBS" -type f \( -name '*.cc' -o -name '*.cpp' \) -print0)
else
  echo "==> include/libs/ nicht vorhanden (ok)."
fi

# Plausibilitäts-Checks
req() { [ -f "$1" ] || abort "FEHLT: $1"; }
echo "==> Checks …"
req "$SDKDST/devices/MIMXRT1176/drivers/cm7/fsl_cache.h"
req "$INC/core_cm7.h"
req "$FR_DST/include/FreeRTOS.h"
req "$FR_DST/include/portmacro.h"
req "$FR_DST/include/FreeRTOSConfig.h"

# Arduino-Caches leeren (frischer Build)
echo "==> Leere Arduino-Caches …"
rm -rf "$HOME/.cache/arduino" "$HOME/.arduino15/cache" 2>/dev/null || true

echo "✅ Patch abgeschlossen.
→ Bitte die Arduino IDE komplett NEU starten und deinen Sketch erneut kompilieren."

Have fun!