EXEC       = nvramd
LIB_SHARED = libnvramd.so

CFLAGS = -I$(ROOTDIR) -DUSE_HOSTCC

LDSHARE = $(CC) -shared
INSTALL = install

ifeq ("$(CONFIG_MODEL)", "PROJECT_CAP2150")
CFLAGS += -I$(USER_HEADERS) -I$(ROOTDIR)/$(LINUXDIR)/drivers/draytek/include -fsigned-char -fPIC
LDSHAREFLAGS = -fpic -fPIC -march=armv7-a -mtune=cortex-a7 -Wl,-z,relro,-z,now 
STRIP   = arm-openwrt-linux-uclibcgnueabi-strip
TARGET_PATH = $(FSDIR)/sbin
TARGET_LIB_PATH = $(FSDIR)/usr/lib
else ifeq ("$(CONFIG_PRODUCT)", "IPQ8074")
CFLAGS += -Os -pipe -march=armv7-a -mtune=cortex-a7 -fno-caller-saves -Wa,--noexecstack -fhonour-copts -mfloat-abi=soft -fsigned-char -fPIC -fstack-protector -D_FORTIFY_SOURCE=2 -Wl,-z,now -Wl,-z,relro
CFLAGS += -I$(ROOTDIR)/kernel_headers/include -I$(ROOTDIR)/$(SPF_FOLDER_NAME)/qsdk/staging_dir/target-arm_cortex-a7_musl-1.1.16_eabi/usr/include
TARGET_PATH = /bin
TARGET_LIB_PATH = /usr/lib
else ifeq ("$(CONFIG_PRODUCT)", "XRX500")
CFLAGS += -Os -pipe -mno-branch-likely -mips32r2 -mtune=24kc -fno-caller-saves -fno-plt -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -msoft-float -Wformat -Werror=format-security -fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wl,-z,now -Wl,-z,relro -Wall
CFLAGS += -fPIC
CFLAGS += -I$(ROOTDIR)/kernel_headers/include -I$(ROOTDIR)/$(UGW_FOLDER_NAME)/openwrt/staging_dir/target-mips_24kc+nomips16_musl_axepoint_gw_sec/usr/include
TARGET_PATH = /bin
TARGET_LIB_PATH = /usr/lib
else
CFLAGS += -fPIC
ifeq ("$(CONFIG_MODEL)","AP912C")
CFLAGS += -I$(ROOTDIR)/kernel_headers/include -I$(ROOTDIR)/lib/zlib
else
CFLAGS += -I$(ROOTDIR)/$(LINUXDIR)/include -I$(ROOTDIR)/lib/zlib
endif
TARGET_PATH = /bin
TARGET_LIB_PATH = /usr/lib
endif

OBJS = nvramd.o nvramd_env.o flash_api.o crc32.o nvram_api.o

all: shared $(EXEC)

$(EXEC): main.c
	$(CC) $(CFLAGS) -o $@ $< -L$(ROOTDIR)/lib/lib -lnvramd
	${STRIP} ${EXEC}

shared: $(OBJS)
	$(LDSHARE) -Wl,-soname,$(LIB_SHARED) $(LDSHAREFLAGS) -o $(LIB_SHARED) $(OBJS) -lc
	[ -d $(ROOTDIR)/lib/lib ] || mkdir $(ROOTDIR)/lib/lib;
	$(INSTALL) -m 644 $(LIB_SHARED) $(ROOTDIR)/lib/lib/

$(OBJS): %.o : %.c
	$(CC) $(CFLAGS) -Wall -c $< -o $@

romfs:
ifeq ("$(CONFIG_MODEL)", "PROJECT_CAP2150")
	rm -f ${TARGET_PATH}/${EXEC}
	cp $(EXEC) $(TARGET_PATH)
	cp $(LIB_SHARED) $(TARGET_LIB_PATH)
	rm -f $(TARGET_PATH)/nvram_get
	rm -f $(TARGET_PATH)/nvram_set
	cp nvram_get $(TARGET_PATH)
	cp nvram_set $(TARGET_PATH)
else
	$(ROMFSINST) $(TARGET_LIB_PATH)/$(LIB_SHARED)
	$(ROMFSINST) $(TARGET_PATH)/$(EXEC)
	$(ROMFSINST) $(TARGET_PATH)/nvram_get
	$(ROMFSINST) $(TARGET_PATH)/nvram_set
endif

clean:
	rm -f *.o *.so ${EXEC}
