Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to use custom hal-config and efr32mg1.ld linker doc #388

Closed
gabekassel opened this issue Aug 26, 2022 · 59 comments
Closed

How to use custom hal-config and efr32mg1.ld linker doc #388

gabekassel opened this issue Aug 26, 2022 · 59 comments
Assignees

Comments

@gabekassel
Copy link

I noticed that recent changes have moved the hal-config and efr32mgx.ld out of this repo. I'm presuming these are linked from GSDK using the defaults in the SDK.

I have customizations to both files required for this to build/run for my platform. Before I fork the entire GSDK, is there a preferred way to pass these in?

cc: @lmnotran

Thanks

@lmnotran
Copy link
Contributor

Hey @gabekassel , thanks for pointing this out! Sorry it's been a few days since you posted. I'm working on writing something up and will have a more formal response with detailed instructions. I should be able to get back to you by EOD tomorrow

@lmnotran
Copy link
Contributor

CC: @romacdon

@lmnotran
Copy link
Contributor

lmnotran commented Sep 1, 2022

Hey @gabekassel ! Sorry for the delay.

As part of #324, the decision was made to deprecate the old hal-config method for configuration. This allowed us to transition to leveraging the new Silicon Labs SLC tool for generating config files on-the-fly and gives us the ability to greatly expand board support in this repo.

What this means for you is that you'll need to generate a set new config files and port your customizations to the new format.

From a high-level:

  1. Run the bootstrap script
  2. Run a build to generate a clean set of configuration files for your board
  3. Once you have this set of files, you'll want to check them into git somewhere (presumably an eero fork of this repo)
  4. Edit the CMakeLists.txt file to pull in these new files instead of the generated ones.
  5. At this point, you can comment out the generation of the platform libraries in ./script/build
  6. When building in the future, continue to use ./script/build <your board>
./script/bootstrap
./script/build brd4161a
mkdir -p src/platform_libs
cp -R build/brd4161a/slc/soc/platform src/platform_libs/openthread-efr32-soc-eero
cp -R build/brd4161a/slc/rcp/platform src/platform_libs/openthread-efr32-rcp-eero

The result should look something like this SiliconLabs#533. Note that this does break the ability for you to build targeting other boards. This is a known issue and something I'm trying to think of an elegant solution for

Even though #324 was merged a few months ago, this is still a very new change to the build process so I'm sure there are many areas for improvement. If you have any suggestions at all or encounter any pain points, please feel free to open a PR or an issue!

@gabekassel
Copy link
Author

Thanks Mason. I'll give it a try when time permits.

@gabekassel
Copy link
Author

@lmnotran do you know what version of java SLC expects?

@gabekassel
Copy link
Author

Actually I think this an arm mac issue. Any help for:

+ /Users/gabekas/ot-efr32-upstream/third_party/silabs/slc/slc_cli/bin/slc-cli/slc-cli.app/Contents/MacOS/slc-cli -v 1 signature trust --sdk /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/
2022-09-06 09:16:54.605 slc-cli[38145:7017063] Error loading /Library/Java/JavaVirtualMachines/jdk-18.0.2.1.jdk/Contents/MacOS/libjli.dylib:  dlopen(/Library/Java/JavaVirtualMachines/jdk-18.0.2.1.jdk/Contents/MacOS/libjli.dylib, 0x0109): tried: '/Library/Java/JavaVirtualMachines/jdk-18.0.2.1.jdk/Contents/MacOS/libjli.dylib' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64'))
Slc-cli:
The JVM shared library "/Library/Java/JavaVirtualMachines/jdk-18.0.2.1.jdk/Contents/Home/bin/../lib/server/libjvm.dylib"
does not contain the JNI_CreateJavaVM symbol.

@romacdon
Copy link

romacdon commented Sep 6, 2022

Hi @gabekassel, @lmnotran is out today but I believe you need Java 64-bit JVM version 11 or higher, available through Amazon Correto as documented in section 2 of https://www.silabs.com/documents/public/user-guides/ug520-software-project-generation-configuration-with-slc-cli.pdf. Mason and I will sync up tomorrow when he returns.

@gabekassel
Copy link
Author

@mhallam91 confirmed SLC isn't supported on ARM macs yet. So I'll go with a VM for now

@gabekassel
Copy link
Author

actually i think this is incompatible on ARM in general

./third_party/silabs/slc/slc_cli/bin/slc-cli/slc-cli 
bash: ./third_party/silabs/slc/slc_cli/bin/slc-cli/slc-cli: cannot execute binary file: Exec format error

@lmnotran
Copy link
Contributor

lmnotran commented Sep 7, 2022

@gabekassel Did you try running ./script/bootstrap ? It'll install openjdk@11 which is the version of java that I've been using.

Both @romacdon and @bertoldi-silabs have M1 Macs and I've confirmed that they both are able to use https://www.silabs.com/documents/login/software/slc_cli_mac.zip to build applications using ./script/build brdXXXXa

@romacdon
Copy link

@gabekassel are you still experiencing issues running SLC?

@gabekassel
Copy link
Author

@romacdon yes, I'm still having trouble running SLC. I believe this is mostly due to not having an x86 machine at the moment (I have an arm64 Ubuntu VM on m1 Mac, for example). I haven't had time this week to come back to it.

Simplest solution is to crack open an older intel Mac or setup a cloud host for this.

@romacdon
Copy link

@gabekasselI I also have an M1 MAC but I'm able to run SLC without the use a VM so something must be different with my setup and yours. Have you tried @lmnotran's suggestion above and running ./script/bootstrap?

@gabekassel
Copy link
Author

Yes I did. Are you using ubuntu arm64 or a different VM guest OS?

I can play with this again today if time permits.

@romacdon
Copy link

I'm not using a VM at all. I'm am running SLC from macOS.

@gabekassel
Copy link
Author

@romacdon my current sticking point

Fetching submodule openthread
From https://github.com/openthread/openthread
   5d50088da..b66d521d1  main       -> origin/main
Updating 3784ef9..54808aa
Fast-forward
 openthread      |  2 +-
 src/src/radio.c | 26 ++++++++++++++++++++++++--
 2 files changed, 25 insertions(+), 3 deletions(-)
➜  ot-efr32-upstream git:(main) ✗ ./script/bootstrap
+ main
+ install_packages
+ PM=source
+ command -v apt-get
+ command -v rpm
+ command -v opkg
+ command -v brew
/opt/homebrew/bin/brew
+ PM=brew
+ install_packages_brew
+ echo 'Installing script dependencies...'
Installing script dependencies...
+ brew install coreutils openjdk@11
Running `brew update --auto-update`...
==> Auto-updated Homebrew!
Updated 2 taps (homebrew/core and homebrew/cask).
==> New Formulae
antidote           apophenia          cargo-zigbuild     commitlint         ghc@8.10           has                liblbfgs           objconv            pyyaml             schemathesis       xctesthtmlreport   xwin
==> New Casks
arduino-ide                            bridge                                 devcleaner                             languagetool                           lookingglassstudio                     spline
beast2                                 dcp-o-matic-editor                     laconvolver                            lookingglassbridge                     rnnoise                                typcn-bilibili

You have 28 outdated formulae installed.
You can upgrade them with brew upgrade
or list them with brew outdated.

Warning: coreutils 9.1 is already installed and up-to-date.
To reinstall 9.1, run:
  brew reinstall coreutils
Warning: openjdk@11 11.0.16.1 is already installed and up-to-date.
To reinstall 11.0.16.1, run:
  brew reinstall openjdk@11
+ command -v pip3
/opt/homebrew/bin/pip3
+ install_packages_pip3
+ pip3 install -U cmake==3.22.4
DEPRECATION: Configuring installation scheme with distutils config files is deprecated and will no longer work in the near future. If you are using a Homebrew or Linuxbrew Python, please see discussion at https://github.com/Homebrew/homebrew-core/issues/76621
Requirement already satisfied: cmake==3.22.4 in /opt/homebrew/lib/python3.9/site-packages (3.22.4)
DEPRECATION: Configuring installation scheme with distutils config files is deprecated and will no longer work in the near future. If you are using a Homebrew or Linuxbrew Python, please see discussion at https://github.com/Homebrew/homebrew-core/issues/76621
WARNING: There was an error checking the latest version of pip.
+ cmake --version
+ grep 3.22.4
➜  ot-efr32-upstream git:(main) ✗ git submodule update --init --recursive .
Submodule path 'openthread': checked out 'dd02babfebcdbee1dc66581a50f7c7a951b132b9'
➜  ot-efr32-upstream git:(main) board="brd4161a"
➜  ot-efr32-upstream git:(main) ./script/build $board
+ [[ -n ./script/build ]]
+ script_path=./script/build
+++ realpath ./script/build
++ dirname /Users/gabekas/ot-efr32-upstream/script/build
+ script_dir=/Users/gabekas/ot-efr32-upstream/script
++ dirname /Users/gabekas/ot-efr32-upstream/script
+ repo_dir=/Users/gabekas/ot-efr32-upstream
+ board=brdXXXXY
+ source /Users/gabekas/ot-efr32-upstream/script/efr32-definitions
++ [[ -n /Users/gabekas/ot-efr32-upstream/script/efr32-definitions ]]
++ script_path=/Users/gabekas/ot-efr32-upstream/script/efr32-definitions
++++ realpath /Users/gabekas/ot-efr32-upstream/script/efr32-definitions
+++ dirname /Users/gabekas/ot-efr32-upstream/script/efr32-definitions
++ script_dir=/Users/gabekas/ot-efr32-upstream/script
+++ dirname /Users/gabekas/ot-efr32-upstream/script
++ repo_dir=/Users/gabekas/ot-efr32-upstream
++ sdk_dir=/Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/
++ efr32_device_regex=
++ efr32_device_regex+='\(efr32\)*'
++ efr32_device_regex+='\([[:alpha:]]\{2\}\)'
++ efr32_device_regex+='\(m*\)'
++ efr32_device_regex+='\([[:digit:]]\{1,2\}\)[[:digit:]]\{0,1\}'
++ efr32_device_regex+='\([[:alpha:]]\{1\}\)'
++ efr32_device_regex+='\([[:alpha:]]\{0,1\}[[:digit:]]\{1,3\}\)'
++ efr32_device_regex+='\(f[[:digit:]]\{1,\}\)*'
++ efr32_device_regex+='\([[:alpha:]]\{2,3\}\)*'
++ efr32_device_regex+='\(f[[:digit:]]\{1,\}\)*'
++ efr32_device_regex+='.*'
++ readonly efr32_device_regex
+ source /Users/gabekas/ot-efr32-upstream/script/slc_cli
++ [[ -n /Users/gabekas/ot-efr32-upstream/script/slc_cli ]]
++ script_path=/Users/gabekas/ot-efr32-upstream/script/slc_cli
++++ realpath /Users/gabekas/ot-efr32-upstream/script/slc_cli
+++ dirname /Users/gabekas/ot-efr32-upstream/script/slc_cli
++ script_dir=/Users/gabekas/ot-efr32-upstream/script
+++ dirname /Users/gabekas/ot-efr32-upstream/script
++ repo_dir=/Users/gabekas/ot-efr32-upstream
++ '[' -n '' ']'
++ SLC_INSTALL_DIR=/Users/gabekas/ot-efr32-upstream/third_party/silabs/slc
++ slc_cmd=
++ use_slc_from_path=1
++ trap cleanup EXIT
+ OT_CMAKE_NINJA_TARGET=
+ OT_OPTIONS=("-DCMAKE_BUILD_TYPE=Release" "-DOT_DIAGNOSTIC=ON" "-DOT_EXTERNAL_HEAP=ON" "-DOT_SLAAC=ON")
+ readonly OT_OPTIONS
+ main brd4161a
+ local 'usage=usage: ./script/build [-h] [--skip-silabs-apps] <efr32 platform> -DBOARD=<brdXXXXy> [-D<OT_XXXX=ON> -D<OT_YYYY=OFF>]'
+ local skip_silabs_apps=true
+ skip_generation=false
+ optspec=:h-:
+ getopts :h-: optchar
++ echo brd4161a
++ tr '[:upper:]' '[:lower:]'
+ lowercase_args=brd4161a
++ [[ brd4161a =~ (brd[0-9]{4}[a-z]{1}) ]]
++ echo brd4161a
+ board=brd4161a
+ local board_slcc
++ efr32_get_board_slcc brd4161a
++ local -r 'doc=Gets the latest revision .slcc file for a efr32 board'
++ '[' 1 -ne 1 ']'
++ '[' -z brd4161a ']'
++ local board=brd4161a
++ local board_slcc
+++ find /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk//hardware/board/component -type f '(' -name 'brd4161a*' '!' -name '*_support.slcc' ')'
+++ sort --version-sort
+++ tail -n 1
++ board_slcc=/Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk//hardware/board/component/brd4161a.slcc
++ echo /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk//hardware/board/component/brd4161a.slcc
+ board_slcc=/Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk//hardware/board/component/brd4161a.slcc
+ local platform
++ grep -Eo 'board:device:.*' /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk//hardware/board/component/brd4161a.slcc
++ sed 's/board:device:\(efr32\)*\([[:alpha:]]\{2\}\)\(m*\)\([[:digit:]]\{1,2\}\)[[:digit:]]\{0,1\}\([[:alpha:]]\{1\}\)\([[:alpha:]]\{0,1\}[[:digit:]]\{1,3\}\)\(f[[:digit:]]\{1,\}\)*\([[:alpha:]]\{2,3\}\)*\(f[[:digit:]]\{1,\}\)*.*/efr32\2\4/'
++ head -n 1
+ platform=efr32mg12
+ '[' -z efr32mg12 ']'
+ efr32_check_platform efr32mg12
+ local match=false
+ local platform=efr32mg12
++ efr32_get_platforms
++ local platform_dir=/Users/gabekas/ot-efr32-upstream/src
++ find /Users/gabekas/ot-efr32-upstream/src -type d -name '*efr32*' -exec basename '{}' ';'
++ sort
+ for efr32_platform in '$(efr32_get_platforms)'
+ [[ efr32mg1 == \e\f\r\3\2\m\g\1\2 ]]
+ for efr32_platform in '$(efr32_get_platforms)'
+ [[ efr32mg12 == \e\f\r\3\2\m\g\1\2 ]]
+ match=true
+ break
+ true
+ return 0
+ shift
+ options=("${OT_OPTIONS[@]}")
+ local options
+ options+=("-DCMAKE_TOOLCHAIN_FILE=src/${platform}/arm-none-eabi.cmake")
+ case "${platform}" in
+ OT_CMAKE_NINJA_TARGET=("ot-rcp" "ot-cli-ftd" "ot-cli-mtd" "ot-ncp-ftd" "ot-ncp-mtd")
+ '[' true = false ']'
+ slc_init
+ command -v slc
+ command -v slc-cli
+ echo 'The '\''slc-cli'\'' command could not be found in your PATH.'
The 'slc-cli' command could not be found in your PATH.
+++ [[ darwin21 == darwin* ]]
+++ echo +
++ find /Users/gabekas/ot-efr32-upstream/third_party/silabs/slc -perm +111 -name 'slc*' -type f
+ slc_cmd=/Users/gabekas/ot-efr32-upstream/third_party/silabs/slc/slc_cli/bin/slc-cli/slc-cli.app/Contents/MacOS/slc-cli
+ '[' -z /Users/gabekas/ot-efr32-upstream/third_party/silabs/slc/slc_cli/bin/slc-cli/slc-cli.app/Contents/MacOS/slc-cli ']'
+++ [[ darwin21 == darwin* ]]
+++ echo +
++ find /Users/gabekas/ot-efr32-upstream/third_party/silabs/slc -perm +111 -name 'slc*' -type f
+ slc_cmd=/Users/gabekas/ot-efr32-upstream/third_party/silabs/slc/slc_cli/bin/slc-cli/slc-cli.app/Contents/MacOS/slc-cli
+ options+=("$@")
+ build -DEFR32_PLATFORM=efr32mg12 -DBOARD=brd4161a -DCMAKE_BUILD_TYPE=Release -DOT_DIAGNOSTIC=ON -DOT_EXTERNAL_HEAP=ON -DOT_SLAAC=ON -DCMAKE_TOOLCHAIN_FILE=src/efr32mg12/arm-none-eabi.cmake
+ builddir=/Users/gabekas/ot-efr32-upstream/build/brd4161a
+ mkdir -p /Users/gabekas/ot-efr32-upstream/build/brd4161a
+ cd /Users/gabekas/ot-efr32-upstream/build/brd4161a
+ '[' false = false ']'
+ local slc_generated_projects_dir=/Users/gabekas/ot-efr32-upstream/build/brd4161a/slc
+ run_slc -v 1 signature trust --sdk /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/
+ IFS=' '
+ read -r -a slc_args
+ /Users/gabekas/ot-efr32-upstream/third_party/silabs/slc/slc_cli/bin/slc-cli/slc-cli.app/Contents/MacOS/slc-cli -v 1 signature trust --sdk /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/
2022-09-14 09:15:06.814 slc-cli[11941:77487] Error loading /Library/Java/JavaVirtualMachines/jdk-18.0.2.1.jdk/Contents/MacOS/libjli.dylib:  dlopen(/Library/Java/JavaVirtualMachines/jdk-18.0.2.1.jdk/Contents/MacOS/libjli.dylib, 0x0109): tried: '/Library/Java/JavaVirtualMachines/jdk-18.0.2.1.jdk/Contents/MacOS/libjli.dylib' (mach-o file, but is an incompatible architecture (have (arm64), need (x86_64)))
Slc-cli:
The JVM shared library "/Library/Java/JavaVirtualMachines/jdk-18.0.2.1.jdk/Contents/Home/bin/../lib/server/libjvm.dylib"
does not contain the JNI_CreateJavaVM symbol.

+ cleanup
+ '[' 254 -eq 14 ']'

@romacdon
Copy link

@gabekassel have you tried using the specific Java version mentioned in documentation? You need Java 64-bit JVM version 11 or higher, available through Amazon Correto as documented in section 2 of https://www.silabs.com/documents/public/user-guides/ug520-software-project-generation-configuration-with-slc-cli.pdf.

@gabekassel
Copy link
Author

better! here's where i get to next:

Last login: Wed Sep 14 09:47:53 on ttys001
➜  ~ cd ot-efr32-upstream 
➜  ot-efr32-upstream git:(main)  ./script/build $board
+ [[ -n ./script/build ]]
+ script_path=./script/build
+++ realpath ./script/build
++ dirname /Users/gabekas/ot-efr32-upstream/script/build
+ script_dir=/Users/gabekas/ot-efr32-upstream/script
++ dirname /Users/gabekas/ot-efr32-upstream/script
+ repo_dir=/Users/gabekas/ot-efr32-upstream
+ board=brdXXXXY
+ source /Users/gabekas/ot-efr32-upstream/script/efr32-definitions
++ [[ -n /Users/gabekas/ot-efr32-upstream/script/efr32-definitions ]]
++ script_path=/Users/gabekas/ot-efr32-upstream/script/efr32-definitions
++++ realpath /Users/gabekas/ot-efr32-upstream/script/efr32-definitions
+++ dirname /Users/gabekas/ot-efr32-upstream/script/efr32-definitions
++ script_dir=/Users/gabekas/ot-efr32-upstream/script
+++ dirname /Users/gabekas/ot-efr32-upstream/script
++ repo_dir=/Users/gabekas/ot-efr32-upstream
++ sdk_dir=/Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/
++ efr32_device_regex=
++ efr32_device_regex+='\(efr32\)*'
++ efr32_device_regex+='\([[:alpha:]]\{2\}\)'
++ efr32_device_regex+='\(m*\)'
++ efr32_device_regex+='\([[:digit:]]\{1,2\}\)[[:digit:]]\{0,1\}'
++ efr32_device_regex+='\([[:alpha:]]\{1\}\)'
++ efr32_device_regex+='\([[:alpha:]]\{0,1\}[[:digit:]]\{1,3\}\)'
++ efr32_device_regex+='\(f[[:digit:]]\{1,\}\)*'
++ efr32_device_regex+='\([[:alpha:]]\{2,3\}\)*'
++ efr32_device_regex+='\(f[[:digit:]]\{1,\}\)*'
++ efr32_device_regex+='.*'
++ readonly efr32_device_regex
+ source /Users/gabekas/ot-efr32-upstream/script/slc_cli
++ [[ -n /Users/gabekas/ot-efr32-upstream/script/slc_cli ]]
++ script_path=/Users/gabekas/ot-efr32-upstream/script/slc_cli
++++ realpath /Users/gabekas/ot-efr32-upstream/script/slc_cli
+++ dirname /Users/gabekas/ot-efr32-upstream/script/slc_cli
++ script_dir=/Users/gabekas/ot-efr32-upstream/script
+++ dirname /Users/gabekas/ot-efr32-upstream/script
++ repo_dir=/Users/gabekas/ot-efr32-upstream
++ '[' -n '' ']'
++ SLC_INSTALL_DIR=/Users/gabekas/ot-efr32-upstream/third_party/silabs/slc
++ slc_cmd=
++ use_slc_from_path=1
++ trap cleanup EXIT
+ OT_CMAKE_NINJA_TARGET=
+ OT_OPTIONS=("-DCMAKE_BUILD_TYPE=Release" "-DOT_DIAGNOSTIC=ON" "-DOT_EXTERNAL_HEAP=ON" "-DOT_SLAAC=ON")
+ readonly OT_OPTIONS
+ main
+ local 'usage=usage: ./script/build [-h] [--skip-silabs-apps] <efr32 platform> -DBOARD=<brdXXXXy> [-D<OT_XXXX=ON> -D<OT_YYYY=OFF>]'
+ local skip_silabs_apps=true
+ skip_generation=false
+ optspec=:h-:
+ getopts :h-: optchar
++ echo
++ tr '[:upper:]' '[:lower:]'
+ lowercase_args=
++ [[ '' =~ (brd[0-9]{4}[a-z]{1}) ]]
+ board=
+ cleanup
+ '[' 1 -eq 14 ']'
➜  ot-efr32-upstream git:(main) board=brd4161a
➜  ot-efr32-upstream git:(main)  ./script/build $board
+ [[ -n ./script/build ]]
+ script_path=./script/build
+++ realpath ./script/build
++ dirname /Users/gabekas/ot-efr32-upstream/script/build
+ script_dir=/Users/gabekas/ot-efr32-upstream/script
++ dirname /Users/gabekas/ot-efr32-upstream/script
+ repo_dir=/Users/gabekas/ot-efr32-upstream
+ board=brdXXXXY
+ source /Users/gabekas/ot-efr32-upstream/script/efr32-definitions
++ [[ -n /Users/gabekas/ot-efr32-upstream/script/efr32-definitions ]]
++ script_path=/Users/gabekas/ot-efr32-upstream/script/efr32-definitions
++++ realpath /Users/gabekas/ot-efr32-upstream/script/efr32-definitions
+++ dirname /Users/gabekas/ot-efr32-upstream/script/efr32-definitions
++ script_dir=/Users/gabekas/ot-efr32-upstream/script
+++ dirname /Users/gabekas/ot-efr32-upstream/script
++ repo_dir=/Users/gabekas/ot-efr32-upstream
++ sdk_dir=/Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/
++ efr32_device_regex=
++ efr32_device_regex+='\(efr32\)*'
++ efr32_device_regex+='\([[:alpha:]]\{2\}\)'
++ efr32_device_regex+='\(m*\)'
++ efr32_device_regex+='\([[:digit:]]\{1,2\}\)[[:digit:]]\{0,1\}'
++ efr32_device_regex+='\([[:alpha:]]\{1\}\)'
++ efr32_device_regex+='\([[:alpha:]]\{0,1\}[[:digit:]]\{1,3\}\)'
++ efr32_device_regex+='\(f[[:digit:]]\{1,\}\)*'
++ efr32_device_regex+='\([[:alpha:]]\{2,3\}\)*'
++ efr32_device_regex+='\(f[[:digit:]]\{1,\}\)*'
++ efr32_device_regex+='.*'
++ readonly efr32_device_regex
+ source /Users/gabekas/ot-efr32-upstream/script/slc_cli
++ [[ -n /Users/gabekas/ot-efr32-upstream/script/slc_cli ]]
++ script_path=/Users/gabekas/ot-efr32-upstream/script/slc_cli
++++ realpath /Users/gabekas/ot-efr32-upstream/script/slc_cli
+++ dirname /Users/gabekas/ot-efr32-upstream/script/slc_cli
++ script_dir=/Users/gabekas/ot-efr32-upstream/script
+++ dirname /Users/gabekas/ot-efr32-upstream/script
++ repo_dir=/Users/gabekas/ot-efr32-upstream
++ '[' -n '' ']'
++ SLC_INSTALL_DIR=/Users/gabekas/ot-efr32-upstream/third_party/silabs/slc
++ slc_cmd=
++ use_slc_from_path=1
++ trap cleanup EXIT
+ OT_CMAKE_NINJA_TARGET=
+ OT_OPTIONS=("-DCMAKE_BUILD_TYPE=Release" "-DOT_DIAGNOSTIC=ON" "-DOT_EXTERNAL_HEAP=ON" "-DOT_SLAAC=ON")
+ readonly OT_OPTIONS
+ main brd4161a
+ local 'usage=usage: ./script/build [-h] [--skip-silabs-apps] <efr32 platform> -DBOARD=<brdXXXXy> [-D<OT_XXXX=ON> -D<OT_YYYY=OFF>]'
+ local skip_silabs_apps=true
+ skip_generation=false
+ optspec=:h-:
+ getopts :h-: optchar
++ echo brd4161a
++ tr '[:upper:]' '[:lower:]'
+ lowercase_args=brd4161a
++ [[ brd4161a =~ (brd[0-9]{4}[a-z]{1}) ]]
++ echo brd4161a
+ board=brd4161a
+ local board_slcc
++ efr32_get_board_slcc brd4161a
++ local -r 'doc=Gets the latest revision .slcc file for a efr32 board'
++ '[' 1 -ne 1 ']'
++ '[' -z brd4161a ']'
++ local board=brd4161a
++ local board_slcc
+++ find /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk//hardware/board/component -type f '(' -name 'brd4161a*' '!' -name '*_support.slcc' ')'
+++ sort --version-sort
+++ tail -n 1
++ board_slcc=/Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk//hardware/board/component/brd4161a.slcc
++ echo /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk//hardware/board/component/brd4161a.slcc
+ board_slcc=/Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk//hardware/board/component/brd4161a.slcc
+ local platform
++ grep -Eo 'board:device:.*' /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk//hardware/board/component/brd4161a.slcc
++ sed 's/board:device:\(efr32\)*\([[:alpha:]]\{2\}\)\(m*\)\([[:digit:]]\{1,2\}\)[[:digit:]]\{0,1\}\([[:alpha:]]\{1\}\)\([[:alpha:]]\{0,1\}[[:digit:]]\{1,3\}\)\(f[[:digit:]]\{1,\}\)*\([[:alpha:]]\{2,3\}\)*\(f[[:digit:]]\{1,\}\)*.*/efr32\2\4/'
++ head -n 1
+ platform=efr32mg12
+ '[' -z efr32mg12 ']'
+ efr32_check_platform efr32mg12
+ local match=false
+ local platform=efr32mg12
++ efr32_get_platforms
++ local platform_dir=/Users/gabekas/ot-efr32-upstream/src
++ find /Users/gabekas/ot-efr32-upstream/src -type d -name '*efr32*' -exec basename '{}' ';'
++ sort
+ for efr32_platform in '$(efr32_get_platforms)'
+ [[ efr32mg1 == \e\f\r\3\2\m\g\1\2 ]]
+ for efr32_platform in '$(efr32_get_platforms)'
+ [[ efr32mg12 == \e\f\r\3\2\m\g\1\2 ]]
+ match=true
+ break
+ true
+ return 0
+ shift
+ options=("${OT_OPTIONS[@]}")
+ local options
+ options+=("-DCMAKE_TOOLCHAIN_FILE=src/${platform}/arm-none-eabi.cmake")
+ case "${platform}" in
+ OT_CMAKE_NINJA_TARGET=("ot-rcp" "ot-cli-ftd" "ot-cli-mtd" "ot-ncp-ftd" "ot-ncp-mtd")
+ '[' true = false ']'
+ slc_init
+ command -v slc
+ command -v slc-cli
+ echo 'The '\''slc-cli'\'' command could not be found in your PATH.'
The 'slc-cli' command could not be found in your PATH.
+++ [[ darwin21 == darwin* ]]
+++ echo +
++ find /Users/gabekas/ot-efr32-upstream/third_party/silabs/slc -perm +111 -name 'slc*' -type f
+ slc_cmd=/Users/gabekas/ot-efr32-upstream/third_party/silabs/slc/slc_cli/bin/slc-cli/slc-cli.app/Contents/MacOS/slc-cli
+ '[' -z /Users/gabekas/ot-efr32-upstream/third_party/silabs/slc/slc_cli/bin/slc-cli/slc-cli.app/Contents/MacOS/slc-cli ']'
+++ [[ darwin21 == darwin* ]]
+++ echo +
++ find /Users/gabekas/ot-efr32-upstream/third_party/silabs/slc -perm +111 -name 'slc*' -type f
+ slc_cmd=/Users/gabekas/ot-efr32-upstream/third_party/silabs/slc/slc_cli/bin/slc-cli/slc-cli.app/Contents/MacOS/slc-cli
+ options+=("$@")
+ build -DEFR32_PLATFORM=efr32mg12 -DBOARD=brd4161a -DCMAKE_BUILD_TYPE=Release -DOT_DIAGNOSTIC=ON -DOT_EXTERNAL_HEAP=ON -DOT_SLAAC=ON -DCMAKE_TOOLCHAIN_FILE=src/efr32mg12/arm-none-eabi.cmake
+ builddir=/Users/gabekas/ot-efr32-upstream/build/brd4161a
+ mkdir -p /Users/gabekas/ot-efr32-upstream/build/brd4161a
+ cd /Users/gabekas/ot-efr32-upstream/build/brd4161a
+ '[' false = false ']'
+ local slc_generated_projects_dir=/Users/gabekas/ot-efr32-upstream/build/brd4161a/slc
+ run_slc -v 1 signature trust --sdk /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/
+ IFS=' '
+ read -r -a slc_args
+ /Users/gabekas/ot-efr32-upstream/third_party/silabs/slc/slc_cli/bin/slc-cli/slc-cli.app/Contents/MacOS/slc-cli -v 1 signature trust --sdk /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/
Script started, output file is /dev/null

Script done, output file is /dev/null
+ cleanup
+ '[' 9 -eq 14 ']'
➜  ot-efr32-upstream git:(main) ./script/build $board 
+ [[ -n ./script/build ]]
+ script_path=./script/build
+++ realpath ./script/build
++ dirname /Users/gabekas/ot-efr32-upstream/script/build
+ script_dir=/Users/gabekas/ot-efr32-upstream/script
++ dirname /Users/gabekas/ot-efr32-upstream/script
+ repo_dir=/Users/gabekas/ot-efr32-upstream
+ board=brdXXXXY
+ source /Users/gabekas/ot-efr32-upstream/script/efr32-definitions
++ [[ -n /Users/gabekas/ot-efr32-upstream/script/efr32-definitions ]]
++ script_path=/Users/gabekas/ot-efr32-upstream/script/efr32-definitions
++++ realpath /Users/gabekas/ot-efr32-upstream/script/efr32-definitions
+++ dirname /Users/gabekas/ot-efr32-upstream/script/efr32-definitions
++ script_dir=/Users/gabekas/ot-efr32-upstream/script
+++ dirname /Users/gabekas/ot-efr32-upstream/script
++ repo_dir=/Users/gabekas/ot-efr32-upstream
++ sdk_dir=/Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/
++ efr32_device_regex=
++ efr32_device_regex+='\(efr32\)*'
++ efr32_device_regex+='\([[:alpha:]]\{2\}\)'
++ efr32_device_regex+='\(m*\)'
++ efr32_device_regex+='\([[:digit:]]\{1,2\}\)[[:digit:]]\{0,1\}'
++ efr32_device_regex+='\([[:alpha:]]\{1\}\)'
++ efr32_device_regex+='\([[:alpha:]]\{0,1\}[[:digit:]]\{1,3\}\)'
++ efr32_device_regex+='\(f[[:digit:]]\{1,\}\)*'
++ efr32_device_regex+='\([[:alpha:]]\{2,3\}\)*'
++ efr32_device_regex+='\(f[[:digit:]]\{1,\}\)*'
++ efr32_device_regex+='.*'
++ readonly efr32_device_regex
+ source /Users/gabekas/ot-efr32-upstream/script/slc_cli
++ [[ -n /Users/gabekas/ot-efr32-upstream/script/slc_cli ]]
++ script_path=/Users/gabekas/ot-efr32-upstream/script/slc_cli
++++ realpath /Users/gabekas/ot-efr32-upstream/script/slc_cli
+++ dirname /Users/gabekas/ot-efr32-upstream/script/slc_cli
++ script_dir=/Users/gabekas/ot-efr32-upstream/script
+++ dirname /Users/gabekas/ot-efr32-upstream/script
++ repo_dir=/Users/gabekas/ot-efr32-upstream
++ '[' -n '' ']'
++ SLC_INSTALL_DIR=/Users/gabekas/ot-efr32-upstream/third_party/silabs/slc
++ slc_cmd=
++ use_slc_from_path=1
++ trap cleanup EXIT
+ OT_CMAKE_NINJA_TARGET=
+ OT_OPTIONS=("-DCMAKE_BUILD_TYPE=Release" "-DOT_DIAGNOSTIC=ON" "-DOT_EXTERNAL_HEAP=ON" "-DOT_SLAAC=ON")
+ readonly OT_OPTIONS
+ main brd4161a
+ local 'usage=usage: ./script/build [-h] [--skip-silabs-apps] <efr32 platform> -DBOARD=<brdXXXXy> [-D<OT_XXXX=ON> -D<OT_YYYY=OFF>]'
+ local skip_silabs_apps=true
+ skip_generation=false
+ optspec=:h-:
+ getopts :h-: optchar
++ echo brd4161a
++ tr '[:upper:]' '[:lower:]'
+ lowercase_args=brd4161a
++ [[ brd4161a =~ (brd[0-9]{4}[a-z]{1}) ]]
++ echo brd4161a
+ board=brd4161a
+ local board_slcc
++ efr32_get_board_slcc brd4161a
++ local -r 'doc=Gets the latest revision .slcc file for a efr32 board'
++ '[' 1 -ne 1 ']'
++ '[' -z brd4161a ']'
++ local board=brd4161a
++ local board_slcc
+++ find /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk//hardware/board/component -type f '(' -name 'brd4161a*' '!' -name '*_support.slcc' ')'
+++ sort --version-sort
+++ tail -n 1
++ board_slcc=/Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk//hardware/board/component/brd4161a.slcc
++ echo /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk//hardware/board/component/brd4161a.slcc
+ board_slcc=/Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk//hardware/board/component/brd4161a.slcc
+ local platform
++ grep -Eo 'board:device:.*' /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk//hardware/board/component/brd4161a.slcc
++ sed 's/board:device:\(efr32\)*\([[:alpha:]]\{2\}\)\(m*\)\([[:digit:]]\{1,2\}\)[[:digit:]]\{0,1\}\([[:alpha:]]\{1\}\)\([[:alpha:]]\{0,1\}[[:digit:]]\{1,3\}\)\(f[[:digit:]]\{1,\}\)*\([[:alpha:]]\{2,3\}\)*\(f[[:digit:]]\{1,\}\)*.*/efr32\2\4/'
++ head -n 1
+ platform=efr32mg12
+ '[' -z efr32mg12 ']'
+ efr32_check_platform efr32mg12
+ local match=false
+ local platform=efr32mg12
++ efr32_get_platforms
++ local platform_dir=/Users/gabekas/ot-efr32-upstream/src
++ find /Users/gabekas/ot-efr32-upstream/src -type d -name '*efr32*' -exec basename '{}' ';'
++ sort
+ for efr32_platform in '$(efr32_get_platforms)'
+ [[ efr32mg1 == \e\f\r\3\2\m\g\1\2 ]]
+ for efr32_platform in '$(efr32_get_platforms)'
+ [[ efr32mg12 == \e\f\r\3\2\m\g\1\2 ]]
+ match=true
+ break
+ true
+ return 0
+ shift
+ options=("${OT_OPTIONS[@]}")
+ local options
+ options+=("-DCMAKE_TOOLCHAIN_FILE=src/${platform}/arm-none-eabi.cmake")
+ case "${platform}" in
+ OT_CMAKE_NINJA_TARGET=("ot-rcp" "ot-cli-ftd" "ot-cli-mtd" "ot-ncp-ftd" "ot-ncp-mtd")
+ '[' true = false ']'
+ slc_init
+ command -v slc
+ command -v slc-cli
+ echo 'The '\''slc-cli'\'' command could not be found in your PATH.'
The 'slc-cli' command could not be found in your PATH.
+++ [[ darwin21 == darwin* ]]
+++ echo +
++ find /Users/gabekas/ot-efr32-upstream/third_party/silabs/slc -perm +111 -name 'slc*' -type f
+ slc_cmd=/Users/gabekas/ot-efr32-upstream/third_party/silabs/slc/slc_cli/bin/slc-cli/slc-cli.app/Contents/MacOS/slc-cli
+ '[' -z /Users/gabekas/ot-efr32-upstream/third_party/silabs/slc/slc_cli/bin/slc-cli/slc-cli.app/Contents/MacOS/slc-cli ']'
+++ [[ darwin21 == darwin* ]]
+++ echo +
++ find /Users/gabekas/ot-efr32-upstream/third_party/silabs/slc -perm +111 -name 'slc*' -type f
+ slc_cmd=/Users/gabekas/ot-efr32-upstream/third_party/silabs/slc/slc_cli/bin/slc-cli/slc-cli.app/Contents/MacOS/slc-cli
+ options+=("$@")
+ build -DEFR32_PLATFORM=efr32mg12 -DBOARD=brd4161a -DCMAKE_BUILD_TYPE=Release -DOT_DIAGNOSTIC=ON -DOT_EXTERNAL_HEAP=ON -DOT_SLAAC=ON -DCMAKE_TOOLCHAIN_FILE=src/efr32mg12/arm-none-eabi.cmake
+ builddir=/Users/gabekas/ot-efr32-upstream/build/brd4161a
+ mkdir -p /Users/gabekas/ot-efr32-upstream/build/brd4161a
+ cd /Users/gabekas/ot-efr32-upstream/build/brd4161a
+ '[' false = false ']'
+ local slc_generated_projects_dir=/Users/gabekas/ot-efr32-upstream/build/brd4161a/slc
+ run_slc -v 1 signature trust --sdk /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/
+ IFS=' '
+ read -r -a slc_args
+ /Users/gabekas/ot-efr32-upstream/third_party/silabs/slc/slc_cli/bin/slc-cli/slc-cli.app/Contents/MacOS/slc-cli -v 1 signature trust --sdk /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/
Script started, output file is /dev/null

Script done, output file is /dev/null
+ cleanup
+ '[' 9 -eq 14 ']'
➜  ot-efr32-upstream git:(main) java --version
openjdk 11.0.16.1 2022-08-12 LTS
OpenJDK Runtime Environment Corretto-11.0.16.9.1 (build 11.0.16.1+9-LTS)
OpenJDK 64-Bit Server VM Corretto-11.0.16.9.1 (build 11.0.16.1+9-LTS, mixed mode)
➜  ot-efr32-upstream git:(main) ls -al build/brd4161a 
total 0
drwxr-xr-x  2 gabekas  staff   64 Sep  6 08:55 .
drwxr-xr-x  4 gabekas  staff  128 Sep  6 08:55 ..
➜  ot-efr32-upstream git:(main) ./script/build $board
➜  ot-efr32-upstream git:(main) board=brd4151a
➜  ot-efr32-upstream git:(main) ./script/build $board
+ [[ -n ./script/build ]]
+ script_path=./script/build
+++ realpath ./script/build
++ dirname /Users/gabekas/ot-efr32-upstream/script/build
+ script_dir=/Users/gabekas/ot-efr32-upstream/script
++ dirname /Users/gabekas/ot-efr32-upstream/script
+ repo_dir=/Users/gabekas/ot-efr32-upstream
+ board=brdXXXXY
+ source /Users/gabekas/ot-efr32-upstream/script/efr32-definitions
++ [[ -n /Users/gabekas/ot-efr32-upstream/script/efr32-definitions ]]
++ script_path=/Users/gabekas/ot-efr32-upstream/script/efr32-definitions
++++ realpath /Users/gabekas/ot-efr32-upstream/script/efr32-definitions
+++ dirname /Users/gabekas/ot-efr32-upstream/script/efr32-definitions
++ script_dir=/Users/gabekas/ot-efr32-upstream/script
+++ dirname /Users/gabekas/ot-efr32-upstream/script
++ repo_dir=/Users/gabekas/ot-efr32-upstream
++ sdk_dir=/Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/
++ efr32_device_regex=
++ efr32_device_regex+='\(efr32\)*'
++ efr32_device_regex+='\([[:alpha:]]\{2\}\)'
++ efr32_device_regex+='\(m*\)'
++ efr32_device_regex+='\([[:digit:]]\{1,2\}\)[[:digit:]]\{0,1\}'
++ efr32_device_regex+='\([[:alpha:]]\{1\}\)'
++ efr32_device_regex+='\([[:alpha:]]\{0,1\}[[:digit:]]\{1,3\}\)'
++ efr32_device_regex+='\(f[[:digit:]]\{1,\}\)*'
++ efr32_device_regex+='\([[:alpha:]]\{2,3\}\)*'
++ efr32_device_regex+='\(f[[:digit:]]\{1,\}\)*'
++ efr32_device_regex+='.*'
++ readonly efr32_device_regex
+ source /Users/gabekas/ot-efr32-upstream/script/slc_cli
++ [[ -n /Users/gabekas/ot-efr32-upstream/script/slc_cli ]]
++ script_path=/Users/gabekas/ot-efr32-upstream/script/slc_cli
++++ realpath /Users/gabekas/ot-efr32-upstream/script/slc_cli
+++ dirname /Users/gabekas/ot-efr32-upstream/script/slc_cli
++ script_dir=/Users/gabekas/ot-efr32-upstream/script
+++ dirname /Users/gabekas/ot-efr32-upstream/script
++ repo_dir=/Users/gabekas/ot-efr32-upstream
++ '[' -n '' ']'
++ SLC_INSTALL_DIR=/Users/gabekas/ot-efr32-upstream/third_party/silabs/slc
++ slc_cmd=
++ use_slc_from_path=1
++ trap cleanup EXIT
+ OT_CMAKE_NINJA_TARGET=
+ OT_OPTIONS=("-DCMAKE_BUILD_TYPE=Release" "-DOT_DIAGNOSTIC=ON" "-DOT_EXTERNAL_HEAP=ON" "-DOT_SLAAC=ON")
+ readonly OT_OPTIONS
+ main brd4151a
+ local 'usage=usage: ./script/build [-h] [--skip-silabs-apps] <efr32 platform> -DBOARD=<brdXXXXy> [-D<OT_XXXX=ON> -D<OT_YYYY=OFF>]'
+ local skip_silabs_apps=true
+ skip_generation=false
+ optspec=:h-:
+ getopts :h-: optchar
++ echo brd4151a
++ tr '[:upper:]' '[:lower:]'
+ lowercase_args=brd4151a
++ [[ brd4151a =~ (brd[0-9]{4}[a-z]{1}) ]]
++ echo brd4151a
+ board=brd4151a
+ local board_slcc
++ efr32_get_board_slcc brd4151a
++ local -r 'doc=Gets the latest revision .slcc file for a efr32 board'
++ '[' 1 -ne 1 ']'
++ '[' -z brd4151a ']'
++ local board=brd4151a
++ local board_slcc
+++ find /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk//hardware/board/component -type f '(' -name 'brd4151a*' '!' -name '*_support.slcc' ')'
+++ sort --version-sort
+++ tail -n 1
++ board_slcc=/Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk//hardware/board/component/brd4151a.slcc
++ echo /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk//hardware/board/component/brd4151a.slcc
+ board_slcc=/Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk//hardware/board/component/brd4151a.slcc
+ local platform
++ grep -Eo 'board:device:.*' /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk//hardware/board/component/brd4151a.slcc
++ sed 's/board:device:\(efr32\)*\([[:alpha:]]\{2\}\)\(m*\)\([[:digit:]]\{1,2\}\)[[:digit:]]\{0,1\}\([[:alpha:]]\{1\}\)\([[:alpha:]]\{0,1\}[[:digit:]]\{1,3\}\)\(f[[:digit:]]\{1,\}\)*\([[:alpha:]]\{2,3\}\)*\(f[[:digit:]]\{1,\}\)*.*/efr32\2\4/'
++ head -n 1
+ platform=efr32mg1
+ '[' -z efr32mg1 ']'
+ efr32_check_platform efr32mg1
+ local match=false
+ local platform=efr32mg1
++ efr32_get_platforms
++ local platform_dir=/Users/gabekas/ot-efr32-upstream/src
++ find /Users/gabekas/ot-efr32-upstream/src -type d -name '*efr32*' -exec basename '{}' ';'
++ sort
+ for efr32_platform in '$(efr32_get_platforms)'
+ [[ efr32mg1 == \e\f\r\3\2\m\g\1 ]]
+ match=true
+ break
+ true
+ return 0
+ shift
+ options=("${OT_OPTIONS[@]}")
+ local options
+ options+=("-DCMAKE_TOOLCHAIN_FILE=src/${platform}/arm-none-eabi.cmake")
+ case "${platform}" in
+ OT_CMAKE_NINJA_TARGET=("ot-rcp")
+ slc_init
+ command -v slc
+ command -v slc-cli
+ echo 'The '\''slc-cli'\'' command could not be found in your PATH.'
The 'slc-cli' command could not be found in your PATH.
+++ [[ darwin21 == darwin* ]]
+++ echo +
++ find /Users/gabekas/ot-efr32-upstream/third_party/silabs/slc -perm +111 -name 'slc*' -type f
+ slc_cmd=/Users/gabekas/ot-efr32-upstream/third_party/silabs/slc/slc_cli/bin/slc-cli/slc-cli.app/Contents/MacOS/slc-cli
+ '[' -z /Users/gabekas/ot-efr32-upstream/third_party/silabs/slc/slc_cli/bin/slc-cli/slc-cli.app/Contents/MacOS/slc-cli ']'
+++ [[ darwin21 == darwin* ]]
+++ echo +
++ find /Users/gabekas/ot-efr32-upstream/third_party/silabs/slc -perm +111 -name 'slc*' -type f
+ slc_cmd=/Users/gabekas/ot-efr32-upstream/third_party/silabs/slc/slc_cli/bin/slc-cli/slc-cli.app/Contents/MacOS/slc-cli
+ options+=("$@")
+ build -DEFR32_PLATFORM=efr32mg1 -DBOARD=brd4151a -DCMAKE_BUILD_TYPE=Release -DOT_DIAGNOSTIC=ON -DOT_EXTERNAL_HEAP=ON -DOT_SLAAC=ON -DCMAKE_TOOLCHAIN_FILE=src/efr32mg1/arm-none-eabi.cmake
+ builddir=/Users/gabekas/ot-efr32-upstream/build/brd4151a
+ mkdir -p /Users/gabekas/ot-efr32-upstream/build/brd4151a
+ cd /Users/gabekas/ot-efr32-upstream/build/brd4151a
+ '[' false = false ']'
+ local slc_generated_projects_dir=/Users/gabekas/ot-efr32-upstream/build/brd4151a/slc
+ run_slc -v 1 signature trust --sdk /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/
+ IFS=' '
+ read -r -a slc_args
+ /Users/gabekas/ot-efr32-upstream/third_party/silabs/slc/slc_cli/bin/slc-cli/slc-cli.app/Contents/MacOS/slc-cli -v 1 signature trust --sdk /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/
Script started, output file is /dev/null

Script done, output file is /dev/null
+ cleanup
+ '[' 9 -eq 14 ']'
➜  ot-efr32-upstream git:(main) clear
^[[A^C
➜  ot-efr32-upstream git:(main) clear

➜  ot-efr32-upstream git:(main) java --version       
openjdk 11.0.16.1 2022-08-12 LTS
OpenJDK Runtime Environment Corretto-11.0.16.9.1 (build 11.0.16.1+9-LTS)
OpenJDK 64-Bit Server VM Corretto-11.0.16.9.1 (build 11.0.16.1+9-LTS, mixed mode)
➜  ot-efr32-upstream git:(main) board=brd4151a       
➜  ot-efr32-upstream git:(main) ./script/build $board
+ [[ -n ./script/build ]]
+ script_path=./script/build
+++ realpath ./script/build
++ dirname /Users/gabekas/ot-efr32-upstream/script/build
+ script_dir=/Users/gabekas/ot-efr32-upstream/script
++ dirname /Users/gabekas/ot-efr32-upstream/script
+ repo_dir=/Users/gabekas/ot-efr32-upstream
+ board=brdXXXXY
+ source /Users/gabekas/ot-efr32-upstream/script/efr32-definitions
++ [[ -n /Users/gabekas/ot-efr32-upstream/script/efr32-definitions ]]
++ script_path=/Users/gabekas/ot-efr32-upstream/script/efr32-definitions
++++ realpath /Users/gabekas/ot-efr32-upstream/script/efr32-definitions
+++ dirname /Users/gabekas/ot-efr32-upstream/script/efr32-definitions
++ script_dir=/Users/gabekas/ot-efr32-upstream/script
+++ dirname /Users/gabekas/ot-efr32-upstream/script
++ repo_dir=/Users/gabekas/ot-efr32-upstream
++ sdk_dir=/Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/
++ efr32_device_regex=
++ efr32_device_regex+='\(efr32\)*'
++ efr32_device_regex+='\([[:alpha:]]\{2\}\)'
++ efr32_device_regex+='\(m*\)'
++ efr32_device_regex+='\([[:digit:]]\{1,2\}\)[[:digit:]]\{0,1\}'
++ efr32_device_regex+='\([[:alpha:]]\{1\}\)'
++ efr32_device_regex+='\([[:alpha:]]\{0,1\}[[:digit:]]\{1,3\}\)'
++ efr32_device_regex+='\(f[[:digit:]]\{1,\}\)*'
++ efr32_device_regex+='\([[:alpha:]]\{2,3\}\)*'
++ efr32_device_regex+='\(f[[:digit:]]\{1,\}\)*'
++ efr32_device_regex+='.*'
++ readonly efr32_device_regex
+ source /Users/gabekas/ot-efr32-upstream/script/slc_cli
++ [[ -n /Users/gabekas/ot-efr32-upstream/script/slc_cli ]]
++ script_path=/Users/gabekas/ot-efr32-upstream/script/slc_cli
++++ realpath /Users/gabekas/ot-efr32-upstream/script/slc_cli
+++ dirname /Users/gabekas/ot-efr32-upstream/script/slc_cli
++ script_dir=/Users/gabekas/ot-efr32-upstream/script
+++ dirname /Users/gabekas/ot-efr32-upstream/script
++ repo_dir=/Users/gabekas/ot-efr32-upstream
++ '[' -n '' ']'
++ SLC_INSTALL_DIR=/Users/gabekas/ot-efr32-upstream/third_party/silabs/slc
++ slc_cmd=
++ use_slc_from_path=1
++ trap cleanup EXIT
+ OT_CMAKE_NINJA_TARGET=
+ OT_OPTIONS=("-DCMAKE_BUILD_TYPE=Release" "-DOT_DIAGNOSTIC=ON" "-DOT_EXTERNAL_HEAP=ON" "-DOT_SLAAC=ON")
+ readonly OT_OPTIONS
+ main brd4151a
+ local 'usage=usage: ./script/build [-h] [--skip-silabs-apps] <efr32 platform> -DBOARD=<brdXXXXy> [-D<OT_XXXX=ON> -D<OT_YYYY=OFF>]'
+ local skip_silabs_apps=true
+ skip_generation=false
+ optspec=:h-:
+ getopts :h-: optchar
++ echo brd4151a
++ tr '[:upper:]' '[:lower:]'
+ lowercase_args=brd4151a
++ [[ brd4151a =~ (brd[0-9]{4}[a-z]{1}) ]]
++ echo brd4151a
+ board=brd4151a
+ local board_slcc
++ efr32_get_board_slcc brd4151a
++ local -r 'doc=Gets the latest revision .slcc file for a efr32 board'
++ '[' 1 -ne 1 ']'
++ '[' -z brd4151a ']'
++ local board=brd4151a
++ local board_slcc
+++ find /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk//hardware/board/component -type f '(' -name 'brd4151a*' '!' -name '*_support.slcc' ')'
+++ sort --version-sort
+++ tail -n 1
++ board_slcc=/Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk//hardware/board/component/brd4151a.slcc
++ echo /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk//hardware/board/component/brd4151a.slcc
+ board_slcc=/Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk//hardware/board/component/brd4151a.slcc
+ local platform
++ grep -Eo 'board:device:.*' /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk//hardware/board/component/brd4151a.slcc
++ sed 's/board:device:\(efr32\)*\([[:alpha:]]\{2\}\)\(m*\)\([[:digit:]]\{1,2\}\)[[:digit:]]\{0,1\}\([[:alpha:]]\{1\}\)\([[:alpha:]]\{0,1\}[[:digit:]]\{1,3\}\)\(f[[:digit:]]\{1,\}\)*\([[:alpha:]]\{2,3\}\)*\(f[[:digit:]]\{1,\}\)*.*/efr32\2\4/'
++ head -n 1
+ platform=efr32mg1
+ '[' -z efr32mg1 ']'
+ efr32_check_platform efr32mg1
+ local match=false
+ local platform=efr32mg1
++ efr32_get_platforms
++ local platform_dir=/Users/gabekas/ot-efr32-upstream/src
++ find /Users/gabekas/ot-efr32-upstream/src -type d -name '*efr32*' -exec basename '{}' ';'
++ sort
+ for efr32_platform in '$(efr32_get_platforms)'
+ [[ efr32mg1 == \e\f\r\3\2\m\g\1 ]]
+ match=true
+ break
+ true
+ return 0
+ shift
+ options=("${OT_OPTIONS[@]}")
+ local options
+ options+=("-DCMAKE_TOOLCHAIN_FILE=src/${platform}/arm-none-eabi.cmake")
+ case "${platform}" in
+ OT_CMAKE_NINJA_TARGET=("ot-rcp")
+ slc_init
+ command -v slc
+ command -v slc-cli
+ echo 'The '\''slc-cli'\'' command could not be found in your PATH.'
The 'slc-cli' command could not be found in your PATH.
+++ [[ darwin21 == darwin* ]]
+++ echo +
++ find /Users/gabekas/ot-efr32-upstream/third_party/silabs/slc -perm +111 -name 'slc*' -type f
+ slc_cmd=/Users/gabekas/ot-efr32-upstream/third_party/silabs/slc/slc_cli/bin/slc-cli/slc-cli.app/Contents/MacOS/slc-cli
+ '[' -z /Users/gabekas/ot-efr32-upstream/third_party/silabs/slc/slc_cli/bin/slc-cli/slc-cli.app/Contents/MacOS/slc-cli ']'
+++ [[ darwin21 == darwin* ]]
+++ echo +
++ find /Users/gabekas/ot-efr32-upstream/third_party/silabs/slc -perm +111 -name 'slc*' -type f
+ slc_cmd=/Users/gabekas/ot-efr32-upstream/third_party/silabs/slc/slc_cli/bin/slc-cli/slc-cli.app/Contents/MacOS/slc-cli
+ options+=("$@")
+ build -DEFR32_PLATFORM=efr32mg1 -DBOARD=brd4151a -DCMAKE_BUILD_TYPE=Release -DOT_DIAGNOSTIC=ON -DOT_EXTERNAL_HEAP=ON -DOT_SLAAC=ON -DCMAKE_TOOLCHAIN_FILE=src/efr32mg1/arm-none-eabi.cmake
+ builddir=/Users/gabekas/ot-efr32-upstream/build/brd4151a
+ mkdir -p /Users/gabekas/ot-efr32-upstream/build/brd4151a
+ cd /Users/gabekas/ot-efr32-upstream/build/brd4151a
+ '[' false = false ']'
+ local slc_generated_projects_dir=/Users/gabekas/ot-efr32-upstream/build/brd4151a/slc
+ run_slc -v 1 signature trust --sdk /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/
+ IFS=' '
+ read -r -a slc_args
+ /Users/gabekas/ot-efr32-upstream/third_party/silabs/slc/slc_cli/bin/slc-cli/slc-cli.app/Contents/MacOS/slc-cli -v 1 signature trust --sdk /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/
Script started, output file is /dev/null

Script done, output file is /dev/null
+ cleanup
+ '[' 9 -eq 14 ']'

@gabekassel
Copy link
Author

I guess that's due to The 'slc-cli' command could not be found in your PATH.

@gabekassel
Copy link
Author

after installing manually and setting in my path (also removed the other jvm i had)

+ slc-cli -v 1 signature trust --sdk /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/
2022-09-14 10:19:07.615 slc-cli[32961:211772] Error loading /Library/Java/JavaVirtualMachines/amazon-corretto-11.jdk/Contents/MacOS/libjli.dylib:  dlopen(/Library/Java/JavaVirtualMachines/amazon-corretto-11.jdk/Contents/MacOS/libjli.dylib, 0x0109): tried: '/Library/Java/JavaVirtualMachines/amazon-corretto-11.jdk/Contents/MacOS/libjli.dylib' (mach-o file, but is an incompatible architecture (have (arm64), need (x86_64)))
Slc-cli:
The JVM shared library "/Library/Java/JavaVirtualMachines/amazon-corretto-11.jdk/Contents/Home/bin/../lib/server/libjvm.dylib"
does not contain the JNI_CreateJavaVM symbol.

@gabekassel
Copy link
Author

@romacdon on a different (also M1 mac) machine:

+ /Users/gabekassel/ot-efr32-upstream/third_party/silabs/slc/slc_cli/bin/slc-cli/slc-cli.app/Contents/MacOS/slc-cli -v 1 signature trust --sdk /Users/gabekassel/ot-efr32-upstream/third_party/silabs/gecko_sdk/
dlopen(/Users/gabekassel/.sdkman/candidates/java/17.0.1.12.1-amzn/bin/../lib/server/libjvm.dylib, 0x0002): tried: '/Users/gabekassel/.sdkman/candidates/java/17.0.1.12.1-amzn/bin/../lib/server/libjvm.dylib' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')), '/Users/gabekassel/.sdkman/candidates/java/17.0.1.12.1-amzn/lib/server/libjvm.dylib' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64'))
Slc-cli:
Failed to load the JNI shared library "/Users/gabekassel/.sdkman/candidates/java/17.0.1.12.1-amzn/bin/../lib/server/libjvm.dylib".

@romacdon
Copy link

romacdon commented Sep 14, 2022

@gabekassel - Regarding this message - "The 'slc-cli' command could not be found in your PATH.". That is really not an issue. The script first tries to use the slc command in your path and if it doesn't find it reports that message but then downloads it and uses the version it downloads.

As for the "The JVM shared library "/Library/Java/JavaVirtualMachines/amazon-corretto-11.jdk/Contents/Home/bin/../lib/server/libjvm.dylib" does not contain the JNI_CreateJavaVM symbol." - I'm not sure what that is and will need to investigate.

@romacdon
Copy link

@gabekassel - I think I know what the issue is. As @mhallam91 said SLC isn't supported on ARM macs yet. However, you should be able to load the x86-64 version of Java and run through Rosetta. Thats how its working for me.

@gabekassel
Copy link
Author

makes sense! that seems to have done the trick

@gabekassel
Copy link
Author

failed on an actual build issue now. need to see if this is a real failure or toolchain issue

FAILED: bin/ot-rcp 
: && /opt/homebrew/bin/arm-none-eabi-g++ -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -mthumb -fdata-sections -ffunction-sections -fno-exceptions -fno-rtti -Os -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -mthumb -fdata-sections -ffunction-sections -specs=nano.specs -specs=nosys.specs openthread/examples/apps/ncp/CMakeFiles/ot-rcp.dir/main.c.obj openthread/examples/apps/ncp/CMakeFiles/ot-rcp.dir/ncp.c.obj -o bin/ot-rcp  lib/libopenthread-rcp.a  lib/libopenthread-efr32-rcp.a  lib/libopenthread-radio.a  lib/libopenthread-efr32-rcp.a  lib/libopenthread-rcp.a  lib/libopenthread-radio.a  lib/libopenthread-efr32-soc-mbedtls.a  lib/libopenthread-hdlc.a  lib/libopenthread-spinel-rcp.a  -T/Users/gabekas/ot-efr32-upstream/build/brd4151a/slc/rcp/platform/autogen/linkerfile.ld  -Wl,--gc-sections  -Wl,--whole-archive  lib/libopenthread-efr32-rcp-sdk.a  -Wl,--no-whole-archive  /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a  /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/protocol/openthread/libs/libsl_openthread_efr32mg1x_gcc.a  /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/platform/radio/rail_lib/autogen/librail_release/librail_efr32xg1_gcc_release.a  lib/libopenthread-efr32-rcp-sdk.a  -lstdc++  -lgcc  -lc  -lm  -lnosys  lib/libopenthread-efr32-rcp-mbedtls.a  /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a  /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/protocol/openthread/libs/libsl_openthread_efr32mg1x_gcc.a  /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/platform/radio/rail_lib/autogen/librail_release/librail_efr32xg1_gcc_release.a && :
/opt/homebrew/Cellar/arm-none-eabi-gcc/10.3-2021.07/gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/bin/ld:/Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a: file format not recognized; treating as linker script
/opt/homebrew/Cellar/arm-none-eabi-gcc/10.3-2021.07/gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/bin/ld:/Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a:1: syntax error
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
+ cleanup
+ '[' 1 -eq 14 ']'

@gabekassel
Copy link
Author

here's 4161a. @romacdon have you seen this?

-- Package Name: OPENTHREAD
-- Package Version: 54808aa
Checking /Users/gabekas/ot-efr32-upstream/build/brd4161a/slc/soc/platform
......... EXISTS
Checking /Users/gabekas/ot-efr32-upstream/build/brd4161a/slc/soc/mbedtls
......... EXISTS
Checking /Users/gabekas/ot-efr32-upstream/build/brd4161a/slc/rcp/platform
......... EXISTS
Checking /Users/gabekas/ot-efr32-upstream/build/brd4161a/slc/rcp/mbedtls
......... EXISTS
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/gabekas/ot-efr32-upstream/build/brd4161a
+ [[ -n ot-rcp ot-cli-ftd ot-cli-mtd ot-ncp-ftd ot-ncp-mtd ]]
+ ninja ot-rcp ot-cli-ftd ot-cli-mtd ot-ncp-ftd ot-ncp-mtd
[4/844] Building C object openthread/examples/platforms/utils/CMakeFiles/openthread-platform-utils.dir/logging_rtt.c.obj
In file included from /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/util/third_party/segger/systemview/SEGGER/SEGGER_RTT.h:60,
                 from /Users/gabekas/ot-efr32-upstream/openthread/examples/platforms/utils/logging_rtt.c:42:
/Users/gabekas/ot-efr32-upstream/openthread/third_party/jlink/SEGGER_RTT_V640/RTT/SEGGER_RTT_Conf.h:80: warning: "BUFFER_SIZE_UP" redefined
   80 | #define BUFFER_SIZE_UP                            (1024)  // Size of the buffer for terminal output of target, up to host (Default: 1k)
      | 
<command-line>: note: this is the location of the previous definition
In file included from /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/util/third_party/segger/systemview/SEGGER/SEGGER_RTT.h:60,
                 from /Users/gabekas/ot-efr32-upstream/openthread/examples/platforms/utils/logging_rtt.c:42:
/Users/gabekas/ot-efr32-upstream/openthread/third_party/jlink/SEGGER_RTT_V640/RTT/SEGGER_RTT_Conf.h:81: warning: "BUFFER_SIZE_DOWN" redefined
   81 | #define BUFFER_SIZE_DOWN                          (16)    // Size of the buffer for terminal input to target from host (Usually keyboard input) (Default: 16)
      | 
<command-line>: note: this is the location of the previous definition
[753/844] Linking CXX executable bin/ot-cli-ftd
FAILED: bin/ot-cli-ftd 
: && /opt/homebrew/bin/arm-none-eabi-g++ -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -mthumb -fdata-sections -ffunction-sections -fno-exceptions -fno-rtti -Os -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -mthumb -fdata-sections -ffunction-sections -specs=nano.specs -specs=nosys.specs openthread/examples/apps/cli/CMakeFiles/ot-cli-ftd.dir/cli_uart.cpp.obj openthread/examples/apps/cli/CMakeFiles/ot-cli-ftd.dir/main.c.obj openthread/examples/apps/cli/CMakeFiles/ot-cli-ftd.dir/__/__/__/__/src/efr32mg12/phy/PHY_IEEE802154_915MHZ_OQPSK_EFR32XG12.c.obj openthread/examples/apps/cli/CMakeFiles/ot-cli-ftd.dir/__/__/__/__/src/efr32mg12/phy/PHY_IEEE802154_915MHZ_2GFSK_EFR32XG12.c.obj -o bin/ot-cli-ftd  lib/libopenthread-cli-ftd.a  lib/libopenthread-efr32-soc.a  lib/libopenthread-ftd.a  lib/libopenthread-efr32-soc.a  lib/libopenthread-cli-ftd.a  lib/libopenthread-efr32-soc-mbedtls.a  lib/libopenthread-ftd.a  lib/libtcplp.a  lib/libopenthread-mtd.a  lib/libopenthread-ftd.a  lib/libtcplp.a  lib/libopenthread-mtd.a  -T/Users/gabekas/ot-efr32-upstream/build/brd4161a/slc/soc/platform/autogen/linkerfile.ld  -Wl,--gc-sections  -Wl,--whole-archive  lib/libopenthread-efr32-soc-sdk.a  -Wl,--no-whole-archive  /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a  /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/protocol/openthread/libs/libsl_openthread_efr32mg1x_gcc.a  /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/platform/radio/rail_lib/autogen/librail_release/librail_efr32xg12_gcc_release.a  lib/libopenthread-efr32-soc-sdk.a  lib/libopenthread-efr32-soc-mbedtls.a  -lstdc++  -lgcc  -lc  -lm  -lnosys  /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a  /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/protocol/openthread/libs/libsl_openthread_efr32mg1x_gcc.a  /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/platform/radio/rail_lib/autogen/librail_release/librail_efr32xg12_gcc_release.a && :
/opt/homebrew/Cellar/arm-none-eabi-gcc/10.3-2021.07/gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/bin/ld:/Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a: file format not recognized; treating as linker script
/opt/homebrew/Cellar/arm-none-eabi-gcc/10.3-2021.07/gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/bin/ld:/Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a:1: syntax error
collect2: error: ld returned 1 exit status
[755/844] Linking CXX executable bin/ot-cli-mtd
FAILED: bin/ot-cli-mtd 
: && /opt/homebrew/bin/arm-none-eabi-g++ -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -mthumb -fdata-sections -ffunction-sections -fno-exceptions -fno-rtti -Os -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -mthumb -fdata-sections -ffunction-sections -specs=nano.specs -specs=nosys.specs openthread/examples/apps/cli/CMakeFiles/ot-cli-mtd.dir/cli_uart.cpp.obj openthread/examples/apps/cli/CMakeFiles/ot-cli-mtd.dir/main.c.obj openthread/examples/apps/cli/CMakeFiles/ot-cli-mtd.dir/__/__/__/__/src/efr32mg12/phy/PHY_IEEE802154_915MHZ_OQPSK_EFR32XG12.c.obj openthread/examples/apps/cli/CMakeFiles/ot-cli-mtd.dir/__/__/__/__/src/efr32mg12/phy/PHY_IEEE802154_915MHZ_2GFSK_EFR32XG12.c.obj -o bin/ot-cli-mtd  lib/libopenthread-cli-mtd.a  lib/libopenthread-efr32-soc.a  lib/libopenthread-mtd.a  lib/libopenthread-efr32-soc.a  lib/libopenthread-cli-mtd.a  lib/libopenthread-efr32-soc-mbedtls.a  lib/libopenthread-mtd.a  lib/libtcplp.a  lib/libopenthread-ftd.a  lib/libopenthread-mtd.a  lib/libtcplp.a  lib/libopenthread-ftd.a  -T/Users/gabekas/ot-efr32-upstream/build/brd4161a/slc/soc/platform/autogen/linkerfile.ld  -Wl,--gc-sections  -Wl,--whole-archive  lib/libopenthread-efr32-soc-sdk.a  -Wl,--no-whole-archive  /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a  /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/protocol/openthread/libs/libsl_openthread_efr32mg1x_gcc.a  /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/platform/radio/rail_lib/autogen/librail_release/librail_efr32xg12_gcc_release.a  lib/libopenthread-efr32-soc-sdk.a  lib/libopenthread-efr32-soc-mbedtls.a  -lstdc++  -lgcc  -lc  -lm  -lnosys  /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a  /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/protocol/openthread/libs/libsl_openthread_efr32mg1x_gcc.a  /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/platform/radio/rail_lib/autogen/librail_release/librail_efr32xg12_gcc_release.a && :
/opt/homebrew/Cellar/arm-none-eabi-gcc/10.3-2021.07/gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/bin/ld:/Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a: file format not recognized; treating as linker script
/opt/homebrew/Cellar/arm-none-eabi-gcc/10.3-2021.07/gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/bin/ld:/Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a:1: syntax error
collect2: error: ld returned 1 exit status
[760/844] Linking CXX executable bin/ot-ncp-ftd
FAILED: bin/ot-ncp-ftd 
: && /opt/homebrew/bin/arm-none-eabi-g++ -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -mthumb -fdata-sections -ffunction-sections -fno-exceptions -fno-rtti -Os -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -mthumb -fdata-sections -ffunction-sections -specs=nano.specs -specs=nosys.specs openthread/examples/apps/ncp/CMakeFiles/ot-ncp-ftd.dir/main.c.obj openthread/examples/apps/ncp/CMakeFiles/ot-ncp-ftd.dir/ncp.c.obj openthread/examples/apps/ncp/CMakeFiles/ot-ncp-ftd.dir/__/__/__/__/src/efr32mg12/phy/PHY_IEEE802154_915MHZ_OQPSK_EFR32XG12.c.obj openthread/examples/apps/ncp/CMakeFiles/ot-ncp-ftd.dir/__/__/__/__/src/efr32mg12/phy/PHY_IEEE802154_915MHZ_2GFSK_EFR32XG12.c.obj -o bin/ot-ncp-ftd  lib/libopenthread-ncp-ftd.a  lib/libopenthread-efr32-soc.a  lib/libopenthread-ftd.a  lib/libopenthread-efr32-soc.a  lib/libopenthread-ncp-ftd.a  lib/libopenthread-efr32-soc-mbedtls.a  lib/libopenthread-ftd.a  lib/libtcplp.a  lib/libopenthread-mtd.a  lib/libopenthread-ftd.a  lib/libtcplp.a  lib/libopenthread-mtd.a  lib/libopenthread-hdlc.a  lib/libopenthread-spinel-ncp.a  -T/Users/gabekas/ot-efr32-upstream/build/brd4161a/slc/soc/platform/autogen/linkerfile.ld  -Wl,--gc-sections  -Wl,--whole-archive  lib/libopenthread-efr32-soc-sdk.a  -Wl,--no-whole-archive  /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a  /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/protocol/openthread/libs/libsl_openthread_efr32mg1x_gcc.a  /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/platform/radio/rail_lib/autogen/librail_release/librail_efr32xg12_gcc_release.a  lib/libopenthread-efr32-soc-sdk.a  lib/libopenthread-efr32-soc-mbedtls.a  -lstdc++  -lgcc  -lc  -lm  -lnosys  /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a  /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/protocol/openthread/libs/libsl_openthread_efr32mg1x_gcc.a  /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/platform/radio/rail_lib/autogen/librail_release/librail_efr32xg12_gcc_release.a && :
/opt/homebrew/Cellar/arm-none-eabi-gcc/10.3-2021.07/gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/bin/ld:/Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a: file format not recognized; treating as linker script
/opt/homebrew/Cellar/arm-none-eabi-gcc/10.3-2021.07/gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/bin/ld:/Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a:1: syntax error
collect2: error: ld returned 1 exit status
[761/844] Linking CXX executable bin/ot-ncp-mtd
FAILED: bin/ot-ncp-mtd 
: && /opt/homebrew/bin/arm-none-eabi-g++ -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -mthumb -fdata-sections -ffunction-sections -fno-exceptions -fno-rtti -Os -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -mthumb -fdata-sections -ffunction-sections -specs=nano.specs -specs=nosys.specs openthread/examples/apps/ncp/CMakeFiles/ot-ncp-mtd.dir/main.c.obj openthread/examples/apps/ncp/CMakeFiles/ot-ncp-mtd.dir/ncp.c.obj openthread/examples/apps/ncp/CMakeFiles/ot-ncp-mtd.dir/__/__/__/__/src/efr32mg12/phy/PHY_IEEE802154_915MHZ_OQPSK_EFR32XG12.c.obj openthread/examples/apps/ncp/CMakeFiles/ot-ncp-mtd.dir/__/__/__/__/src/efr32mg12/phy/PHY_IEEE802154_915MHZ_2GFSK_EFR32XG12.c.obj -o bin/ot-ncp-mtd  lib/libopenthread-ncp-mtd.a  lib/libopenthread-efr32-soc.a  lib/libopenthread-mtd.a  lib/libopenthread-efr32-soc.a  lib/libopenthread-ncp-mtd.a  lib/libopenthread-efr32-soc-mbedtls.a  lib/libopenthread-mtd.a  lib/libtcplp.a  lib/libopenthread-ftd.a  lib/libopenthread-mtd.a  lib/libtcplp.a  lib/libopenthread-ftd.a  lib/libopenthread-hdlc.a  lib/libopenthread-spinel-ncp.a  -T/Users/gabekas/ot-efr32-upstream/build/brd4161a/slc/soc/platform/autogen/linkerfile.ld  -Wl,--gc-sections  -Wl,--whole-archive  lib/libopenthread-efr32-soc-sdk.a  -Wl,--no-whole-archive  /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a  /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/protocol/openthread/libs/libsl_openthread_efr32mg1x_gcc.a  /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/platform/radio/rail_lib/autogen/librail_release/librail_efr32xg12_gcc_release.a  lib/libopenthread-efr32-soc-sdk.a  lib/libopenthread-efr32-soc-mbedtls.a  -lstdc++  -lgcc  -lc  -lm  -lnosys  /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a  /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/protocol/openthread/libs/libsl_openthread_efr32mg1x_gcc.a  /Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/platform/radio/rail_lib/autogen/librail_release/librail_efr32xg12_gcc_release.a && :
/opt/homebrew/Cellar/arm-none-eabi-gcc/10.3-2021.07/gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/bin/ld:/Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a: file format not recognized; treating as linker script
/opt/homebrew/Cellar/arm-none-eabi-gcc/10.3-2021.07/gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/bin/ld:/Users/gabekas/ot-efr32-upstream/third_party/silabs/gecko_sdk/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a:1: syntax error
collect2: error: ld returned 1 exit status
[764/844] Building C object build/brd4161a/slc/rcp/platform/CMakeFiles/openthread-efr32-rcp-sdk.dir/__/__/__/__/__/third_party/silabs/gecko_sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_aead.c.obj
ninja: build stopped: subcommand failed.
+ cleanup
+ '[' 1 -eq 14 ']'

@romacdon
Copy link

romacdon commented Sep 14, 2022

@gabekassel - I think the binary content pulled down in the GSDK may not be correct. Can you try git lfs pull in the third_party/silabs/gecko_sdk directory.

@gabekassel
Copy link
Author

Thanks @romacdon - git-lfs did pull quite a bit more content, but still failing similarly

/opt/homebrew/Cellar/arm-none-eabi-gcc/10.3-2021.07/gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/bin/ld:../../third_party/silabs/gecko_sdk/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a: file format not recognized; treating as linker script
/opt/homebrew/Cellar/arm-none-eabi-gcc/10.3-2021.07/gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/bin/ld:../../third_party/silabs/gecko_sdk/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a:1: syntax error
collect2: error: ld returned 1 exit status
[2/15] Linking CXX executable bin/ot-cli-mtd
FAILED: bin/ot-cli-mtd 
: && /opt/homebrew/bin/arm-none-eabi-g++ -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -mthumb -fdata-sections -ffunction-sections -fno-exceptions -fno-rtti -Os -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -mthumb -fdata-sections -ffunction-sections -specs=nano.specs -specs=nosys.specs openthread/examples/apps/cli/CMakeFiles/ot-cli-mtd.dir/cli_uart.cpp.obj openthread/examples/apps/cli/CMakeFiles/ot-cli-mtd.dir/main.c.obj openthread/examples/apps/cli/CMakeFiles/ot-cli-mtd.dir/__/__/__/__/src/efr32mg12/phy/PHY_IEEE802154_915MHZ_OQPSK_EFR32XG12.c.obj openthread/examples/apps/cli/CMakeFiles/ot-cli-mtd.dir/__/__/__/__/src/efr32mg12/phy/PHY_IEEE802154_915MHZ_2GFSK_EFR32XG12.c.obj -o bin/ot-cli-mtd  lib/libopenthread-cli-mtd.a  lib/libopenthread-efr32-soc.a  lib/libopenthread-mtd.a  lib/libopenthread-efr32-soc.a  lib/libopenthread-cli-mtd.a  lib/libopenthread-efr32-soc-mbedtls.a  lib/libopenthread-mtd.a  lib/libtcplp.a  lib/libopenthread-ftd.a  lib/libopenthread-mtd.a  lib/libtcplp.a  lib/libopenthread-ftd.a  -T/Users/gabekas/ot-efr32-upstream/build/brd4161a/slc/soc/platform/autogen/linkerfile.ld  -Wl,--gc-sections  -Wl,--whole-archive  lib/libopenthread-efr32-soc-sdk.a  -Wl,--no-whole-archive  ../../third_party/silabs/gecko_sdk/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a  ../../third_party/silabs/gecko_sdk/protocol/openthread/libs/libsl_openthread_efr32mg1x_gcc.a  ../../third_party/silabs/gecko_sdk/platform/radio/rail_lib/autogen/librail_release/librail_efr32xg12_gcc_release.a  lib/libopenthread-efr32-soc-sdk.a  lib/libopenthread-efr32-soc-mbedtls.a  -lstdc++  -lgcc  -lc  -lm  -lnosys  ../../third_party/silabs/gecko_sdk/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a  ../../third_party/silabs/gecko_sdk/protocol/openthread/libs/libsl_openthread_efr32mg1x_gcc.a  ../../third_party/silabs/gecko_sdk/platform/radio/rail_lib/autogen/librail_release/librail_efr32xg12_gcc_release.a && :
/opt/homebrew/Cellar/arm-none-eabi-gcc/10.3-2021.07/gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/bin/ld:../../third_party/silabs/gecko_sdk/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a: file format not recognized; treating as linker script
/opt/homebrew/Cellar/arm-none-eabi-gcc/10.3-2021.07/gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/bin/ld:../../third_party/silabs/gecko_sdk/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a:1: syntax error
collect2: error: ld returned 1 exit status
[3/15] Linking CXX executable bin/ot-ncp-ftd
FAILED: bin/ot-ncp-ftd 
: && /opt/homebrew/bin/arm-none-eabi-g++ -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -mthumb -fdata-sections -ffunction-sections -fno-exceptions -fno-rtti -Os -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -mthumb -fdata-sections -ffunction-sections -specs=nano.specs -specs=nosys.specs openthread/examples/apps/ncp/CMakeFiles/ot-ncp-ftd.dir/main.c.obj openthread/examples/apps/ncp/CMakeFiles/ot-ncp-ftd.dir/ncp.c.obj openthread/examples/apps/ncp/CMakeFiles/ot-ncp-ftd.dir/__/__/__/__/src/efr32mg12/phy/PHY_IEEE802154_915MHZ_OQPSK_EFR32XG12.c.obj openthread/examples/apps/ncp/CMakeFiles/ot-ncp-ftd.dir/__/__/__/__/src/efr32mg12/phy/PHY_IEEE802154_915MHZ_2GFSK_EFR32XG12.c.obj -o bin/ot-ncp-ftd  lib/libopenthread-ncp-ftd.a  lib/libopenthread-efr32-soc.a  lib/libopenthread-ftd.a  lib/libopenthread-efr32-soc.a  lib/libopenthread-ncp-ftd.a  lib/libopenthread-efr32-soc-mbedtls.a  lib/libopenthread-ftd.a  lib/libtcplp.a  lib/libopenthread-mtd.a  lib/libopenthread-ftd.a  lib/libtcplp.a  lib/libopenthread-mtd.a  lib/libopenthread-hdlc.a  lib/libopenthread-spinel-ncp.a  -T/Users/gabekas/ot-efr32-upstream/build/brd4161a/slc/soc/platform/autogen/linkerfile.ld  -Wl,--gc-sections  -Wl,--whole-archive  lib/libopenthread-efr32-soc-sdk.a  -Wl,--no-whole-archive  ../../third_party/silabs/gecko_sdk/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a  ../../third_party/silabs/gecko_sdk/protocol/openthread/libs/libsl_openthread_efr32mg1x_gcc.a  ../../third_party/silabs/gecko_sdk/platform/radio/rail_lib/autogen/librail_release/librail_efr32xg12_gcc_release.a  lib/libopenthread-efr32-soc-sdk.a  lib/libopenthread-efr32-soc-mbedtls.a  -lstdc++  -lgcc  -lc  -lm  -lnosys  ../../third_party/silabs/gecko_sdk/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a  ../../third_party/silabs/gecko_sdk/protocol/openthread/libs/libsl_openthread_efr32mg1x_gcc.a  ../../third_party/silabs/gecko_sdk/platform/radio/rail_lib/autogen/librail_release/librail_efr32xg12_gcc_release.a && :
/opt/homebrew/Cellar/arm-none-eabi-gcc/10.3-2021.07/gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/bin/ld:../../third_party/silabs/gecko_sdk/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a: file format not recognized; treating as linker script
/opt/homebrew/Cellar/arm-none-eabi-gcc/10.3-2021.07/gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/bin/ld:../../third_party/silabs/gecko_sdk/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a:1: syntax error
collect2: error: ld returned 1 exit status
[4/15] Linking CXX executable bin/ot-ncp-mtd
FAILED: bin/ot-ncp-mtd 
: && /opt/homebrew/bin/arm-none-eabi-g++ -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -mthumb -fdata-sections -ffunction-sections -fno-exceptions -fno-rtti -Os -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -mthumb -fdata-sections -ffunction-sections -specs=nano.specs -specs=nosys.specs openthread/examples/apps/ncp/CMakeFiles/ot-ncp-mtd.dir/main.c.obj openthread/examples/apps/ncp/CMakeFiles/ot-ncp-mtd.dir/ncp.c.obj openthread/examples/apps/ncp/CMakeFiles/ot-ncp-mtd.dir/__/__/__/__/src/efr32mg12/phy/PHY_IEEE802154_915MHZ_OQPSK_EFR32XG12.c.obj openthread/examples/apps/ncp/CMakeFiles/ot-ncp-mtd.dir/__/__/__/__/src/efr32mg12/phy/PHY_IEEE802154_915MHZ_2GFSK_EFR32XG12.c.obj -o bin/ot-ncp-mtd  lib/libopenthread-ncp-mtd.a  lib/libopenthread-efr32-soc.a  lib/libopenthread-mtd.a  lib/libopenthread-efr32-soc.a  lib/libopenthread-ncp-mtd.a  lib/libopenthread-efr32-soc-mbedtls.a  lib/libopenthread-mtd.a  lib/libtcplp.a  lib/libopenthread-ftd.a  lib/libopenthread-mtd.a  lib/libtcplp.a  lib/libopenthread-ftd.a  lib/libopenthread-hdlc.a  lib/libopenthread-spinel-ncp.a  -T/Users/gabekas/ot-efr32-upstream/build/brd4161a/slc/soc/platform/autogen/linkerfile.ld  -Wl,--gc-sections  -Wl,--whole-archive  lib/libopenthread-efr32-soc-sdk.a  -Wl,--no-whole-archive  ../../third_party/silabs/gecko_sdk/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a  ../../third_party/silabs/gecko_sdk/protocol/openthread/libs/libsl_openthread_efr32mg1x_gcc.a  ../../third_party/silabs/gecko_sdk/platform/radio/rail_lib/autogen/librail_release/librail_efr32xg12_gcc_release.a  lib/libopenthread-efr32-soc-sdk.a  lib/libopenthread-efr32-soc-mbedtls.a  -lstdc++  -lgcc  -lc  -lm  -lnosys  ../../third_party/silabs/gecko_sdk/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a  ../../third_party/silabs/gecko_sdk/protocol/openthread/libs/libsl_openthread_efr32mg1x_gcc.a  ../../third_party/silabs/gecko_sdk/platform/radio/rail_lib/autogen/librail_release/librail_efr32xg12_gcc_release.a && :
/opt/homebrew/Cellar/arm-none-eabi-gcc/10.3-2021.07/gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/bin/ld:../../third_party/silabs/gecko_sdk/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a: file format not recognized; treating as linker script
/opt/homebrew/Cellar/arm-none-eabi-gcc/10.3-2021.07/gcc/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/bin/ld:../../third_party/silabs/gecko_sdk/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a:1: syntax error
collect2: error: ld returned 1 exit status
[11/15] Building C object build/brd4161a/slc/rcp/mbedtls/CMakeFiles/openthread-efr32-rcp-mbedtls.dir/__/__/__/__/__/third_party/silabs/gecko_sdk/util/third_party/crypto/mbedtls/library/x509_crt.c.obj
ninja: build stopped: subcommand failed.
+ cleanup
+ '[' 1 -eq 14 ']'

@gabekassel
Copy link
Author

though now it claims git lfs isn't installed in that directory/repo?

➜  gecko_sdk git:(799200bb6) git lfs pull
Skipping object checkout, Git LFS is not installed.
➜  gecko_sdk git:(799200bb6) ls -al
total 72
drwxr-xr-x  16 gabekas  staff   512 Sep  6 08:41 .
drwxr-xr-x   5 gabekas  staff   160 Sep  6 08:40 ..
-rw-r--r--   1 gabekas  staff    59 Sep  6 08:41 .git
-rw-r--r--   1 gabekas  staff  1005 Sep  6 08:41 .gitattributes
-rw-r--r--   1 gabekas  staff    54 Sep  6 08:41 .gitignore
-rw-r--r--   1 gabekas  staff  1586 Sep  6 08:41 .properties
drwxr-xr-x   6 gabekas  staff   192 Sep  6 08:41 .studio
-rw-r--r--   1 gabekas  staff  1753 Sep  6 08:41 License.txt
-rw-r--r--   1 gabekas  staff  4984 Sep  6 08:41 README.md
drwxr-xr-x  12 gabekas  staff   384 Sep  6 08:41 app
-rw-r--r--   1 gabekas  staff  4392 Sep  6 08:41 gecko_sdk.slcs
drwxr-xr-x   8 gabekas  staff   256 Sep  6 08:41 hardware
drwxr-xr-x   3 gabekas  staff    96 Sep  6 08:41 meta
drwxr-xr-x  18 gabekas  staff   576 Sep  6 08:41 platform
drwxr-xr-x   9 gabekas  staff   288 Sep  6 08:41 protocol
drwxr-xr-x   6 gabekas  staff   192 Sep  6 08:41 util
➜  gecko_sdk git:(799200bb6) 

@gabekassel
Copy link
Author

I do have git-lfs installed. It seemed to pull the large files but then subsequently think lfs isnt provided in that submodule. I believe that message is saying the directory doesn't have LFS, not my host.

I can play around more.

@gabekassel
Copy link
Author

figured that out. have to run git lfs install once after brew install.

➜  gecko_sdk git:(799200bb6) git lfs install
Updated Git hooks.
Git LFS initialized.
➜  gecko_sdk git:(799200bb6) git lfs pull

and it finally builds! woohoo

+ find /Users/gabekas/ot-efr32-upstream/build/brd4161a -type f -perm +111 -not -name '*.*' -exec arm-none-eabi-objcopy -O srec '{}' '{}.s37' ';' -exec ls -alh '{}' '{}.s37' ';'
-rwxr-xr-x  1 gabekas  staff   1.5M Sep 15 10:07 /Users/gabekas/ot-efr32-upstream/build/brd4161a/bin/ot-cli-mtd
-rwxr-xr-x  1 gabekas  staff   619K Sep 15 10:07 /Users/gabekas/ot-efr32-upstream/build/brd4161a/bin/ot-cli-mtd.s37
-rwxr-xr-x  1 gabekas  staff   1.6M Sep 15 10:07 /Users/gabekas/ot-efr32-upstream/build/brd4161a/bin/ot-ncp-ftd
-rwxr-xr-x  1 gabekas  staff   800K Sep 15 10:07 /Users/gabekas/ot-efr32-upstream/build/brd4161a/bin/ot-ncp-ftd.s37
-rwxr-xr-x  1 gabekas  staff   1.1M Sep 15 10:07 /Users/gabekas/ot-efr32-upstream/build/brd4161a/bin/ot-rcp
-rwxr-xr-x  1 gabekas  staff   312K Sep 15 10:07 /Users/gabekas/ot-efr32-upstream/build/brd4161a/bin/ot-rcp.s37
-rwxr-xr-x  1 gabekas  staff   1.5M Sep 15 10:07 /Users/gabekas/ot-efr32-upstream/build/brd4161a/bin/ot-ncp-mtd
-rwxr-xr-x  1 gabekas  staff   638K Sep 15 10:07 /Users/gabekas/ot-efr32-upstream/build/brd4161a/bin/ot-ncp-mtd.s37
-rwxr-xr-x  1 gabekas  staff   1.6M Sep 15 10:07 /Users/gabekas/ot-efr32-upstream/build/brd4161a/bin/ot-cli-ftd
-rwxr-xr-x  1 gabekas  staff   800K Sep 15 10:07 /Users/gabekas/ot-efr32-upstream/build/brd4161a/bin/ot-cli-ftd.s37
+ cleanup
+ '[' 0 -eq 14 ']'

now...back to the original goal. i'll track through Mason's suggestions when i have time

@romacdon
Copy link

Thats great news @gabekassel - sorry it was such a pain. I'll work with the team here to see what we can to do to make this better.

@gabekassel
Copy link
Author

gabekassel commented Sep 22, 2022

@lmnotran i finally got back to this. is brd4151a still supported? i get a build error setting that reference board, but brd4161a still works. our platfrom is closest to the latter.

/Users/gabekas/ot-efr32/third_party/silabs/gecko_sdk/platform/Device/SiliconLabs/EFR32MG1P/Include/em_device.h:102:2: error: #error "em_device.h: PART NUMBER undefined"
  102 | #error "em_device.h: PART NUMBER undefined"
      |  ^~~~~

@lmnotran
Copy link
Contributor

lmnotran commented Sep 22, 2022

Almost all thread capable boards should be supported, including brd4151a. Could you paste your command and the command line output?

@gabekassel
Copy link
Author

gabekassel commented Sep 22, 2022

./script/build brd4151a
+ [[ -n ./script/build ]]
+ script_path=./script/build
+++ realpath ./script/build

...

In file included from /Users/gabekas/ot-efr32/third_party/silabs/gecko_sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/config/config-device-acceleration.h:52,
                 from /Users/gabekas/ot-efr32/src/platform_libs/openthread-efr32-rcp-eero/autogen/mbedtls_config_autogen.h:62,
                 from /Users/gabekas/ot-efr32/src/platform_libs/openthread-efr32-rcp-eero/config/mbedtls_config.h:5,
                 from /Users/gabekas/ot-efr32/third_party/silabs/gecko_sdk/util/third_party/crypto/mbedtls/include/mbedtls/build_info.h:59,
                 from /Users/gabekas/ot-efr32/third_party/silabs/gecko_sdk/util/third_party/crypto/mbedtls/include/mbedtls/aes.h:44,
                 from /Users/gabekas/ot-efr32/openthread/src/core/crypto/crypto_platform.cpp:35:
/Users/gabekas/ot-efr32/third_party/silabs/gecko_sdk/platform/Device/SiliconLabs/EFR32MG1P/Include/em_device.h:102:2: error: #error "em_device.h: PART NUMBER undefined"
  102 | #error "em_device.h: PART NUMBER undefined"
      |  ^~~~~
[13/209] Building CXX object openthread/src/ncp/CMakeFiles/openthread-rcp.dir/ncp_base.cpp.obj
ninja: build stopped: subcommand failed.
+ cleanup
+ '[' 1 -eq 14 ']'

@romacdon
Copy link

romacdon commented Sep 23, 2022

@gabekassel have you modified anything in your ot-efr32 repo? Can you do a "git status" and send along the result? The build does work for Mason and I but I do know you needed to make some customizations for your device.

Also, could you pass along the build/brd4151a/build.ninja file. Thanks

@gabekassel
Copy link
Author

this is something happening after applying @lmnotran 's draft PR as a patch on top of main. i'll look at it more closely. it builds fine with a clean main before trying to fork my own board config

@romacdon
Copy link

@gabekassel I wasn't aware you were trying to use @lmnotran's PR. He created that as an example and it was based off brd4161a not brd4151a. I think if you follow the instructions in this post, #388 (comment), but use brd4151a you should be able to recreate what Mason's had done for brd4161a.

@gabekassel
Copy link
Author

Makes sense. I'll follow the instructions more closely.

@gabekassel
Copy link
Author

@lmnotran i finally got this working. next question...i need to port hal-config.h changes. do these go in the various files in platform_libs/config, or where do i find the right defines?

after that, i have some small changes to diags commands and use an sl_mult_timer for one use case i need to port

@romacdon
Copy link

romacdon commented Sep 28, 2022

@lmnotran i finally got this working. next question...i need to port hal-config.h changes. do these go in the various files in platform_libs/config, or where do i find the right defines?

after that, i have some small changes to diags commands and use an sl_mult_timer for one use case i need to port

I think the directory is platform/config not platform_libs/config but yes thats where you will want to customize things for your hardware.

@gabekassel
Copy link
Author

i think Mason named it platform_libs in the example here?
Screen Shot 2022-09-28 at 2 09 31 PM

@romacdon
Copy link

romacdon commented Sep 28, 2022

@gabekassel I see now. In his instructions he says

cp -R build/brd4161a/slc/soc/platform src/platform_libs/openthread-efr32-soc-eero
cp -R build/brd4161a/slc/rcp/platform src/platform_libs/openthread-efr32-rcp-eero

So essentially the directory named platform/config will become platform_libs/openthread-efr32-rcp-eero/config (or platform_libs/openthread-efr32-soc-eero/config)

@lmnotran
Copy link
Contributor

@gabekassel - @lmnotran i finally got this working. next question...i need to port hal-config.h changes. do these go in the various files in platform_libs/config, or where do i find the right defines?

Yes, your hal-config.h changes will need to be ported to the new set of configuration files in src/platform_libs/openthread-efr32-XXX-eero/config.

@gabekassel
Copy link
Author

Thanks. That was pretty simple. Next I need to figure out how to re-implement some diag commands we added, and make sure the application_properties struct is correctly added to create a GBL.

@gabekassel
Copy link
Author

@lmnotran can you confirm that HAL config changes, especially flipping pin assignment for something like CTS/RTS, only needs to happen in sl_uartdrv_usart_vcom_config.h and not in any files pulled in from gecko sdk directly?

@romacdon
Copy link

romacdon commented Oct 3, 2022

Hi @gabekassel, anything in the config directory should be customizable. Which specific gecko sdk files were you referring to? For CTS/RTS, you will need to modify sl_uartdrv_usart_vcom_config.h as you mentioned and also pin_config.h.

@gabekassel
Copy link
Author

Thanks. will look at pin_config.h as well.

@gabekassel
Copy link
Author

@romacdon where is pin_config.h -- i don't see it in sources.

➜  ot-efr32 git:(gkass/CONN-19734) ✗ find ./* -name 'pin_config.h'
➜  ot-efr32 git:(gkass/CONN-19734) ✗ ls -al
total 88
drwxr-xr-x   20 gabekas  staff   640 Sep 30 14:32 .
drwxr-x---+ 100 gabekas  staff  3200 Oct  5 05:54 ..
-rw-r--r--@   1 gabekas  staff  6148 Sep 28 14:09 .DS_Store
-rw-r--r--    1 gabekas  staff  3191 Sep 23 15:37 .clang-format
-rw-r--r--    1 gabekas  staff    32 Sep 23 15:37 .dockerignore
drwxr-xr-x   14 gabekas  staff   448 Oct  1 11:00 .git
drwxr-xr-x    4 gabekas  staff   128 Sep 23 15:37 .github
-rw-r--r--    1 gabekas  staff  1434 Sep 23 15:37 .gitignore
-rw-r--r--    1 gabekas  staff   228 Sep 23 15:37 .gitmodules
drwxr-xr-x    3 gabekas  staff    96 Sep 30 09:26 .vscode
-rw-r--r--    1 gabekas  staff  4719 Sep 27 11:53 CMakeLists.txt
-rw-r--r--    1 gabekas  staff   387 Sep 23 15:37 Dockerfile
-rw-r--r--    1 gabekas  staff  1506 Sep 23 15:37 LICENSE
-rw-r--r--    1 gabekas  staff  2740 Sep 23 15:37 README.md
drwxr-xr-x    3 gabekas  staff    96 Sep 23 15:51 build
drwxr-xr-x    4 gabekas  staff   128 Sep 23 15:37 examples
drwxr-xr-x   35 gabekas  staff  1120 Sep 23 15:41 openthread
drwxr-xr-x    9 gabekas  staff   288 Sep 27 11:40 script
drwxr-xr-x   13 gabekas  staff   416 Sep 28 14:09 src
drwxr-xr-x    3 gabekas  staff    96 Sep 23 15:37 third_party

@romacdon
Copy link

romacdon commented Oct 5, 2022

@gabekassel you're right. It does not exist on the GitHub side of things. To answer your previous question about which files to modify when changing the pin configuration I went into Simplicity Studio and created a dummy project then tried modifying some pins to see what generated files got updated. I noticed that two files got updated, sl_uartdrv_usart_vcom_config.h and pin_config.h. However, I now see that pin_config.h is only in the GSDK/Simplicity Studio build environment. So it looks like sl_uartdrv_usart_vcom_config.h is all you need to update.

@gabekassel
Copy link
Author

thanks @romacdon - my first attempt resulted in not being able to communicate with the NCP after i flashed it. we have CTS/RTS flipped which is usually the reason this happens. wondering if i need to edit any files in GSDK sources or it may be a totally different issue

i can build for brd4151a and flash to wstk without my pin flip to test first, i suppose

@romacdon
Copy link

romacdon commented Oct 6, 2022

@gabekassel you should not have to modify anything in the GSDK (third_party/silabs/gecko_sdk). Anything that needs to be customized should be capable of being changed from the generated config directory. In the previous, hal-config build env you didn't change anything in the gsdk did you?

@gabekassel
Copy link
Author

@romacdon correct. i guess i'll switch back to WSTK to test my changes

@gabekassel
Copy link
Author

@romacdon @lmnotran it looks like things have already been restructured quite a bit for the uart+spi division. i did notice a skip_generation -- could i follow similar steps to above but pass that flag and not move the generated files to a new location?

please advise if the approach should be the same now.

@lmnotran
Copy link
Contributor

lmnotran commented Nov 8, 2022

@gabekassel - I added --skip_generation when I was iterating on PAL changes. It was never meant to be used to allow you to keep the build/brdXXXXy/slc folder around indefinitely. I would advise against keeping the generated files in that folder as the build folder is intended to be ephemeral in nature.

Are there any pain points in particular that you're running into?

@gabekassel
Copy link
Author

gabekassel commented Nov 8, 2022

It seems like path names and structuring in the main CMakefile and build script have changed, so I want to be sure I'm updating the right things. It didn't immediately feel like your PR example matched up any longer.

This is obvious.
What lines should i comment out around this (or elsehwere) now?

Thanks Mason

@gabekassel
Copy link
Author

Further, here's what I've been trying to do and struggling with.

  1. Built brd4151a from bone stock main
  2. Tested connecting to it using ot-daemon on PC both over J-Link and the UART pins on breakout header on WSTK - worked
  3. Commented out generation steps and edited CMakeList as directed such as below and rebuilt:
else()
        message("Adding ${PROJECT_SOURCE_DIR}/src/platform_libs/openthread-efr32-rcp-eero")
        add_subdirectory(${PROJECT_SOURCE_DIR}/src/platform_libs/openthread-efr32-rcp-eero)
    endif()
  1. Again tried to UART in and couldn't

Still confused what I'm missing. I can go through an FAE if easier.

@gabekassel
Copy link
Author

I got this working, but not sure it's as you expected.

In addition to changing sl_uartdr_usart_vcom_config.h in /src/platform_libs/openthread-efr32-rcp-eero/config/ i also had to dig into ../third_party/silabs/gecko_sdk/hardware/board/config/brd4151a_brd4001a (not sure if it's pulling 4001a or 4002a so changed both) then it worked.

this leads me to think the defines generated by slc outside of the gecko sdk folder are ignored.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants