mirror of
https://github.com/meekrosoft/fff
synced 2026-01-23 00:15:59 +01:00
commit e5a5749971eb9274679699020a54c91d4053ed79 Author: James Fraser <wulfgar.pro@gmail.com> Date: Sun Feb 3 19:57:31 2019 +1100 PR #47: Minor review fixes to tests files. commit e9f11b9ec8de8f8d1f0de7b6959c575e15894526 Author: James Fraser <wulfgar.pro@gmail.com> Date: Sun Feb 3 19:57:04 2019 +1100 PR #47: Minor review fixes. commit0a7fbeceecAuthor: Pauli Salmenrinne <pauli.salmenrinne@pexraytech.com> Date: Tue Jan 22 15:11:10 2019 +0200 Add example for the weak linking commit647737304dAuthor: susundberg <susundberg@gmail.com> Date: Wed Mar 21 13:14:05 2018 +0200 Add "FFF_FUNCTION_ATTRIBUTES" definition that can be used to declare attributes for functions. More specifically, allow __weak__ attribute.
40 lines
1.5 KiB
Makefile
40 lines
1.5 KiB
Makefile
BUILD_DIR = ../../build
|
|
INCLUDE_DIRS = -I "../../" -I "./src/"
|
|
|
|
BUILD_DIR_FAKE = $(BUILD_DIR)/weak_linking
|
|
CC = gcc
|
|
WEAK_FLAGS=-Wall -DFFF_GCC_FUNCTION_ATTRIBUTES="__attribute__((weak))"
|
|
|
|
$(BUILD_DIR_FAKE)/%.o: test/%.c
|
|
@echo "Compiling "$@
|
|
$(CC) $(WEAK_FLAGS) $(INCLUDE_DIRS) -g -O0 -c $< -o $@
|
|
|
|
FAKE_OBJECTS = $(BUILD_DIR_FAKE)/display.fake.o $(BUILD_DIR_FAKE)/sensor.fake.o $(BUILD_DIR_FAKE)/sensor.fake.o $(BUILD_DIR_FAKE)/error.fake.o $(BUILD_DIR_FAKE)/bus.fake.o $(BUILD_DIR_FAKE)/test_common.o
|
|
|
|
TEST_BINARIES = $(BUILD_DIR_FAKE)/test_main $(BUILD_DIR_FAKE)/test_display $(BUILD_DIR_FAKE)/test_sensor
|
|
mkdir:
|
|
mkdir -p $(BUILD_DIR_FAKE)/
|
|
|
|
clean:
|
|
rm -rf $(BUILD_DIR_FAKE)/
|
|
|
|
$(BUILD_DIR_FAKE)/libfakes.a: $(FAKE_OBJECTS)
|
|
ar r $@ $^
|
|
|
|
# First case where we need __weak__ linking:
|
|
# - If we have the build objects (for some reason) in order where the fake object comes first.
|
|
$(BUILD_DIR_FAKE)/test_display: ./test/display.test.c $(BUILD_DIR_FAKE)/libfakes.a ./src/display.c
|
|
$(CC) $(WEAK_FLAGS) $(INCLUDE_DIRS) -o $@ $^
|
|
|
|
# Second case where we need weak linking:
|
|
# - If we use an object from the fake object -> gcc linker will include it.
|
|
$(BUILD_DIR_FAKE)/test_sensor: ./test/sensor.test.c ./src/sensor.c $(BUILD_DIR_FAKE)/libfakes.a
|
|
$(CC) $(WEAK_FLAGS) $(INCLUDE_DIRS) -o $@ $^
|
|
|
|
# Third case where we need weak linking:
|
|
# - We want to fake one function but not all.
|
|
$(BUILD_DIR_FAKE)/test_main: ./test/main.test.c ./src/main.c $(BUILD_DIR_FAKE)/libfakes.a
|
|
$(CC) $(WEAK_FLAGS) $(INCLUDE_DIRS) -o $@ $^
|
|
|
|
all: mkdir $(TEST_BINARIES)
|