ifeq ($(CP),)
CP := cp -f
endif

PROG = swmodd
LIB = libswmodd.so

OBJS = swmod.o swmod_host.o swmod_opkg.o swmod_uci.o tools.o opkg_utils.o swmod_api.o
LIB_OBJS = datamodel.o

PROG_CFLAGS = $(CFLAGS) -fstrict-aliasing -Wall -Werror -fPIC
PROG_LDFLAGS = $(LDFLAGS) -luci -lubus -lubox -lblobmsg_json -luuid -lcurl

ifeq ($(SWMOD_LXC),yes)
OBJS += swmod_lxc.o
PROG_CFLAGS += -DSWMOD_LXC
PROG_LDFLAGS += -llxc
endif

ifeq ($(SWMOD_CRUN),yes)
OBJS += swmod_crun.o
PROG_CFLAGS += -DSWMOD_CRUN
endif

%.o: %.c
	$(CC) $(PROG_CFLAGS) $(FPIC) -c -o $@ $<

all: ${PROG} ${LIB}

${PROG}: $(OBJS)
	$(CC) $(PROG_CFLAGS) -o $@ $^ $(PROG_LDFLAGS)
	$(CP) ${PROG} ../${PROG}

$(LIB): $(LIB_OBJS)
	$(CC) $(PROG_CFLAGS) $(PROG_LDFLAGS) -shared -o $@ $^
	$(CP) ${LIB} ../${LIB}

clean:
	rm -f *.o $(PROG) $(LIB)
