PROJECT=libsecurec.so

CC?=gcc

OPTION  = -fPIC
OPTION += -fstack-protector-all
OPTION += -D_FORTIFY_SOURCE=2 -O2
OPTION += -s
OPTION += -Wformat=2 -Wfloat-equal -Wshadow
OPTION += -Wconversion
OPTION += -Wformat-security
OPTION += -Wextra
OPTION += --param ssp-buffer-size=4
OPTION += -Warray-bounds
OPTION += -Wpointer-arith
OPTION += -Wcast-qual
OPTION += -Wstrict-prototypes
OPTION += -Wmissing-prototypes
OPTION += -Wstrict-overflow=1
OPTION += -Wstrict-aliasing=2
OPTION += -Wswitch -Wswitch-default

CFLAG   =  -Wall  -s -DNDEBUG -O2 $(OPTION)

SOURCES=$(wildcard ../src/*.c)

OBJECTS=$(patsubst %.c,%.o,$(SOURCES))

.PHONY:clean lib kernel

CFLAG += -I../include
LD_FLAG = -fPIC -Wl,-z,relro,-z,now,-z,noexecstack -fstack-protector-all

$(PROJECT): note_msg $(OBJECTS)
	@mkdir -p ../obj
	mkdir -p ../lib
	$(CC)  -shared -o ../lib/$@ $(patsubst %.o,../obj/%.o,$(notdir $(OBJECTS))) $(LD_FLAG)
	@echo "finish $(PROJECT)"
	#you may add you custom commands here

.c.o:
	@mkdir -p ../obj
	$(CC) -c $< $(CFLAG) -o ../obj/$(patsubst %.c,%.o,$(notdir $<))

note_msg:
	-@echo  -e $(NOTE_MSG)

clean:
	echo "cleaning ...."
	-rm -rf *.o ../obj ../lib $(PROJECT)
	echo "clean up"