include ../Makefile.conf
include $(LIBRND_PREFIX)/share/librnd3/librnd.mak

PLGD=../src_plugins
THIRD=../src_3rd
LIBARCHDIR=lib

CFLAGS = -Wall -g -I. -I$(THIRD) $(CFLAGS_LIBRND) `pkg-config --cflags freetype2` $(CFG_CFLAGS)
LDFLAGS = -rdynamic `pkg-config --libs freetype2` $(CFG_LDFLAGS)

CORE_OBJS = camv-rnd.o data.o event.o obj_any.o obj_arc.o obj_line.o obj_poly.o obj_grp.o obj_text.o gui_act.o draw.o crosshair.o rtree.o plug_io.o plug_io_act.o conf_core.o main_act.o
TEDAX_OBJS = $(PLGD)/io_tedax/parse.o $(PLGD)/io_tedax/io_tedax.o
TOOL_OBJS = $(PLGD)/std_tools/std_tools.o
GUI_OBJS = $(PLGD)/gui/status.o $(PLGD)/gui/layersel.o $(PLGD)/gui/camv_gui.o
GERBD_OBJS = $(PLGD)/import_gerb/gedraw.o $(PLGD)/import_gerb/geparse.o $(PLGD)/import_gerb/gexpr.o $(PLGD)/import_gerb/gex.tab.o
GERB_OBJS = $(GERBD_OBJS)  $(PLGD)/import_gerb/gerb2camv.o
EXC_OBJS = $(PLGD)/import_excellon/excellon.o
GCODE_OBJS = $(PLGD)/import_gcode/gcode.tab.o $(PLGD)/import_gcode/gcode_exec.o \
             $(PLGD)/import_gcode/gcode_lex.o $(PLGD)/import_gcode/gcode_vm.o \
             $(PLGD)/import_gcode/import_gcode.o
TTF2BBOX = $(THIRD)/ttf2bbox/ttf2bbox.o

OBJS = $(CORE_OBJS) $(GUI_OBJS) $(GERB_OBJS) $(TEDAX_OBJS) $(TOOL_OBJS) $(EXC_OBJS) $(GCODE_OBJS) $(TTF2BBOX)
RNDLIB = -lrnd-hid -lrnd-poly -lrnd-3rd
RNDLIB3RD = -lrnd-3rd
CQUOTE = $(LIBRND_PREFIX)/$(LIBARCHDIR)/librnd3/scconfig/cquote
SCCBOX = $(LIBRND_PREFIX)/$(LIBARCHDIR)/librnd3/scconfig/sccbox

all: camv-rnd $(PLGD)/import_gerb/gedump

include Makefile.dep
include Makefile.oc

camv-rnd: $(OBJS)
	$(CC) -o camv-rnd $(OBJS) $(LDFLAGS) $(RNDLIB) $(LDFLAGS_LIBRND)

GEDUMP_OBJS=$(GERBD_OBJS) $(PLGD)/import_gerb/gedump.o $(RNDLIB_DEPS)
$(PLGD)/import_gerb/gedump: $(GEDUMP_OBJS)
	$(CC) -o $(PLGD)/import_gerb/gedump $(GEDUMP_OBJS) $(LDFLAGS) $(RNDLIB3RD) $(LDFLAGS_LIBRND)

gerbyacc: ../src_plugins/import_gerb/gex.y ../src_plugins/import_gerb/gexpr.h
	cd ../src_plugins/import_gerb && byacc -b gex -d -p gex -P gex.y

gcodeyacc: import_gcode/gcode.y import_gcode/gcode_vm.h
	cd gcode && byacc -v -b gcode -d -p gcode -P gcode.y

conf_core_fields.h: conf_core.h
	$(LIBRND_PREFIX)/lib/librnd3/scconfig/gen_conf.sh  < conf_core.h > conf_core_fields.h

buildin.c: $(PLGD)/.builtin.pups $(PUPLUG)
	cd $(PLGD) && $(PUPLUG) buildin.c "-" < $(PLGD)/.builtin.pups > ../src/buildin.c

conf_internal.c: conf_core.lht $(CQUOTE)
	$(CQUOTE) -n camv_conf_internal < conf_core.lht > conf_internal.c

menu_internal.c: menu.lht $(CQUOTE)
	$(CQUOTE) -n camv_menu_internal < menu.lht > menu_internal.c

install_dirs_:
	$(SCCBOX) mkdir -p $(BINDIR) $(CONFDIR)

install_:
	$(SCCBOX) $(HOW) "camv-rnd" "$(BINDIR)/camv-rnd"
	$(SCCBOX) $(HOW) "menu.lht" "$(CONFDIR)/menu.lht"
	$(SCCBOX) $(HOW) "conf_core.lht" "$(CONFDIR)/conf_core.lht"

install:
	$(MAKE) install_dirs_
	$(MAKE) install_ HOW="install -f"

linstall:
	$(MAKE) install_dirs_
	$(MAKE) install_ HOW="linstall -f"

uninstall:
	$(MAKE) install_ HOW="uninstall"


clean:
	rm -f $(OBJS) $(GERBD_OBJS) $(PLGD)/import_gerb/gedump.o $(PLGD)/import_gerb/gedump $(GCODE_OBJS)

dep:
	./depgen "$(LIBRND_PREFIX)"
	make -f Makefile.depgen
	echo "$(OBJS) $(PLGD)/import_gerb/gedump.o" | ./ocgen > Makefile.oc

FORCE:
