include config.mak
sfmtdir=$(unpackdir)/SFMT-src-1.5.1
VPATH+=$(sfmtdir)
include $(srcdir)/version.mak

#PIB_WIDGET:=X

CPPFLAGS+=-I$(includedir)
CPPFLAGS+=-I$(sfmtdir)
CPPFLAGS+=-DSFMT_MEXP=19937
ifneq (,$(yas-version-major)) # [
CPPFLAGS+=-DYAS_VERSION_MAJOR=$(yas-version-major)
endif # ]
ifneq (,$(yas-version-minor)) # [
CPPFLAGS+=-DYAS_VERSION_MINOR=$(yas-version-minor)
endif # ]
ifneq (,$(yas-version-build)) # [
CPPFLAGS+=-DYAS_VERSION_BUILD=$(yas-version-build)
endif # ]
ifneq (,$(yas-version-beta)) # [
CPPFLAGS+=-DYAS_VERSION_BETA=$(yas-version-beta)
endif # ]
LDLIBS+=$(call ldlib,advapi32)
LDLIBS+=$(call ldlib,shell32)
LDLIBS+=$(call ldlib,gdi32)

include $(srcdir)/rules.mak

lib:=$(libdir)/libyas$(exta)
ifneq (,$(PIB_WIDGET)) # [
all: $(bindir)/xwidget
$(bindir)/xwidget: $(libdir)/yas_res/resource$(extres)
#$(bindir)/xwidget: $(lib)
$(bindir)/xwidget: $(libdir)/libpib$(exta)
ifeq (ms,$(tools)) ########################################################## [
$(bindir)/xwidget: xwidget$(exto)
	mkdir -p $(@D)
	$(MSCL) $^ $(MSLINK_OUTPUT_OPTION) -link $(MSLINK)
else ###################################################################### ] [
$(bindir)/xwidget: xwidget$(exto)
	mkdir -p $(@D)
#  recipe to execute (built-in):
	$(LINK.o) $^ $(LOADLIBES) $(LDLIBS) -o $@
endif ####################################################################### ]
endif # ]
all: $(sodir)/gen_yas$(extso)
$(sodir)/gen_yas$(extso): $(libdir)/yas_res/resource$(extres)
$(sodir)/gen_yas$(extso): $(lib)
#$(sodir)/gen_yas$(extso): $(libdir)/$(call strip,libpib$(exta))
$(sodir)/gen_yas$(extso): $(libdir)/libpib$(exta)
ifeq (ms,$(tools)) # [
$(sodir)/gen_yas$(extso): $(libdir)/gen_yas$(exto)
	mkdir -p $(@D)
	$(MSCL) $^ $(MSLINK_OUTPUT_OPTION) -LD -link $(MSLINK)
else # ] [
$(sodir)/gen_yas$(extso): $(libdir)/gen_yas$(exto)
	mkdir -p $(@D)
	$(CC) -mwindows -shared $(CFLAGS) $(CPPFLAGS) $^ $(LDFLAGS) $(LDLIBS) -o $@ -static
endif # ]
$(libdir)/gen_yas.obj: gen_yas.c
	mkdir -p $(@D)
	$(MSCOMPILE.c) $(MSCOMPILE_OUTPUT_OPTION) $<
$(libdir)/gen_yas.o: gen_yas.c
	mkdir -p $(@D)
	$(COMPILE.c) $(OUTPUT_OPTION) $<
$(libdir)/yas_res/resource.res: $(srcdir)/yas_res/resource.rc
	mkdir -p $(@D)
	$(MSRC) -Fo$(shell cygpath -w $@) $<
$(libdir)/yas_res/resource.o: $(srcdir)/yas_res/resource.rc
	mkdir -p $(@D)
	windres -i $< -o $@
$(lib): $(libdir)
$(libdir):
	mkdir -p $@
members+=$(lib)(yas$(exto))
#
members+=$(lib)(yas_control2_main$(exto))
members+=$(lib)(yas_control2_notes$(exto))
members+=$(lib)(yas_control2_references$(exto))
members+=$(lib)(yas_control2_license$(exto))
members+=$(lib)(yas_control2_monitor$(exto))
members+=$(lib)(yas_control2_algorithms$(exto))
members+=$(lib)(yas_control2_config$(exto))
#
members+=$(lib)(yas_histogram$(exto))
#members+=$(lib)(yas_form_algorithms$(exto))
#members+=$(lib)(yas_form_notes$(exto))
#members+=$(lib)(yas_form_references$(exto))
#members+=$(lib)(yas_form_sfmt$(exto))
#members+=$(lib)(yas_form_license$(exto))
#members+=$(lib)(yas_form_main$(exto))
#members+=$(lib)(yas_form_configuration$(exto))
#members+=$(lib)(yas_form_monitor$(exto))
members+=$(lib)(yas_rand$(exto))
members+=$(lib)(yas_rand_crypt$(exto))
members+=$(lib)(yas_rand_libc$(exto))
members+=$(lib)(yas_rand_sfmt$(exto))
members+=$(lib)(yas_rand_well$(exto))
members+=$(lib)(yas_rand_marsaglia$(exto))
members+=$(lib)(yas_thread_sync_request_create$(exto))
members+=$(lib)(yas_thread_sync_request_update$(exto))
members+=$(lib)(SFMT$(exto))
$(lib): $(members)
os+=$(members)
os+=$(libdir)/gen_yas$(exto)
os+=xwidget$(exto)

header+=$(srcdir)/version.mak
header+=$(PWD)/Makefile
header+=$(includedir)/pib.h
header+=$(includedir)/pib_widget.h
header+=$(includedir)/yas.h
header+=$(includedir)/sfmt.h
header+=$(includedir)/yas_res/resource.h
$(os): $(header)

$(includedir)/sfmt.h: $(sfmtdir)/sfmt.h
	mkdir -p $(@D)
	cp $< $(@D)
	touch $@
$(includedir)/yas.h: $(srcdir)/yas.h
	mkdir -p $(@D)
	cp $< $(@D)
	touch $@
$(includedir)/yas_res/resource.h: $(srcdir)/yas_res/resource.h
	mkdir -p $(@D)
	cp $< $(@D)
	touch $@
.PHONY: clean
clean:
	rm -f $(sodir)/gen_yas$(extso)
	rm -f $(libdir)/yas_res/resource$(extres)
	rm -f $(lib)
	rm -f $(includedir)/yas.h
	rm -f $(includedir)/sfmt.h
	rm -f $(includedir)/yas_res/resource.h
