Files
u-boot/examples/ulib/config.mk
Simon Glass 4ba77a661f ulib: Refactor the Makefile to support multiple programs
The current Makefile for the ulib examples is not very easy to modify.

Split it into three parts:
- config.mk containing the variables used by the build tools
- a list of programs and the objects in each one
- rules.mk with some rules to make it all work

Use sys-objs to indicate objects which should be built with system
headers. Use U-Boot headers by default.

With this it is fairly simply to add a new program. Of course we could
make use of U-Boot's kbuild implementation to tidy this up, but the
purpose of the examples is to show how to do things outside the U-Boot
build system.

Co-developed-by: Claude <noreply@anthropic.com>
Co-developed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Simon Glass <sjg@chromium.org>
2025-09-10 03:35:59 -06:00

48 lines
1.5 KiB
Makefile

# SPDX-License-Identifier: GPL-2.0+
#
# Configuration and helpers for U-Boot library examples
#
# Copyright 2025 Canonical Ltd.
# Written by Simon Glass <simon.glass@canonical.com>
# For standalone builds, provide default values
EXAMPLE_DIR ?= .
OUTDIR ?= .
CC ?= gcc
SDL_CONFIG ?= sdl2-config
PLATFORM_LIBS ?= $(shell $(SDL_CONFIG) --libs)
LIB_STATIC_LDS ?= static.lds
# The main Makefile passes in Q=@ for quiet output
Q ?=
# Common compiler flags for programs using system headers
SYSTEM_CFLAGS := -I$(UBOOT_BUILD)/include \
-idirafter$(srctree)/include \
-include $(srctree)/include/linux/compiler_attributes.h
# Common compiler flags for programs using U-Boot headers (these match the
# U-Boot internal build)
UBOOT_CFLAGS := -nostdinc \
-isystem $(shell $(CC) -print-file-name=include) \
-I$(UBOOT_BUILD)/include \
-I$(srctree)/include \
-I$(srctree)/arch/sandbox/include \
-include $(UBOOT_BUILD)/include/config.h \
-include $(srctree)/include/linux/kconfig.h \
-I$(srctree)/dts/upstream/include \
"-DMBEDTLS_CONFIG_FILE=\"mbedtls_def_config.h\"" \
-I$(srctree)/lib/mbedtls \
-I$(srctree)/lib/mbedtls/port \
-I$(srctree)/lib/mbedtls/external/mbedtls \
-I$(srctree)/lib/mbedtls/external/mbedtls/include \
-Wno-builtin-declaration-mismatch \
-D__KERNEL__ -DCONFIG_SYS_TEXT_BASE=0
# Linking flags
SHARED_LDFLAGS := -L$(UBOOT_BUILD) -lu-boot -Wl,-rpath,$(UBOOT_BUILD)
STATIC_LDFLAGS := -Wl,-T,$(LIB_STATIC_LDS) \
-Wl,--whole-archive $(UBOOT_BUILD)/libu-boot.a \
-Wl,--no-whole-archive \
-lpthread -ldl $(PLATFORM_LIBS) -Wl,-z,noexecstack