1#
2# Makefile for modified UAE 68000 CPU core
3#
4# by James Hammons
5# (C) 2011 Underground Software
6#
7# This makefile is released under the GPLv3 or later
8#
9
10# Cross compilation using MXE
11#CROSS = i686-pc-mingw32-
12
13CC      := $(CROSS)gcc
14LD      := $(CROSS)gcc
15AR      := $(CROSS)ar
16HOSTCC  := gcc
17
18ARFLAGS := -rs
19GCC_DEPS = -MMD
20INCS    := -I. -I./obj `$(CROSS)sdl-config --cflags`
21
22OBJS = \
23	obj/cpustbl.o \
24	obj/cpudefs.o \
25	obj/cpuemu.o \
26	obj/cpuextra.o \
27	obj/readcpu.o \
28	obj/m68kinterface.o \
29	obj/m68kdasm.o
30
31# Targets for convenience sake, not "real" targets
32.PHONY: clean
33
34all: obj obj/libm68k.a
35	@echo "Done!"
36
37# Library rules (might not be cross-platform compatible)
38obj/libm68k.a: $(OBJS)
39	@$(AR) $(ARFLAGS) obj/libm68k.a $(OBJS)
40
41obj:
42	@mkdir ./obj
43
44# Main source compilation (implicit rules)...
45
46obj/%.o: %.c
47	@echo -e "\033[01;33m***\033[00;32m Compiling $<...\033[00m"
48	@$(CC) $(GCC_DEPS) $(CFLAGS) $(INCS) -c $< -o $@
49
50obj/%.o: obj/%.c
51	@echo -e "\033[01;33m***\033[00;32m Compiling $<...\033[00m"
52	@$(CC) $(GCC_DEPS) $(CFLAGS) $(INCS) -c $< -o $@
53
54# Generated code
55
56obj/cpuemu.c: obj/gencpu
57obj/cpustbl.c: obj/gencpu
58	@echo -e "\033[01;33m***\033[00;32m Generating cpuemu.c...\033[00m"
59	@cd obj && ./gencpu
60
61obj/gencpu: obj/cpudefs.c
62	@echo -e "\033[01;33m***\033[00;32m Generating gencpu...\033[00m"
63	@$(HOSTCC) $(GCC_DEPS) $(CFLAGS) gencpu.c readcpu.c obj/cpudefs.c -o obj/gencpu -I. -I./obj
64
65obj/cpudefs.c: obj/build68k
66	@echo -e "\033[01;33m***\033[00;32m Generating cpudefs.c...\033[00m"
67	@obj/build68k < table68k > obj/cpudefs.c
68
69obj/build68k: build68k.c
70	@echo -e "\033[01;33m***\033[00;32m Compiling build68k.c...\033[00m"
71	@$(HOSTCC) $(GCC_DEPS) $(CFLAGS) build68k.c -o obj/build68k
72
73clean:
74	@echo -ne "\033[01;33m***\033[00;32m Cleaning out the garbage...\033[00m"
75	@-rm -rf ./obj
76	@echo "done!"
77
78# Pull in dependencies autogenerated by gcc's -MMD switch
79# The "-" in front is there just in case they haven't been created yet
80
81-include obj/*.d
82