# Cooperative Task Switching Library Makefile for DJGPP cross-compilation DJGPP_PREFIX = $(HOME)/djgpp/djgpp DJGPP_LIBPATH = $(HOME)/claude/windriver/tools/lib CC = $(DJGPP_PREFIX)/bin/i586-pc-msdosdjgpp-gcc AR = LD_LIBRARY_PATH=$(DJGPP_LIBPATH) $(DJGPP_PREFIX)/bin/i586-pc-msdosdjgpp-ar RANLIB = LD_LIBRARY_PATH=$(DJGPP_LIBPATH) $(DJGPP_PREFIX)/bin/i586-pc-msdosdjgpp-ranlib EXE2COFF = $(DJGPP_PREFIX)/i586-pc-msdosdjgpp/bin/exe2coff CWSDSTUB = $(DJGPP_PREFIX)/i586-pc-msdosdjgpp/bin/CWSDSTUB.EXE CFLAGS = -O2 -Wall -Wextra -march=i486 -mtune=i586 OBJDIR = ../obj/tasks LIBDIR = ../lib BINDIR = ../bin SRCS = taskswitch.c OBJS = $(patsubst %.c,$(OBJDIR)/%.o,$(SRCS)) TARGET = $(LIBDIR)/libtasks.a DEMO_SRCS = demo.c DEMO_OBJS = $(patsubst %.c,$(OBJDIR)/%.o,$(DEMO_SRCS)) DEMO_TARGET = $(BINDIR)/tsdemo.exe .PHONY: all clean all: $(TARGET) demo: $(DEMO_TARGET) $(TARGET): $(OBJS) | $(LIBDIR) $(AR) rcs $@ $(OBJS) $(RANLIB) $@ $(DEMO_TARGET): $(DEMO_OBJS) $(TARGET) | $(BINDIR) $(CC) $(CFLAGS) -o $@ $(DEMO_OBJS) -L$(LIBDIR) -ltasks $(EXE2COFF) $@ cat $(CWSDSTUB) $(BINDIR)/tsdemo > $@ rm -f $(BINDIR)/tsdemo $(OBJDIR)/%.o: %.c | $(OBJDIR) $(CC) $(CFLAGS) -c -o $@ $< $(OBJDIR): mkdir -p $(OBJDIR) $(LIBDIR): mkdir -p $(LIBDIR) $(BINDIR): mkdir -p $(BINDIR) # Dependencies $(OBJDIR)/taskswitch.o: taskswitch.c taskswitch.h thirdparty/stb_ds.h $(OBJDIR)/demo.o: demo.c taskswitch.h clean: rm -f $(OBJS) $(DEMO_OBJS) $(TARGET) $(DEMO_TARGET)