CC ?= gcc CFLAGS ?= -O2 -std=c11 -Wall -Wextra -Werror ROOT := .. TARGETS := test_imu_calibration test_gps_nav_epoch \ test_gps_nav_epoch_coalescing test_gps_time_anchor \ test_plic_warm_reset test_gps_acq_manager \ test_gps_ephemeris_cache test_gps_receiver_hardware_sim .PHONY: all run sanitize clean all: $(TARGETS) test_imu_calibration: test_imu_calibration.c $(ROOT)/src/imu/imu_calibration.c $(CC) $(CFLAGS) -I$(ROOT)/header $^ -lm -o $@ test_gps_nav_epoch: test_gps_nav_epoch.c $(ROOT)/src/gps/gps_nav_epoch.c $(CC) $(CFLAGS) -I$(ROOT)/header $^ -lm -o $@ test_gps_nav_epoch_coalescing: test_gps_nav_epoch_coalescing.c $(ROOT)/src/gps/gps_nav_epoch.c $(CC) $(CFLAGS) -I$(ROOT)/header $^ -lm -o $@ test_gps_time_anchor: test_gps_time_anchor.c $(ROOT)/src/gps/gps_time_anchor.c $(CC) $(CFLAGS) -I$(ROOT)/header $^ -lm -o $@ test_plic_warm_reset: test_plic_warm_reset.c $(ROOT)/../bsp/drivers/plic.c $(CC) $(CFLAGS) -Ifake_bsp -I$(ROOT)/../bsp/include $^ -o $@ test_gps_acq_manager: test_gps_acq_manager.c $(ROOT)/src/gps/gps_acq_manager.c $(CC) $(CFLAGS) -I$(ROOT)/header $^ -o $@ test_gps_ephemeris_cache: test_gps_ephemeris_cache.c $(ROOT)/src/gps/gps_ephemeris_cache.c $(CC) $(CFLAGS) -Wno-comment -Ifake_bsp -I$(ROOT)/header $^ -o $@ test_gps_receiver_hardware_sim: test_gps_receiver_hardware_sim.c \ $(ROOT)/src/gps/gps_acq_manager.c \ $(ROOT)/src/gps/gps_ephemeris_cache.c $(CC) $(CFLAGS) -Wno-comment -Ifake_bsp -I$(ROOT)/header $^ -o $@ run: $(TARGETS) ./test_imu_calibration ./test_gps_nav_epoch ./test_gps_nav_epoch_coalescing ./test_gps_time_anchor ./test_plic_warm_reset ./test_gps_acq_manager ./test_gps_ephemeris_cache ./test_gps_receiver_hardware_sim sanitize: $(CC) -O1 -g -std=c11 -Wall -Wextra -Werror \ -fsanitize=address,undefined -fno-omit-frame-pointer \ -I$(ROOT)/header test_gps_nav_epoch.c \ $(ROOT)/src/gps/gps_nav_epoch.c -lm \ -o test_gps_nav_epoch_san ASAN_OPTIONS=detect_leaks=1:halt_on_error=1 \ UBSAN_OPTIONS=halt_on_error=1 ./test_gps_nav_epoch_san $(CC) -O1 -g -std=c11 -Wall -Wextra -Werror \ -fsanitize=address,undefined -fno-omit-frame-pointer \ -I$(ROOT)/header test_gps_nav_epoch_coalescing.c \ $(ROOT)/src/gps/gps_nav_epoch.c -lm \ -o test_gps_nav_epoch_coalescing_san ASAN_OPTIONS=detect_leaks=1:halt_on_error=1 \ UBSAN_OPTIONS=halt_on_error=1 ./test_gps_nav_epoch_coalescing_san $(CC) -O1 -g -std=c11 -Wall -Wextra -Werror \ -fsanitize=address,undefined -fno-omit-frame-pointer \ -I$(ROOT)/header test_gps_acq_manager.c \ $(ROOT)/src/gps/gps_acq_manager.c \ -o test_gps_acq_manager_san ASAN_OPTIONS=detect_leaks=1:halt_on_error=1 \ UBSAN_OPTIONS=halt_on_error=1 ./test_gps_acq_manager_san $(CC) -O1 -g -std=c11 -Wall -Wextra -Werror \ -fsanitize=address,undefined -fno-omit-frame-pointer \ -Wno-comment -Ifake_bsp -I$(ROOT)/header \ test_gps_ephemeris_cache.c \ $(ROOT)/src/gps/gps_ephemeris_cache.c \ -o test_gps_ephemeris_cache_san ASAN_OPTIONS=detect_leaks=1:halt_on_error=1 \ UBSAN_OPTIONS=halt_on_error=1 ./test_gps_ephemeris_cache_san $(CC) -O1 -g -std=c11 -Wall -Wextra -Werror \ -fsanitize=address,undefined -fno-omit-frame-pointer \ -Wno-comment -Ifake_bsp -I$(ROOT)/header \ test_gps_receiver_hardware_sim.c \ $(ROOT)/src/gps/gps_acq_manager.c \ $(ROOT)/src/gps/gps_ephemeris_cache.c \ -o test_gps_receiver_hardware_sim_san ASAN_OPTIONS=detect_leaks=1:halt_on_error=1 \ UBSAN_OPTIONS=halt_on_error=1 \ ./test_gps_receiver_hardware_sim_san clean: rm -f $(TARGETS) test_gps_nav_epoch_coalescing_repro \ test_gps_nav_epoch_san test_gps_nav_epoch_coalescing_san \ test_gps_acq_manager_san test_gps_ephemeris_cache_san \ test_gps_receiver_hardware_sim_san