# # Makefile for Musashi Portable 68000 Emulator # # by James L. Hammons # # This software is licensed under the GPL v3 or any later version. See the # file GPLv3 for details. ;-) # CC := gcc LD := gcc AR := ar ARFLAGS := -rs # Note that we use optimization level 2 instead of 3--3 doesn't seem to gain much over 2 CFLAGS := -MMD -O2 -ffast-math -fomit-frame-pointer OBJS := \ obj/m68kcpu.o \ obj/m68kops.o \ obj/m68kopac.o \ obj/m68kopdm.o \ obj/m68kopnz.o \ obj/m68kdasm.o # Targets for convenience sake, not "real" targets .PHONY: clean all: obj obj/libmusashi.a @echo "Done!" obj: @mkdir obj # Library rules (might not be cross-platform compatible) obj/libmusashi.a: $(OBJS) @$(AR) $(ARFLAGS) obj/libmusashi.a $(OBJS) # Main source compilation (implicit rules)... obj/%.o: src/%.c @echo -e "\033[01;33m***\033[00;32m Compiling $<...\033[00m" @$(CC) $(CFLAGS) $(INCS) -c $< -o $@ # # Musashi specific stuffola # obj/m68kmake: src/m68kmake.c src/m68k_in.c @echo -e "\033[01;33m***\033[00;32m Preparing to make the Musashi core...\033[00m" @$(CC) $(WARNINGS) src/m68kmake.c -o obj/m68kmake obj/m68kops.h obj/m68kops.c obj/m68kopac.c obj/m68kopdm.c obj/m68kopnz.c: obj/m68kmake @echo -e "\033[01;33m***\033[00;32m Creating m68kops.h...\033[00m" @obj/m68kmake obj src/m68k_in.c obj/m68kcpu.o: obj/m68kops.h src/m68k.h src/m68kconf.h @echo -e "\033[01;33m***\033[00;32m Compiling m68kcpu.c...\033[00m" @$(CC) $(CFLAGS) -Iobj -c src/m68kcpu.c -o obj/m68kcpu.o obj/m68kop%.o: obj/m68kop%.c @echo -e "\033[01;33m***\033[00;32m Compiling $<...\033[00m" @$(CC) $(CFLAGS) -Isrc -c $< -o $@ # Pull in dependencies autogenerated by gcc's -MMD switch # The "-" in front is there just in case they haven't been created yet -include obj/*.d