###############################################################################
# TinyPTC DOS version Makefile                                                #
###############################################################################
# Author: Peter Korsgaard (jacmet@kom.auc.dk)                                 #
# Notes: Use GNU make!                                                        #
# Last modified: 05-05-0 05:05                                                #
###############################################################################

INCLUDEDIR = ../include/
INCLUDEDIRDOS = $(subst /,\,$(INCLUDEDIR))

# Where to find library files (.a)
LIBDIR = ../lib/
LIBDIRDOS = $(subst /,\,$(LIBDIR))

# compiler
CC = gcc

# compiler
CPP = gxx

# assembler for .s files
AS = as 

# assembler for .asm files
ASM = nasmw

# linker
LD = ld 

# archiver (for librarys)
AR = ar

CFLAGS =  -m486 -O3 -Wall -I$(INCLUDEDIR) -s -fexpensive-optimizations -fomit-frame-pointer -funroll-loops -ffast-math -fstrength-reduce -fpeephole -fthread-jumps -frerun-cse-after-loop -fschedule-insns -fschedule-insns2

ASMFLAGS = -f coff -w+orphan-labels

# C Source files
C_SRCS = tiny_dos.c test.c

# CPP Source files
CPP_SRCS = 

# ASM Source files
ASM_SRCS = tiny_gfx.asm

# GAS Source files
GAS_SRCS =

# Header files
HEADERS = tinyptc.h tiny_gfx.h

# Source files
SRCS := $(C_SRCS) $(CPP_SRCS) $(ASM_SRCS) $(GAS_SRCS)

# Object files
OBJS := $(C_SRCS:.c=.o) $(CPP_SRCS:.cpp=.o) $(ASM_SRCS:.asm=.o) $(GAS_SRCS:.s=.o)

HEADERS := $(addprefix $(INCLUDEDIR),$(HEADERS))

dosptc.exe: $(OBJS)
	$(CC) -o dosptc.exe $(OBJS)

clean:
	$(W)del /E /Q *.o

depend:
	$(W)$(CC) $(CFLAGS) -MM $(C_SRCS) $(CPP_SRCS) $(GAS_SRCS) >> makefile
	$(W)for %X in ($(ASM_SRCS)) do $(W)$(ASM) $(ASMFLAGS) -M %X >> makefile
# for commando requires 4DOS!
	
	
%.o: %.c
	$(CC) -c $< $(CFLAGS)

%.o: %.cpp
	$(CPP) -c $< $(CPPFLAGS)

%.o: %.s
	$(CC) -c $< $(CFLAGS)

%.o: %.asm
	$(ASM) $< $(ASMFLAGS)

%.a: $(OBJS)
	$(W)$(AR) $(AFLAGS) $@ $(OBJS)