include config.mak
vpath % $(SRC)

CC:=gcc
CFLAGS+=-Wall
CFLAGS+=-Werror
CFLAGS+=-O2
LIBPB:=libpb.a

ifeq (mingw,$(OS))
SO:=dll
SODIR:=$(BINDIR)
else
SO=so
SODIR:=$(LIBDIR)
endif

OBJS:=
OBJS+=$(LIBPB)(pb_csv2avdict.o)
OBJS+=$(LIBPB)(pb_basenamea.o)
OBJS+=$(LIBPB)(pb_basenamew.o)
OBJS+=$(LIBPB)(pb_load.o)
OBJS+=$(LIBPB)(pb_path.o)
OBJS+=$(LIBPB)(pb_file.o)
OBJS+=$(LIBPB)(pb_str_ext.o)
OBJS+=$(LIBPB)(pb_str_name.o)
OBJS+=$(LIBPB)(pb_str_home.o)
OBJS+=$(LIBPB)(pb_str_readdir.o)
OBJS+=$(LIBPB)(pb_str_args2pargs.o)
OBJS+=$(LIBPB)(pb_str_cre.o)
OBJS+=$(LIBPB)(pb_str_stat.o)
OBJS+=$(LIBPB)(pb_ext.o)
OBJS+=$(LIBPB)(pb_name.o)
OBJS+=$(LIBPB)(pb_a.o)
OBJS+=$(LIBPB)(pb_z.o)
#OBJS+=$(LIBPB)(pb_y.o)
#OBJS+=$(LIBPB)(pb_x.o)
ifeq (mingw,$(OS))
OBJS+=$(LIBPB)(pb_wext.o)
OBJS+=$(LIBPB)(pb_wname.o)
OBJS+=$(LIBPB)(pb_s2ws_v.o)
OBJS+=$(LIBPB)(pb_s2ws_size.o)
OBJS+=$(LIBPB)(pb_s2ws_copy.o)
OBJS+=$(LIBPB)(pb_ws2s_size.o)
OBJS+=$(LIBPB)(pb_ws2s_copy.o)
endif

ifneq (mingw,$(OS))
CFLAGS+=-fPIC
endif

INCLS:=
INCLS+=pb.h
INCLS+=pb_xy.h

.PHONY: all
all: hello
all: $(LIBPB)
#all: libpb.$(SO)
ifeq (mingw,$(OS))
#all: libpb.$(SO).a
#all: libpb.def
endif

.PHONY: clean
clean:
	rm -f hello.exe hello $(LIBPB)

.PHONY: install
install: $(INCLUDEDIR)/pb.h
install: $(INCLUDEDIR)/pb_xy.h
install: $(LIBDIR)/libpb.a
install: $(LIBDIR)/pkgconfig/libpb.pc
#install: $(SODIR)/libpb.$(SO)
ifeq (mingw,$(OS))
#install: $(LIBDIR)/libpb.$(SO).a
#install: $(LIBDIR)/libpb.def
endif

hello: $(LIBPB)
$(LIBPB): $(OBJS)
$(OBJS): $(INCLS)

$(INCLUDEDIR)/% $(LIBDIR)/% $(BINDIR)/%: %
	mkdir -p $(@D)
	cp $< $(@D)

$(LIBDIR)/pkgconfig/libpb.pc:
	rm -f $@
	mkdir -p $(@D)
	echo "GEN  $@"
	@echo 'prefix=$(PFX)' >> $@
	@echo 'exec_prefix=$${prefix}' >> $@
	@echo 'libdir=$${exec_prefix}/lib' >> $@
	@echo 'includedir=$${prefix}/include' >> $@
	@echo '' >> $@
	@echo 'Name: libpb' >> $@
	@echo 'Description: Utility library' >> $@
	@echo 'Version: 0' >> $@
	@#echo 'URL: http://www.xyz.org/' >> $@
	@echo 'Libs: -L$${libdir} -lpb' >> $@
	@echo 'Cflags: -I$${includedir}' >> $@

ifeq (mingw,$(OS))
libpb.$(SO) libpb.$(SO).a libpb.def: libpb.a
else
libpb.$(SO): libpb.a
endif
	@rm -rf work
	@mkdir work
	@cd work; ar x ../$<
ifeq (mingw,$(OS))
	$(CC) -shared -Wl,--out-implib,libpb.$(SO).a -Wl,--output-def,libpb.def -o $@ work/*.o
else
	$(CC) -shared -o $@ work/*.o
endif
	@rm -rf work
