]> Shamusworld >> Repos - virtualjaguar/blob - musashi.mak
Virtual Jaguar 2.0.0 release.
[virtualjaguar] / musashi.mak
1 #
2 # Makefile for Musashi Portable 68000 Emulator
3 #
4 # by James L. Hammons
5 #
6 # This makefile is licensed under the GPL v3 or any later version. See the
7 # file GPLv3 for details. ;-)
8 #
9
10 CC         := gcc
11 LD         := gcc
12 AR         := ar
13 ARFLAGS    := -rs
14
15 # Note that we use optimization level 2 instead of 3--3 doesn't seem to gain much over 2
16 CFLAGS   := -MMD -O2 -ffast-math -fomit-frame-pointer
17
18 OBJS := \
19         obj/m68kcpu.o  \
20         obj/m68kops.o  \
21         obj/m68kopac.o \
22         obj/m68kopdm.o \
23         obj/m68kopnz.o \
24         obj/m68kdasm.o
25
26 # Targets for convenience sake, not "real" targets
27 .PHONY: clean
28
29 all: obj obj/libmusashi.a
30         @echo "Done!"
31
32 obj:
33         @mkdir obj
34
35 # Library rules (might not be cross-platform compatible)
36 obj/libmusashi.a: $(OBJS) 
37         @$(AR) $(ARFLAGS) obj/libmusashi.a $(OBJS)
38
39 # Main source compilation (implicit rules)...
40
41 obj/%.o: src/%.c
42         @echo -e "\033[01;33m***\033[00;32m Compiling $<...\033[00m"
43         @$(CC) $(CFLAGS) $(INCS) -c $< -o $@
44
45 #
46 # Musashi specific stuffola
47 #
48
49 obj/m68kmake: src/m68kmake.c src/m68k_in.c
50         @echo -e "\033[01;33m***\033[00;32m Preparing to make the Musashi core...\033[00m"
51         @$(CC) $(WARNINGS) src/m68kmake.c -o obj/m68kmake
52
53 obj/m68kops.h obj/m68kops.c obj/m68kopac.c obj/m68kopdm.c obj/m68kopnz.c: obj/m68kmake
54         @echo -e "\033[01;33m***\033[00;32m Creating m68kops.h...\033[00m"
55         @obj/m68kmake obj src/m68k_in.c
56
57 obj/m68kcpu.o: obj/m68kops.h src/m68k.h src/m68kconf.h
58         @echo -e "\033[01;33m***\033[00;32m Compiling m68kcpu.c...\033[00m"
59         @$(CC) $(CFLAGS) -Iobj -c src/m68kcpu.c -o obj/m68kcpu.o
60
61 obj/m68kop%.o: obj/m68kop%.c
62         @echo -e "\033[01;33m***\033[00;32m Compiling $<...\033[00m"
63         @$(CC) $(CFLAGS) -Isrc -c $< -o $@
64
65 # Pull in dependencies autogenerated by gcc's -MMD switch
66 # The "-" in front is there just in case they haven't been created yet
67
68 -include obj/*.d