# ============================================================================ # Makefile for windrv demo - Windows 3.x display driver loader for DJGPP/DOS # # Targets: # all - Build libwindrv.a and demo.exe (default) # lib - Build only libwindrv.a # demo - Build only demo.exe # clean - Remove all build artifacts # # Output: # bin/demo.exe - Demo program # bin/CWSDPMI.EXE - DPMI host (extracted from tools/cwsdpmi.zip) # bin/*.DRV - Driver files (copied from drivers/) # win31drv/libwindrv.a - Static library # ============================================================================ DJGPP_PREFIX ?= $(HOME)/djgpp/djgpp CC = $(DJGPP_PREFIX)/bin/i586-pc-msdosdjgpp-gcc CFLAGS = -Wall -Wextra -O2 -std=gnu99 -Iwin31drv LDFLAGS = -lm # DJGPP binutils need libfl.so.2 which may not be installed system-wide export LD_LIBRARY_PATH := $(realpath tools/lib):$(LD_LIBRARY_PATH) OBJDIR = obj BINDIR = bin LIBDIR = win31drv LIB = $(LIBDIR)/libwindrv.a DEMO_SRC = demo.c DEMO_OBJ = $(OBJDIR)/demo.o DEMO_EXE = $(BINDIR)/demo.exe .PHONY: all clean lib demo all: lib demo lib: $(MAKE) -C $(LIBDIR) demo: $(DEMO_EXE) $(DEMO_EXE): $(DEMO_OBJ) lib | $(BINDIR) $(CC) $(CFLAGS) -o $@ $(DEMO_OBJ) -L$(LIBDIR) -lwindrv $(LDFLAGS) unzip -oj tools/cwsdpmi.zip bin/CWSDPMI.EXE -d $(BINDIR) 2>/dev/null; true cp tools/TEST.BAT $(BINDIR)/ -cp -n drivers/*.DRV $(BINDIR)/ 2>/dev/null; true -cp -n fon/*.FON $(BINDIR)/ 2>/dev/null; true -cp -n ttf/*.TTF $(BINDIR)/ 2>/dev/null; true $(OBJDIR)/%.o: %.c | $(OBJDIR) $(CC) $(CFLAGS) -c -o $@ $< $(OBJDIR): mkdir -p $(OBJDIR) $(BINDIR): mkdir -p $(BINDIR) # Dependencies $(OBJDIR)/demo.o: demo.c win31drv/windrv.h win31drv/wintypes.h clean: $(MAKE) -C $(LIBDIR) clean -rm -rf $(OBJDIR) $(BINDIR)