Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
8d30fa7
Falcon: native wolfCrypt implementation (no liboqs)
danielinux Jul 1, 2026
5463621
Remove liboqs dependency
danielinux Jul 1, 2026
ec2a610
Falcon: crypto callback (WOLF_CRYPTO_CB) interface + CB_ONLY
danielinux Jul 1, 2026
9323eba
Falcon: ARM DSP (SMLA*/SMUAD) accelerated verify NTT + norm
danielinux Jul 1, 2026
5e86bfa
Falcon: AArch64 NEON (float64x2_t) vectorized FFT for signing/keygen
danielinux Jul 1, 2026
73e6f64
Falcon: add doxygen for the public API and document the algorithm
danielinux Jul 1, 2026
9986b6c
Falcon: remove FN-DSA / FIPS 206 references from code comments and text
danielinux Jul 1, 2026
cab11e4
Falcon: fix codespell and source-text CI checks
danielinux Jul 1, 2026
0a88f22
Falcon: address PR review feedback
danielinux Jul 1, 2026
6c1752f
Falcon: fix remaining codespell "statics" in wc_falcon_codec.h
danielinux Jul 1, 2026
c4f3d36
Falcon: fix liboqs interop workflow wiping the liboqs install
danielinux Jul 1, 2026
856a99a
Falcon: add tests/api/test_falcon.c API unit tests
danielinux Jul 1, 2026
1bf7289
Falcon: add test_falcon.c to the CMake unit_test build
danielinux Jul 1, 2026
7211e94
Falcon: address second round of review feedback
danielinux Jul 1, 2026
74e94cd
Falcon: address Fenrir review findings
danielinux Jul 1, 2026
3f14a48
Falcon: accept --with-liboqs as a deprecated no-op
danielinux Jul 1, 2026
bb38c71
Falcon: register native build-gate macros in known-macro extras
danielinux Jul 1, 2026
f5977f9
Falcon: bound signature encoding by level max, not caller buffer
danielinux Jul 2, 2026
852a172
Falcon: add keygen/sign/verify round-trip fuzzer
danielinux Jul 2, 2026
53a8cc1
Falcon: move round-trip fuzzer out of the wolfSSL tree
danielinux Jul 2, 2026
d7b6576
Falcon: warn when FPR_DOUBLE selected without a double FPU
danielinux Jul 6, 2026
1857d25
Falcon: address review feedback (zephyr sources, configure sub-option…
danielinux Jul 6, 2026
16717b7
Falcon: register __ARM_FEATURE_DSP and __ARM_FP as known macros
danielinux Jul 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/cmake.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ jobs:
-DWOLFSSL_OAEP:BOOL=yes -DWOLFSSL_OCSP:BOOL=yes -DWOLFSSL_OCSPSTAPLING:BOOL=ON \
-DWOLFSSL_OCSPSTAPLING_V2:BOOL=ON -DWOLFSSL_OLD_NAMES:BOOL=yes -DWOLFSSL_OLD_TLS:BOOL=yes \
-DWOLFSSL_OPENSSLALL:BOOL=yes -DWOLFSSL_OPENSSLEXTRA:BOOL=ON -DWOLFSSL_OPTFLAGS:BOOL=yes \
-DWOLFSSL_OQS:BOOL=no -DWOLFSSL_PKCALLBACKS:BOOL=yes -DWOLFSSL_PKCS12:BOOL=yes \
-DWOLFSSL_PKCALLBACKS:BOOL=yes -DWOLFSSL_PKCS12:BOOL=yes \
-DWOLFSSL_PKCS7:BOOL=yes -DWOLFSSL_POLY1305:BOOL=yes -DWOLFSSL_POSTAUTH:BOOL=yes \
-DWOLFSSL_PWDBASED:BOOL=yes -DWOLFSSL_QUIC:BOOL=yes -DWOLFSSL_REPRODUCIBLE_BUILD:BOOL=no \
-DWOLFSSL_RNG:BOOL=yes -DWOLFSSL_RSA:BOOL=yes -DWOLFSSL_RSA_PSS:BOOL=yes \
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/codespell.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
check_filenames: true
check_hidden: true
# Add comma separated list of words that occur multiple times that should be ignored (sorted alphabetically, case sensitive)
ignore_words_list: adin,aNULL,brunch,carryIn,chainG,ciph,cLen,cliKs,dout,haveA,inCreated,inOut,inout,larg,LEAPYEAR,Merget,optionA,parm,parms,repid,rIn,userA,ser,siz,te,Te,HSI,failT,toLen,
ignore_words_list: adin,aNULL,brunch,carryIn,chainG,ciph,cLen,cliKs,dout,FPR,fpr,haveA,inCreated,inOut,inout,larg,LEAPYEAR,Merget,optionA,parm,parms,repid,rIn,userA,ser,siz,te,Te,HSI,failT,toLen,
# The exclude_file contains lines of code that should be ignored. This is useful for individual lines which have non-words that can safely be ignored.
exclude_file: '.codespellexcludelines'
# To skip files entirely from being processed, add it to the following list:
Expand Down
136 changes: 136 additions & 0 deletions .github/workflows/falcon-interop.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
name: Falcon native<->liboqs interop Tests

# START OF COMMON SECTION
on:
push:
branches: [ 'release/**' ]
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
branches: [ '*' ]
# Daily run on master reseeds the shared cache (see save steps below).
schedule:
- cron: '40 4 * * *'

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# END OF COMMON SECTION

env:
# liboqs version pinned for the differential/interop baseline.
LIBOQS_REF: 0.10.1

jobs:
build_liboqs:
name: Build liboqs
if: ${{ (github.repository_owner == 'wolfssl') && (github.event_name != 'pull_request' || github.event.pull_request.draft == false) }}
runs-on: ubuntu-24.04
timeout-minutes: 15
steps:
- name: Checking if we have liboqs in cache
uses: actions/cache/restore@v5
id: cache
with:
path: oqs-install
key: liboqs-${{ env.LIBOQS_REF }}-ubuntu-24.04
lookup-only: true

- name: Checkout liboqs
if: steps.cache.outputs.cache-hit != 'true'
uses: actions/checkout@v5
with:
repository: open-quantum-safe/liboqs
ref: ${{ env.LIBOQS_REF }}
path: liboqs
fetch-depth: 1

- name: Compile and install liboqs
if: steps.cache.outputs.cache-hit != 'true'
working-directory: liboqs
run: |
mkdir build
cd build
cmake -GNinja \
-DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/oqs-install \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=OFF \
-DOQS_USE_OPENSSL=OFF \
-DOQS_BUILD_ONLY_LIB=ON \
..
ninja
ninja install

# Only master (the daily schedule) saves, so all PRs share one entry.
- name: Save liboqs cache
if: github.ref == 'refs/heads/master' && steps.cache.outputs.cache-hit != 'true'
uses: actions/cache/save@v5
with:
path: oqs-install
key: liboqs-${{ env.LIBOQS_REF }}-ubuntu-24.04

# On a cache miss, hand the freshly built liboqs to the test job via an
# artifact so it is not compiled a second time in the same run.
- name: tar liboqs
if: steps.cache.outputs.cache-hit != 'true'
run: tar -zcf liboqs.tgz oqs-install

- name: Upload liboqs build
if: steps.cache.outputs.cache-hit != 'true'
uses: actions/upload-artifact@v4
with:
name: liboqs
path: liboqs.tgz
retention-days: 1

falcon_interop:
name: Interop (native Falcon vs liboqs Falcon)
if: ${{ (github.repository_owner == 'wolfssl') && (github.event_name != 'pull_request' || github.event.pull_request.draft == false) }}
runs-on: ubuntu-24.04
needs: build_liboqs
timeout-minutes: 15
steps:
- name: Install build tools
run: |
sudo apt-get update
sudo apt-get install -y ninja-build

# Check out wolfSSL first: actions/checkout runs "git clean -ffdx", which
# would delete an untracked oqs-install/ placed in the workspace by the
# cache/artifact steps below. Restoring liboqs after the checkout keeps it.
- name: Checkout wolfSSL
uses: actions/checkout@v5
with:
fetch-depth: 1

- name: Restore liboqs from cache
uses: actions/cache/restore@v5
id: cache
with:
path: oqs-install
key: liboqs-${{ env.LIBOQS_REF }}-ubuntu-24.04

# On a cache miss the build_liboqs job uploaded an artifact instead.
- name: Download liboqs artifact
if: steps.cache.outputs.cache-hit != 'true'
uses: actions/download-artifact@v4
with:
name: liboqs

- name: Untar liboqs artifact
if: steps.cache.outputs.cache-hit != 'true'
run: tar -zxf liboqs.tgz

- name: Build wolfSSL with native Falcon
run: |
./autogen.sh
./configure --enable-falcon --enable-experimental --enable-static
make -j$(nproc)

- name: Build and run the interop harness (native Falcon vs liboqs)
run: |
gcc -O2 -I. -I$GITHUB_WORKSPACE/oqs-install/include \
scripts/falcon-interop.c \
src/.libs/libwolfssl.a \
$GITHUB_WORKSPACE/oqs-install/lib/liboqs.a \
-lm -lcrypto -lpthread -o falcon-interop
./falcon-interop
11 changes: 11 additions & 0 deletions .wolfssl_known_macro_extras
Original file line number Diff line number Diff line change
Expand Up @@ -778,6 +778,14 @@ WOLFSSL_EVP_PRINT
WOLFSSL_EXPORT_INT
WOLFSSL_EXPORT_SPC_SZ
WOLFSSL_EXTRA
WOLFSSL_FALCON_FFT_AVX2
WOLFSSL_FALCON_FFT_NEON
WOLFSSL_FALCON_FPR_ASM
WOLFSSL_FALCON_FPR_DOUBLE
WOLFSSL_FALCON_NO_NTT_DSP
WOLFSSL_FALCON_NTT_DSP
WOLFSSL_FALCON_SIGN_STATS
WOLFSSL_FALCON_VERIFY_ONLY
WOLFSSL_FORCE_OCSP_NONCE_CHECK
WOLFSSL_FRDM_K64
WOLFSSL_FRDM_K64_JENKINS
Expand Down Expand Up @@ -990,6 +998,7 @@ WOLFSSL_XIL_MSG_NO_SLEEP
WOLFSSL_ZEPHYR
WOLF_ALLOW_BUILTIN
WOLF_CRYPTO_CB_CMD
WOLF_CRYPTO_CB_ONLY_FALCON
WOLF_CRYPTO_DEV
WOLF_NO_TRAILING_ENUM_COMMAS
WindowsCE
Expand Down Expand Up @@ -1040,7 +1049,9 @@ __ARCH_STRNCPY_NO_REDIRECT
__ARCH_STRSTR_NO_REDIRECT
__ARM_ARCH_7M__
__ARM_FEATURE_CRYPTO
__ARM_FEATURE_DSP
__ARM_FEATURE_UNALIGNED
__ARM_FP
__ASSEMBLER__
__ATOMIC_CONSUME
__ATOMIC_RELAXED
Expand Down
65 changes: 20 additions & 45 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -628,16 +628,6 @@ endif()

set(WOLFSSL_SLOW_MATH "yes")

# liboqs
add_option(WOLFSSL_OQS
"Enable integration with the OQS (Open Quantum Safe) liboqs library (default: disabled)"
"no" "yes;no")

# Falcon (provided via liboqs)
add_option(WOLFSSL_FALCON
"Enable Falcon post-quantum signatures via liboqs (default: disabled)"
"no" "yes;no")

# ML-KEM/Kyber
add_option(WOLFSSL_MLKEM
"Enable the wolfSSL PQ ML-KEM library (default: disabled)"
Expand Down Expand Up @@ -708,6 +698,22 @@ if (WOLFSSL_MLDSA OR WOLFSSL_DILITHIUM)
set_wolfssl_definitions("WOLFSSL_SHAKE256" RESULT)
endif()

# Native Falcon. Native implementation: no liboqs dependency. Needs SHA-3 /
# SHAKE256 for hash-to-point.
add_option(WOLFSSL_FALCON
"Enable the native wolfSSL PQ Falcon implementation (default: disabled)"
"no" "yes;no")

if (WOLFSSL_FALCON)
list(APPEND WOLFSSL_DEFINITIONS "-DHAVE_FALCON")
list(APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_SHA3")
list(APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_SHAKE256")

set_wolfssl_definitions("HAVE_FALCON" RESULT)
set_wolfssl_definitions("WOLFSSL_SHA3" RESULT)
set_wolfssl_definitions("WOLFSSL_SHAKE256" RESULT)
endif()

# LMS
add_option(WOLFSSL_LMS
"Enable the PQ LMS Stateful Hash-based Signature Scheme (default: disabled)"
Expand Down Expand Up @@ -758,39 +764,10 @@ if (WOLFSSL_EXPERIMENTAL)

set_wolfssl_definitions("WOLFSSL_EXPERIMENTAL_SETTINGS" RESULT)

# Cross-validate WOLFSSL_OQS and WOLFSSL_FALCON: liboqs is only linked
# when a liboqs-backed algorithm (Falcon) is actually enabled.
if (WOLFSSL_FALCON AND NOT WOLFSSL_OQS)
message(FATAL_ERROR "WOLFSSL_FALCON requires WOLFSSL_OQS.")
endif()
if (WOLFSSL_OQS AND NOT WOLFSSL_FALCON)
message(FATAL_ERROR "WOLFSSL_OQS requires WOLFSSL_FALCON.")
endif()

# Checking for experimental feature: OQS
message(STATUS "Looking for WOLFSSL_OQS")
if (WOLFSSL_OQS)
# Native Falcon is an experimental feature (unstandardized; API name
# subject to change). It has no liboqs dependency.
if (WOLFSSL_FALCON)
set(WOLFSSL_FOUND_EXPERIMENTAL_FEATURE 1)
message(STATUS "Looking for WOLFSSL_OQS - found")

message(STATUS "Checking OQS")
find_package(OQS)
if (OQS_FOUND)
message(STATUS "Checking OQS - found")
list(APPEND WOLFSSL_LINK_LIBS ${OQS_LIBRARY})
list(APPEND WOLFSSL_INCLUDE_DIRS ${OQS_INCLUDE_DIR})

set_wolfssl_definitions("HAVE_LIBOQS" RESULT)
set_wolfssl_definitions("HAVE_TLS_EXTENSIONS" RESULT)
set_wolfssl_definitions("OPENSSL_EXTRA" RESULT)
set_wolfssl_definitions("HAVE_FALCON" RESULT)

else()
message(STATUS "Checking OQS - not found")
message(STATUS "WARNING: WOLFSSL_OQS enabled but not found: OQS_LIBRARY=${OQS_LIBRARY}, OQS_INCLUDE_DIR=${OQS_INCLUDE_DIR} ")
endif()
else()
message(STATUS "Looking for WOLFSSL_OQS - not found")
endif()

# Checking for experimental feature: extra PQ/T hybrid combinations
Expand All @@ -815,9 +792,6 @@ if (WOLFSSL_EXPERIMENTAL)
else()
# Experimental mode not enabled, but were any experimental features enabled? Error out if so:
message(STATUS "Looking for WOLFSSL_EXPERIMENTAL - not found")
if (WOLFSSL_OQS)
message(FATAL_ERROR "Error: WOLFSSL_OQS requires WOLFSSL_EXPERIMENTAL at this time.")
endif()
if (WOLFSSL_FALCON)
message(FATAL_ERROR "Error: WOLFSSL_FALCON requires WOLFSSL_EXPERIMENTAL at this time.")
endif()
Expand Down Expand Up @@ -2949,6 +2923,7 @@ if(WOLFSSL_EXAMPLES)
tests/api/test_mldsa.c
tests/api/test_mldsa_legacy.c
tests/api/test_slhdsa.c
tests/api/test_falcon.c
tests/api/test_signature.c
tests/api/test_lms_xmss.c
tests/api/test_dtls.c
Expand Down
4 changes: 0 additions & 4 deletions Docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,6 @@ RUN ssh -o StrictHostKeyChecking=no -T git@github.com; cat ~/.ssh/known_hosts >>
RUN mkdir -p /opt/ccache/bin && for prog in gcc g++ cc c++ cpp arm-none-eabi-c++ arm-none-eabi-cpp arm-none-eabi-gcc arm-none-eabi-g++; do ln -s /usr/bin/ccache /opt/ccache/bin/$(basename $prog); done
ENV PATH /opt/ccache/bin:$PATH

# install liboqs
RUN git clone --single-branch https://github.com/open-quantum-safe/liboqs.git && cd liboqs && git checkout db08f12b5a96aa6582a82aac7f65cf8a4d8b231f \
&& mkdir build && cd build && cmake -DOQS_DIST_BUILD=ON -DOQS_USE_CPUFEATURE_INSTRUCTIONS=OFF -DOQS_USE_OPENSSL=0 .. && make -j8 all && make install && cd ../.. && rm -rf liboqs

RUN mkdir /opt/sources

# Install pkixssh to /opt/pkixssh for X509 interop testing with wolfSSH
Expand Down
3 changes: 0 additions & 3 deletions IDE/INTIME-RTOS/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -373,7 +373,6 @@ INCL_TARGS := wolfssl/callbacks.h \
wolfssl/wolfcrypt/port/kcapi/kcapi_hmac.h \
wolfssl/wolfcrypt/port/kcapi/kcapi_rsa.h \
wolfssl/wolfcrypt/port/kcapi/wc_kcapi.h \
wolfssl/wolfcrypt/port/liboqs/liboqs.h \
wolfssl/wolfcrypt/port/maxim/maxq10xx.h \
wolfssl/wolfcrypt/port/nxp/dcp_port.h \
wolfssl/wolfcrypt/port/nxp/ksdk_port.h \
Expand Down Expand Up @@ -432,7 +431,6 @@ prodeng: "$(PROD_ENG)/rt/include/wolfssl572/wolfssl" "$(PROD_ENG)/rt/include/wol
"$(PROD_ENG)/rt/include/wolfssl572/wolfssl/wolfcrypt/port/cavium" "$(PROD_ENG)/rt/include/wolfssl572/wolfssl/wolfcrypt/port/cypress" \
"$(PROD_ENG)/rt/include/wolfssl572/wolfssl/wolfcrypt/port/devcrypto" "$(PROD_ENG)/rt/include/wolfssl572/wolfssl/wolfcrypt/port/espressif" \
"$(PROD_ENG)/rt/include/wolfssl572/wolfssl/wolfcrypt/port/intel" "$(PROD_ENG)/rt/include/wolfssl572/wolfssl/wolfcrypt/port/iotsafe" \
"$(PROD_ENG)/rt/include/wolfssl572/wolfssl/wolfcrypt/port/kcapi" "$(PROD_ENG)/rt/include/wolfssl572/wolfssl/wolfcrypt/port/liboqs" \
"$(PROD_ENG)/rt/include/wolfssl572/wolfssl/wolfcrypt/port/maxim" "$(PROD_ENG)/rt/include/wolfssl572/wolfssl/wolfcrypt/port/nxp" \
"$(PROD_ENG)/rt/include/wolfssl572/wolfssl/wolfcrypt/port/pic32" "$(PROD_ENG)/rt/include/wolfssl572/wolfssl/wolfcrypt/port/psa" \
"$(PROD_ENG)/rt/include/wolfssl572/wolfssl/wolfcrypt/port/Renesas" "$(PROD_ENG)/rt/include/wolfssl572/wolfssl/wolfcrypt/port/riscv" \
Expand Down Expand Up @@ -473,7 +471,6 @@ done
"$(PROD_ENG)/rt/include/wolfssl572/wolfssl/wolfcrypt/port/intel" \
"$(PROD_ENG)/rt/include/wolfssl572/wolfssl/wolfcrypt/port/iotsafe" \
"$(PROD_ENG)/rt/include/wolfssl572/wolfssl/wolfcrypt/port/kcapi" \
"$(PROD_ENG)/rt/include/wolfssl572/wolfssl/wolfcrypt/port/liboqs" \
"$(PROD_ENG)/rt/include/wolfssl572/wolfssl/wolfcrypt/port/maxim" \
"$(PROD_ENG)/rt/include/wolfssl572/wolfssl/wolfcrypt/port/nxp" \
"$(PROD_ENG)/rt/include/wolfssl572/wolfssl/wolfcrypt/port/pic32" \
Expand Down
1 change: 0 additions & 1 deletion IDE/INTIME-RTOS/libwolfssl.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,6 @@
<ClCompile Include="..\..\wolfcrypt\src\wolfmath.c" />
<ClCompile Include="..\..\wolfcrypt\src\wc_pkcs11.c" />
<ClCompile Include="..\..\wolfcrypt\src\wc_slhdsa.c" />
<ClCompile Include="..\..\wolfcrypt\src\port\liboqs\liboqs.c" />

</ItemGroup>
<ItemGroup>
Expand Down
5 changes: 5 additions & 0 deletions IDE/m33mu-falcon-verify/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
build/
app-falcon.elf
app-falcon.bin
app-falcon.sym
app-falcon.dis
58 changes: 58 additions & 0 deletions IDE/m33mu-falcon-verify/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
CC := arm-none-eabi-gcc
OBJCOPY ?= arm-none-eabi-objcopy
NM ?= arm-none-eabi-nm
OBJDUMP ?= arm-none-eabi-objdump

CFLAGS := -mcpu=cortex-m33 -mthumb -Os -ffreestanding
CFLAGS += -fdata-sections -ffunction-sections -g -ggdb -Wall -Wextra -Werror
CFLAGS += -I. -I../.. -DWOLFSSL_USER_SETTINGS

CFLAGS_WOLFSSL := $(CFLAGS)
CFLAGS_WOLFSSL := $(filter-out -Werror,$(CFLAGS_WOLFSSL))
CFLAGS_WOLFSSL += -Wno-unused-function -Wno-unused-variable

LDFLAGS := -nostdlib -T target.ld -Wl,-gc-sections

APP_SRCS := main.c ivt.c syscalls.c

# Native Falcon verify path: public wrapper + core (NTT/hash-to-point/codec) +
# SHAKE256, plus the minimal runtime (memory, wc_port).
WOLFSSL_SRCS := \
../../wolfcrypt/src/falcon.c \
../../wolfcrypt/src/wc_falcon.c \
../../wolfcrypt/src/sha3.c \
../../wolfcrypt/src/sha256.c \
../../wolfcrypt/src/hash.c \
../../wolfcrypt/src/memory.c \
../../wolfcrypt/src/wc_port.c \
../../wolfcrypt/src/wolfmath.c

APP_OBJS := $(patsubst %.c,build/%.o,$(APP_SRCS))
WOLFSSL_OBJS := $(patsubst ../../%.c,build/%.o,$(WOLFSSL_SRCS))
OBJS := $(APP_OBJS) $(WOLFSSL_OBJS)

all: app-falcon.bin

app-falcon.elf: $(OBJS) target.ld
$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) \
-Wl,--start-group -lc -lm -lgcc -lnosys -Wl,--end-group -o $@

app-falcon.bin: app-falcon.elf
$(OBJCOPY) -O binary $< $@

build/%.o: %.c
@mkdir -p $(dir $@)
$(CC) $(CFLAGS) -c $< -o $@

build/wolfcrypt/src/%.o: ../../wolfcrypt/src/%.c
@mkdir -p $(dir $@)
$(CC) $(CFLAGS_WOLFSSL) -c $< -o $@

symbols: app-falcon.elf
$(NM) -n app-falcon.elf > app-falcon.sym
$(OBJDUMP) -d app-falcon.elf > app-falcon.dis

clean:
rm -rf build app-falcon.elf app-falcon.bin app-falcon.sym app-falcon.dis

.PHONY: all symbols clean
Loading
Loading