-
Notifications
You must be signed in to change notification settings - Fork 0
LGPL compliancy guide
[DRAFT]
This guide assumes that all your proprietary code is in a folder containing your RIOT application makefile (which includes $(RIOTBASE)/Makefile.include). Check out the hello-world example.
-
compile everything, specifying a RIOT git version
# make clean all BOARD=<whatever> RIOT_VERSION=43ef437e
-
save your resulting binary
# cp bin/<whatever>/<your-application>.elf <someplace>
-
save your code's object archive someplace
# cp bin/<whatever>/<your-application>.a <somewhere-else>
-
write down the used CFLAGS/LINK_FLAGS/USEMODULE/* used in your build. Probably just saving the Makefile is best.
-
write down the exact tool versions (gcc, ld, binutils, ...) of the used toolchain.
-
take md5 hash of your compiled binary:
# md5sum bin/<whatever>/<your-application>.elf
Now, whenever you distribute the resulting .elf, make sure to also distribute the .a file (containing your compiled proprietary code), the used RIOT revision and the exact tool versions used to create the build.
In order to verify your .a has been build with that specific RIOT version, someone will do the following (meaning, you should do so just to be sure anyone can):
- get a toolchain using the exact versions you specified,
- get your Makefile or create one using your CFLAGS/LINK_FLAGS/USEMODULE/* and application name,
# make BOARD=<whatever> clean
- copy your previously saved .a into
bin/<your-board>
# make BOARD=<whatever> RIOT_VERSION=<your-riot-version> all
- take md5 hash of your compiled binary:
# md5sum bin/<whatever>/<your-application>.elf
The resulting bin/<your-board>/<your-application>.elf
should be identical to the one saved before. (e.g., the resulting md5 hashes in both step 6. should match)
RIOT - The friendly Operating System for the Internet of Things
Homepage | [GitHub] (https://github.com/RIOT-OS/) | Developers Mailing List | Users Mailing List | Twitter @RIOT_OS
- Family: ARM
- Board: Airfy Beacon
- Board: Arduino Due
- Board: CC2538DK
- Board: CC2650STK
- Board: HikoB Fox
- Board: IoT LAB M3
- Board: LimiFrog-v1
- Board: mbed_lpc1768
- Board: MSB-IoT
- Board: MSBA2
- Board: Nucleo-L1
- Board: Nucleo-F446
- Board: Nucleo-F334
- Board: Nucleo-F303
- Board: Nucleo-F091
- Board: Mulle
- Board: OpenMote
- Board: PCA1000x (nRF51822 Development Kit)
- Board: Phytec phyWAVE-KW22
- Board: RFduino
- Board: SAMR21-xpro
- Board: SAML21-xpro
- Board: Seeeduino Arch-Pro
- Board: SODAQ Autonomo
- Board: Spark Core
- Board: STM32F0discovery
- Board: STM32F3discovery
- Board: STM32F4discovery
- Board: UDOO
- Board: yunjia-nrf51822
- Board: Zolertia remote
- Family: ATmega
- Board: Arduino Mega2560
- Board: Arduino Uno
- Board: Arduino Duemilanove
- Family: MSP430
- Board: MSB-430H
- Board: TelosB
- Board: WSN430
- Board: Zolertia Z1
- Board: eZ430-Chronos
- Family: native
- Board: native
- Family: x86
- Board: Intel Galileo