DVX_GUI/widgets/Makefile

147 lines
5.6 KiB
Makefile

# DVX Widget Modules Makefile for DJGPP cross-compilation
#
# Builds individual .wgt modules from widget source files.
# Each .wgt is a DXE loaded by the loader at startup.
DJGPP_PREFIX = $(HOME)/djgpp/djgpp
CC = $(DJGPP_PREFIX)/bin/i586-pc-msdosdjgpp-gcc
DXE3GEN = PATH=$(DJGPP_PREFIX)/bin:$(PATH) DJDIR=$(DJGPP_PREFIX)/i586-pc-msdosdjgpp $(DJGPP_PREFIX)/i586-pc-msdosdjgpp/bin/dxe3gen
CFLAGS = -O2 -Wall -Wextra -march=i486 -mtune=i586 -I../core -I../core/platform -I../tasks -I../tasks/thirdparty
OBJDIR = ../obj/widgets
WGTDIR = ../bin/widgets
SRCS = widgetAnsiTerm.c \
widgetBox.c \
widgetButton.c \
widgetCanvas.c \
widgetCheckbox.c \
widgetComboBox.c \
widgetDropdown.c \
widgetImage.c \
widgetImageButton.c \
widgetLabel.c \
widgetListBox.c \
widgetListView.c \
widgetProgressBar.c \
widgetRadio.c \
widgetScrollPane.c \
widgetSeparator.c \
widgetSlider.c \
widgetSpacer.c \
widgetSpinner.c \
widgetSplitter.c \
widgetStatusBar.c \
widgetTabControl.c \
widgetTextInput.c \
widgetTimer.c \
widgetToolbar.c \
widgetTreeView.c
OBJS = $(patsubst %.c,$(OBJDIR)/%.o,$(SRCS))
WGT_MODS = $(WGTDIR)/box.wgt \
$(WGTDIR)/button.wgt \
$(WGTDIR)/canvas.wgt \
$(WGTDIR)/checkbox.wgt \
$(WGTDIR)/combobox.wgt \
$(WGTDIR)/dropdown.wgt \
$(WGTDIR)/imgbtn.wgt \
$(WGTDIR)/image.wgt \
$(WGTDIR)/label.wgt \
$(WGTDIR)/listbox.wgt \
$(WGTDIR)/listview.wgt \
$(WGTDIR)/progress.wgt \
$(WGTDIR)/radio.wgt \
$(WGTDIR)/scrlpane.wgt \
$(WGTDIR)/separatr.wgt \
$(WGTDIR)/slider.wgt \
$(WGTDIR)/spacer.wgt \
$(WGTDIR)/spinner.wgt \
$(WGTDIR)/splitter.wgt \
$(WGTDIR)/statbar.wgt \
$(WGTDIR)/tabctrl.wgt \
$(WGTDIR)/terminal.wgt \
$(WGTDIR)/textinpt.wgt \
$(WGTDIR)/timer.wgt \
$(WGTDIR)/toolbar.wgt \
$(WGTDIR)/treeview.wgt
.PHONY: all clean
all: $(WGT_MODS)
# Generic widget module rule: -E _wgt exports all public API + wgtRegister
$(WGTDIR)/%.wgt: | $(WGTDIR)
$(DXE3GEN) -o $@ -E _wgt -U $<
# Map .wgt name to .o file
$(WGTDIR)/box.wgt: $(OBJDIR)/widgetBox.o
$(WGTDIR)/button.wgt: $(OBJDIR)/widgetButton.o
$(WGTDIR)/canvas.wgt: $(OBJDIR)/widgetCanvas.o
$(WGTDIR)/checkbox.wgt: $(OBJDIR)/widgetCheckbox.o
$(WGTDIR)/combobox.wgt: $(OBJDIR)/widgetComboBox.o
$(WGTDIR)/dropdown.wgt: $(OBJDIR)/widgetDropdown.o
$(WGTDIR)/imgbtn.wgt: $(OBJDIR)/widgetImageButton.o
$(WGTDIR)/image.wgt: $(OBJDIR)/widgetImage.o
$(WGTDIR)/label.wgt: $(OBJDIR)/widgetLabel.o
$(WGTDIR)/listbox.wgt: $(OBJDIR)/widgetListBox.o
$(WGTDIR)/listview.wgt: $(OBJDIR)/widgetListView.o
$(WGTDIR)/progress.wgt: $(OBJDIR)/widgetProgressBar.o
$(WGTDIR)/radio.wgt: $(OBJDIR)/widgetRadio.o
$(WGTDIR)/scrlpane.wgt: $(OBJDIR)/widgetScrollPane.o
$(WGTDIR)/separatr.wgt: $(OBJDIR)/widgetSeparator.o
$(WGTDIR)/slider.wgt: $(OBJDIR)/widgetSlider.o
$(WGTDIR)/spacer.wgt: $(OBJDIR)/widgetSpacer.o
$(WGTDIR)/spinner.wgt: $(OBJDIR)/widgetSpinner.o
$(WGTDIR)/splitter.wgt: $(OBJDIR)/widgetSplitter.o
$(WGTDIR)/statbar.wgt: $(OBJDIR)/widgetStatusBar.o
$(WGTDIR)/tabctrl.wgt: $(OBJDIR)/widgetTabControl.o
$(WGTDIR)/terminal.wgt: $(OBJDIR)/widgetAnsiTerm.o
$(WGTDIR)/textinpt.wgt: $(OBJDIR)/widgetTextInput.o
$(WGTDIR)/timer.wgt: $(OBJDIR)/widgetTimer.o
$(WGTDIR)/toolbar.wgt: $(OBJDIR)/widgetToolbar.o
$(WGTDIR)/treeview.wgt: $(OBJDIR)/widgetTreeView.o
# Compile
$(OBJDIR)/%.o: %.c | $(OBJDIR)
$(CC) $(CFLAGS) -c -o $@ $<
$(OBJDIR):
mkdir -p $(OBJDIR)
$(WGTDIR):
mkdir -p $(WGTDIR)
# Dependencies
WIDGET_DEPS = ../core/widgetInternal.h ../core/dvxWidget.h ../core/dvxTypes.h ../core/dvxApp.h ../core/dvxDraw.h ../core/dvxWm.h ../core/dvxVideo.h
$(OBJDIR)/widgetAnsiTerm.o: widgetAnsiTerm.c $(WIDGET_DEPS)
$(OBJDIR)/widgetBox.o: widgetBox.c $(WIDGET_DEPS)
$(OBJDIR)/widgetButton.o: widgetButton.c $(WIDGET_DEPS)
$(OBJDIR)/widgetCanvas.o: widgetCanvas.c $(WIDGET_DEPS) ../core/thirdparty/stb_image.h ../core/thirdparty/stb_image_write.h
$(OBJDIR)/widgetCheckbox.o: widgetCheckbox.c $(WIDGET_DEPS)
$(OBJDIR)/widgetComboBox.o: widgetComboBox.c $(WIDGET_DEPS)
$(OBJDIR)/widgetDropdown.o: widgetDropdown.c $(WIDGET_DEPS)
$(OBJDIR)/widgetImage.o: widgetImage.c $(WIDGET_DEPS) ../core/thirdparty/stb_image.h
$(OBJDIR)/widgetImageButton.o: widgetImageButton.c $(WIDGET_DEPS)
$(OBJDIR)/widgetLabel.o: widgetLabel.c $(WIDGET_DEPS)
$(OBJDIR)/widgetListBox.o: widgetListBox.c $(WIDGET_DEPS)
$(OBJDIR)/widgetListView.o: widgetListView.c $(WIDGET_DEPS)
$(OBJDIR)/widgetProgressBar.o: widgetProgressBar.c $(WIDGET_DEPS)
$(OBJDIR)/widgetRadio.o: widgetRadio.c $(WIDGET_DEPS)
$(OBJDIR)/widgetScrollPane.o: widgetScrollPane.c $(WIDGET_DEPS)
$(OBJDIR)/widgetSeparator.o: widgetSeparator.c $(WIDGET_DEPS)
$(OBJDIR)/widgetSlider.o: widgetSlider.c $(WIDGET_DEPS)
$(OBJDIR)/widgetSpacer.o: widgetSpacer.c $(WIDGET_DEPS)
$(OBJDIR)/widgetSpinner.o: widgetSpinner.c $(WIDGET_DEPS)
$(OBJDIR)/widgetSplitter.o: widgetSplitter.c $(WIDGET_DEPS)
$(OBJDIR)/widgetStatusBar.o: widgetStatusBar.c $(WIDGET_DEPS)
$(OBJDIR)/widgetTabControl.o: widgetTabControl.c $(WIDGET_DEPS)
$(OBJDIR)/widgetTextInput.o: widgetTextInput.c $(WIDGET_DEPS)
$(OBJDIR)/widgetTimer.o: widgetTimer.c $(WIDGET_DEPS)
$(OBJDIR)/widgetToolbar.o: widgetToolbar.c $(WIDGET_DEPS)
$(OBJDIR)/widgetTreeView.o: widgetTreeView.c $(WIDGET_DEPS)
clean:
rm -f $(OBJS) $(WGT_MODS)
-rmdir $(WGTDIR) 2>/dev/null