USER_COMP_PY = pyvcp hal_input gladevcp scorbot-er-3 mitsub_vfd
USER_COMPS := $(sort $(wildcard hal/user_comps/*.comp))
USER_COMP_BINS := $(patsubst hal/user_comps/%.comp, ../bin/%, $(USER_COMPS))
USER_COMP_MANPAGES := $(patsubst hal/user_comps/%.comp, ../docs/man/man1/%.1, $(USER_COMPS))
USER_COMP_SRCS := $(patsubst %.comp, objects/%.c, $(USER_COMPS))
GENERATED_MANPAGES += $(USER_COMP_MANPAGES)
USERSRCS += $(USER_COMP_SRCS)
$(patsubst %, ../bin/%, $(USER_COMP_PY)) : ../bin/%: hal/user_comps/%.py
@$(ECHO) Syntax checking python script $(notdir $@)
$(Q)$(PYTHON) -c 'import sys; compile(open(sys.argv[1]).read(), sys.argv[1], "exec")' $<
$(ECHO) Copying python script $(notdir $@)
$(Q)(echo '#!$(PYTHON)'; sed '1 { /^#!/d; }' $<) > $@.tmp && chmod +x $@.tmp && mv -f $@.tmp $@
PYTARGETS += $(patsubst %, ../bin/%, $(USER_COMP_PY))
ifdef HAVE_LIBMODBUS3
GS2_SRCS := hal/user_comps/gs2_vfd.c
GS2_LDFLAGS := $(GLIB_LIBS) $(LIBMODBUS_LIBS)
GS2_CCFLAGS := $(GLIB_CFLAGS) $(LIBMODBUS_CFLAGS)
$(call TOOBJSDEPS, $(GS2_SRCS)) : EXTRAFLAGS += $(GS2_CCFLAGS)
../bin/gs2_vfd: $(call TOOBJS, $(GS2_SRCS)) ../lib/liblinuxcnchal.so.0
$(ECHO) Linking $(notdir $@)
$(Q)$(CC) -o $@ $^ $(LDFLAGS) $(GS2_LDFLAGS)
USERSRCS += $(GS2_SRCS)
TARGETS += ../bin/gs2_vfd
HY_GT_SRCS := hal/user_comps/hy_gt_vfd.c
HY_GT_LDFLAGS := $(LIBMODBUS_LIBS)
HY_GT_CCFLAGS := $(LIBMODBUS_CFLAGS)
$(call TOOBJSDEPS, $(HY_GT_SRCS)) : EXTRAFLAGS += $(HY_GT_CCFLAGS)
../bin/hy_gt_vfd: $(call TOOBJS, $(HY_GT_SRCS)) ../lib/liblinuxcnchal.so.0
$(ECHO) Linking $(notdir $@)
$(Q)$(CC) -o $@ $^ $(LDFLAGS) $(HY_GT_LDFLAGS)
USERSRCS += $(HY_GT_SRCS)
TARGETS += ../bin/hy_gt_vfd
endif # HAVE_LIBMODBUS
ifeq ($(HIDRAW_H_USABLE),yes)
SHUTTLE_SRC = hal/user_comps/shuttle.c
USERSRCS += $(SHUTTLE_SRC)
../bin/shuttle: $(call TOOBJS, $(SHUTTLE_SRC)) ../lib/liblinuxcnchal.so.0
$(ECHO) Linking $(notdir $@)
$(Q)$(CC) $(LDFLAGS) -o $@ $^
TARGETS += ../bin/shuttle
endif
ifdef HAVE_LIBUSB10
XHC_HB04_SRC = hal/user_comps/xhc-hb04.cc
USERSRCS += $(XHC_HB04_SRC)
$(call TOOBJSDEPS, $(XHC_HB04_SRC)) : EXTRAFLAGS += $(LIBUSB10_CFLAGS)
../bin/xhc-hb04: $(call TOOBJS, $(XHC_HB04_SRC)) ../lib/liblinuxcnchal.so.0 ../lib/liblinuxcncini.so.0
$(ECHO) Linking $(notdir $@)
$(Q)$(CC) $(LDFLAGS) -o $@ $^ -lm -lstdc++ $(LIBUSB10_LIBS)
TARGETS += ../bin/xhc-hb04
endif # HAVE_LIBUSB10
$(patsubst ./hal/user_comps/%,../include/%,$(wildcard ./hal/user_comps/*.h)): ../include/%.h: ./hal/user_comps/%.h
cp $^ $@
$(patsubst ./hal/user_comps/%,../include/%,$(wildcard ./hal/user_comps/*.hh)): ../include/%.hh: ./hal/user_comps/%.hh
cp $^ $@
$(USER_COMP_MANPAGES): ../docs/man/man1/%.1: hal/user_comps/%.comp ../bin/halcompile
$(ECHO) Making halcompile manpage $(notdir $@)
@mkdir -p $(dir $@)
$(Q)../bin/halcompile -U --userspace --document -o $@ $<
$(USER_COMP_SRCS): objects/%.c: %.comp ../bin/halcompile
$(ECHO) "Preprocessing $(notdir $<)"
@mkdir -p $(dir $@)
$(Q)../bin/halcompile -U --userspace --require-license -o $@ $<
$(USER_COMP_BINS): ../bin/%: objects/objects/hal/user_comps/%.o ../lib/liblinuxcnchal.so
$(ECHO) Linking $(notdir $@)
$(Q)$(CC) $(LDFLAGS) -o $@ $^ -lm -lstdc++
.PHONY: user-comps
user-comps: $(USER_COMP_BINS)
TARGETS += $(patsubst %.comp, ../bin/%, $(notdir $(USER_COMPS)))
#modules: $(patsubst %.comp, objects/%.c, $(COMPS) $(COMP_DRIVERS))