#
# Makefile
#
CC ?= gcc

WARNINGS ?= -Werror -Wall -Wextra \
            -Wshadow -Wundef -Wmaybe-uninitialized -Wmissing-prototypes -Wno-discarded-qualifiers \
            -Wno-unused-function -Wno-error=strict-prototypes -Wpointer-arith -fno-strict-aliasing -Wno-error=cpp -Wuninitialized \
            -Wno-unused-parameter -Wno-missing-field-initializers -Wno-format-nonliteral -Wno-cast-qual -Wunreachable-code -Wno-switch-default  \
            -Wreturn-type -Wmultichar -Wformat-security -Wno-ignored-qualifiers -Wno-error=pedantic -Wno-sign-compare -Wno-error=missing-prototypes -Wdouble-promotion -Wclobbered -Wdeprecated  \
            -Wempty-body -Wshift-negative-value -Wstack-usage=2048 \
            -Wtype-limits -Wsizeof-pointer-memaccess -Wpointer-arith

CFLAGS ?= -O3 -g0 / $(WARNINGS)
LIBS ?= -lpthread -lm -llvgl -llvdrv -ldrm -lfreetype -lwayland-client -lwayland-cursor -lxkbcommon
BIN = lvgldemo

#Collect the files to compile
MAINSRC = ./main.c
CSRCS  += lv_demo_test.c
#CSRCS  += lv_demo_multimedia.c

OBJEXT ?= .o

MAINOBJ = $(MAINSRC:.c=$(OBJEXT))

## MAINOBJ -> OBJFILES

all: default

%.o: %.c
	@$(CC)  $(CFLAGS) -c $< -o $@
	@echo "CC $<"

default: $(MAINOBJ) $(CSRCS)
	$(CC) -o $(BIN) $(MAINOBJ) $(CSRCS) $(LIBS)

clean:
	rm -f $(BIN) $(AOBJS) $(COBJS) $(MAINOBJ)
