CFLAGS = -std=c99 -pedantic -pedantic-errors -Wall -g3 -O2 -D_ANSI_SOURCE_ CFLAGS += -fno-common \ -Wall \ -Wdeclaration-after-statement \ -Wextra \ -Wformat=2 \ -Winit-self \ -Winline \ -Wpacked \ -Wp,-D_FORTIFY_SOURCE=2 \ -Wpointer-arith \ -Wlarger-than-65500 \ -Wmissing-declarations \ -Wmissing-format-attribute \ -Wmissing-noreturn \ -Wmissing-prototypes \ -Wnested-externs \ -Wold-style-definition \ -Wredundant-decls \ -Wsign-compare \ -Wstrict-aliasing=2 \ -Wstrict-prototypes \ -Wundef \ -Wunreachable-code \ -Wunsafe-loop-optimizations \ -Wunused-but-set-variable \ -Wwrite-strings LDLIBS = -llept -lturbojpeg -lam7xxx # For clock_nanosleep() CFLAGS += -D_POSIX_C_SOURCE=200112L # for clock_gettime() LDLIBS += -lrt # Some compiler optimizations CFLAGS += -O3 \ -fno-strict-aliasing \ -ftree-vectorize \ -ffast-math \ -funroll-loops \ -funsafe-math-optimizations \ -fsingle-precision-constant # NEON optimizations ifeq ($(NEON), 1) CFLAGS += -march=armv7-a \ -mtune=cortex-a8 \ -mfpu=neon \ -mfloat-abi=hard \ -DUSE_NEON endif # Use the BBB eQEP unit ifeq ($(EQEP), 1) CFLAGS += -DUSE_EQEP endif cyclabile: cyclabile.o projective_split.o clean: rm -rf *~ *.o cyclabile cyclabile.service run: ./cyclabile -P 2 -f images/bike_lane.png -e /dev/input/event1 install_service: cp 90-projector.rules $(DESTDIR)/lib/udev/rules.d/ udevadm control --reload sed -e 's!@@CYCLABILE_SOURCE_PATH@@!$(shell pwd)!' < cyclabile.service.in > cyclabile.service cp cyclabile.service $(DESTIR)/lib/systemd/system/ uninstall_service: disable_service rm $(DESTIR)/lib/systemd/system/cyclabile.service rm $(DESTDIR)/lib/udev/rules.d/90-projector.rules udevadm control --reload disable_service: systemctl disable cyclabile.service enable_service: install_service systemctl enable cyclabile.service test: cyclabile valgrind --suppressions=contrib/libusb-udev.supp \ --leak-check=full --show-reachable=yes \ ./cyclabile -f images/bumpy_road.png -e /dev/input/event1