include config.mak
include $(SRC)/source.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

SRCS=$(filter %.c,$(LIBPB_SRCS))
INCLS=$(filter %.h,$(LIBPB_SRCS))
OBJS+=$(patsubst %.c,$(LIBPB)(%.o),$(SRCS))

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

#LIBPB_INCL+=pb.h
#LIBPB_INCL+=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): $(patsubst %.h,$(SRC)/%.h,$(INCLS))

$(INCLUDEDIR)/% $(LIBDIR)/% $(BINDIR)/%: %
	mkdir -p $(@D)
	cp $< $(@D)
#	cp -p $< $(@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
