ifndef GO4SYS
GO4SYS = $(shell go4-config --go4sys)
endif

include $(GO4SYS)/Makefile.config

## normally should be like this for every module, but can be specific

ifdef GO4PACKAGE
USERGUI4_DIR         = qt4/Go4UserGUI
USERGUI4_QFLAGS      = GO4INCDIR=../../include GO4BINDIR=../../bin
USERGUI4_DEPRULES    = $(GO4GUI4_EXE)
else
USERGUI4_DIR         = $(CURDIR)
USERGUI4_QFLAGS      = GO4INCDIR=$(shell go4-config --nativeincdir) GO4BINDIR=$(shell go4-config --nativebindir)
endif

USERGUI4_LIBDIR      = $(USERGUI4_DIR)
USERGUI4_QTLIBNAME   = libGo4UserGui
USERGUI4_QTPRO       = Go4UserGui.pro
USERGUI4_QTMAKE      = Makefile.qt

USERGUI4_NOTLIBF     =

## must be similar for every module

USERGUI4_FORMS      := $(wildcard $(USERGUI4_DIR)/*.ui)
USERGUI4_FH         := $(USERGUI4_FORMS:.ui=.h)
USERGUI4_FS         := $(USERGUI4_FORMS:.ui=.cpp)


USERGUI4_QTLIB       = $(USERGUI4_LIBDIR)/$(USERGUI4_QTLIBNAME).$(DllSuf)

# used in the main Makefile

ifdef DOPACKAGE
DISTRFILES         += $(USERGUI4_FORMS) $(USERGUI4_FS) $(USERGUI4_FH)
DISTRFILES         += $(USERGUI4_DIR)/$(USERGUI4_QTPRO) $(USERGUI4_DIR)/README.md
DISTRFILES         += $(USERGUI4_DIR)/Makefile
endif

##### local rules #####


ifdef GO4_X11


ifdef GO4_QT
ifneq ($(GO4_OS),Win32)

all:: $(USERGUI4_QTLIB)

gui:: $(USERGUI4_QTLIB)

clean-bin:: clean-qt4usergui-bin

clean:: clean-qt4usergui

endif
endif

$(USERGUI4_DIR)/$(USERGUI4_QTMAKE): $(USERGUI4_DIR)/$(USERGUI4_QTPRO) $(USERGUI4_FORMS) $(USERGUI4_DEPRULES) 
	@echo "Generating $(USERGUI4_QTMAKE)..."
	cd $(USERGUI4_DIR); $(QMAKE) $(USERGUI4_QTPRO) -o $(USERGUI4_QTMAKE) $(QMAKEOPTFLAG) $(QMAKEFLAGS)

$(USERGUI4_QTLIB): $(USERGUI4_DIR)/$(USERGUI4_QTMAKE) $(USERGUI4_FH) $(USERGUI4_FS) $(USERGUI4_DEPRULES)  
	@echo "Generating Qt part of the User GUI..."
	+cd $(USERGUI4_DIR); $(MAKEFORQT) -f $(USERGUI4_QTMAKE) $(USERGUI4_QFLAGS)
ifeq ($(GO4_OS),Win32)
	$(MV) $(USERGUI4_DIR)/release/$(USERGUI4_QTLIBNAME).* $(USERGUI4_DIR)
endif


clean-qt4usergui-bin:
ifneq ($(wildcard $(USERGUI4_DIR)/$(USERGUI4_QTMAKE)),)
	cd $(USERGUI4_DIR); $(MAKEFORQT) -f $(USERGUI4_QTMAKE) clean $(USERGUI4_QFLAGS)
endif
	@$(RM) $(USERGUI4_DIR)/$(USERGUI4_QTMAKE)*
	@$(RM) $(USERGUI4_DIR)/*.o $(USERGUI4_DIR)/moc_*.* $(USERGUI4_DIR)/ui_*.h
ifeq ($(GO4_OS),Win32)
	@$(RM) $(USERGUI4_LIBDIR)/$(USERGUI4_QTLIBNAME).exp $(USERGUI4_LIBDIR)/$(USERGUI4_QTLIBNAME).lib
	@$(RMDIR) $(USERGUI4_DIR)/release $(USERGUI4_DIR)/debug 
endif

clean-qt4usergui: clean-qt4usergui-bin
	@$(RM) $(USERGUI4_LIBDIR)/$(USERGUI4_QTLIBNAME).* $(USERGUI4_LIBDIR)/.qmake.stash

clean-qt4:: clean-qt4usergui


include $(GO4SYS)/Makefile.rules

else

# case when no X11 support provided on the machine

clean-qt4usergui: 
	@$(RM) qt4/Go4UserGUI/*.so qt4/Go4UserGUI/moc_*.* qt4/Go4UserGUI/*.o qt4/Go4UserGUI/ui_QUserPanel.h qt4/Go4UserGUI/Makefile.qt

endif
