From: Shamus Hammons Date: Fri, 19 Mar 2004 23:32:12 +0000 (+0000) Subject: New unified makefile architecture X-Git-Tag: 1.0.7~66 X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=287f2fa2ff95d828e400294f10ca215314960e72;p=virtualjaguar New unified makefile architecture --- diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..b2cffba --- /dev/null +++ b/Makefile @@ -0,0 +1,114 @@ +# +# Unified Makefile for Virtual Jaguar GCC/SDL Portable Jaguar Emulator +# +# Note that SYSTYPE, EXESUFFIX, GLLIB, ICON, and SDLLIBTYPE are passed in by the +# script called "compile". The unified makefile should make life a little +# easier for the maintainers. :-) +# + +CC = gcc +LD = gcc +TARGET = vj + +#Why substitute strcasecmp for stricmp? Isn't stricmp standard? +#CFLAGS = -Wall -Wno-switch -Wno-non-virtual-dtor -O2 -D$(SYSTYPE) -Dstricmp="strcasecmp" +CFLAGS = -Wall -Wno-switch -Wno-non-virtual-dtor -O2 -D$(SYSTYPE) \ + -fomit-frame-pointer `sdl-config --cflags` +# -fomit-frame-pointer `sdl-config --cflags` -g +# -fomit-frame-pointer `sdl-config --cflags` -DLOG_UNMAPPED_MEMORY_ACCESSES + +#Why? Seems like it's wrong... +#LDFLAGS = $(CFLAGS) +LDFLAGS = + +#LIBS = -L/usr/local/lib -L/usr/lib `sdl-config --libs` -lstdc++ -lz $(GLLIB) +LIBS = -L/usr/local/lib -L/usr/lib `sdl-config $(SDLLIBTYPE)` -lstdc++ -lz $(GLLIB) + +INCS = -I. -Isrc -Isrc/include -I/usr/local/include -I/usr/include + +THECC = $(CC) $(CFLAGS) $(INCS) + +OBJS = \ + obj/anajoy.o \ + obj/blitter.o \ + obj/cdbios.o \ + obj/cdi.o \ + obj/cdrom.o \ + obj/clock.o \ + obj/crc32.o \ + obj/dac.o \ + obj/dsp.o \ + obj/eeprom.o \ + obj/gpu.o \ + obj/gui.o \ + obj/jagdasm.o \ + obj/jaguar.o \ + obj/jerry.o \ + obj/joystick.o \ + obj/log.o \ + obj/m68kcpu.o obj/m68kops.o obj/m68kopac.o obj/m68kopdm.o obj/m68kopnz.o \ + obj/m68kdasm.o \ + obj/memory.o \ + obj/objectp.o \ + obj/sdlemu_config.o \ + obj/sdlemu_opengl.o \ + obj/settings.o \ + obj/tom.o \ + obj/unzip.o \ + obj/version.o \ + obj/video.o \ + obj/vj.o \ + $(ICON) + +all: obj $(TARGET) + +clean: + rm -rf obj + rm -f ./vj$(EXESUFFIX) + +obj: + mkdir obj + +obj/%.o: src/%.c + $(THECC) -c $< -o $@ + +obj/%.o: src/%.cpp + $(THECC) -c $< -o $@ + +vj: $(OBJS) + $(LD) $(LDFLAGS) -o $@ $(OBJS) $(LIBS) +# strip --strip-all vj$(EXESUFFIX) +# upx -9 vj$(EXESUFFIX) + +# Other stuff that has unusual dependencies + +obj/gui.o: src/gui.cpp src/include/gui.h src/include/font1.h + $(THECC) -c src/gui.cpp -o obj/gui.o + +# +# Musashi specific stuffola +# + +obj/m68kcpu.o: obj/m68kops.h src/m68k.h src/m68kconf.h + $(CC) $(CFLAGS) -Iobj -c src/m68kcpu.c -o obj/m68kcpu.o + +obj/m68kops.o: obj/m68kmake$(EXESUFFIX) obj/m68kops.h obj/m68kops.c src/m68k.h src/m68kconf.h + $(CC) $(CFLAGS) -Isrc -c obj/m68kops.c -o obj/m68kops.o + +obj/m68kopac.o: obj/m68kmake$(EXESUFFIX) obj/m68kops.h obj/m68kopac.c src/m68k.h src/m68kconf.h + $(CC) $(CFLAGS) -Isrc -c obj/m68kopac.c -o obj/m68kopac.o + +obj/m68kopdm.o: obj/m68kmake$(EXESUFFIX) obj/m68kops.h obj/m68kopdm.c src/m68k.h src/m68kconf.h + $(CC) $(CFLAGS) -Isrc -c obj/m68kopdm.c -o obj/m68kopdm.o + +obj/m68kopnz.o: obj/m68kmake$(EXESUFFIX) obj/m68kops.h obj/m68kopnz.c src/m68k.h src/m68kconf.h + $(CC) $(CFLAGS) -Isrc -c obj/m68kopnz.c -o obj/m68kopnz.o + +obj/m68kdasm.o: src/m68kdasm.c src/m68k.h src/m68kconf.h + $(CC) $(CFLAGS) -Isrc -c src/m68kdasm.c -o obj/m68kdasm.o + +obj/m68kops.h: obj/m68kmake$(EXESUFFIX) + obj/m68kmake obj src/m68k_in.c + +obj/m68kmake$(EXESUFFIX): src/m68kmake.c src/m68k_in.c + $(CC) $(WARNINGS) src/m68kmake.c -o obj/m68kmake$(EXESUFFIX) diff --git a/compile b/compile new file mode 100644 index 0000000..b9d9bcb --- /dev/null +++ b/compile @@ -0,0 +1,60 @@ +#!/bin/sh + +# +# Compile script for Virtual Jaguar GCC/SDL Portable Jaguar Emulator +# This obviates the need for separate Makefiles for every OS architecture +# under the sun... +# +# by James L. Hammons +# +# If you have any parameters that you want to pass through to make, then +# simply add them to the 'compile' command line as if 'compile' were make. +# + +echo +echo -n "*** Compiling Virtual Jaguar for " + +# Check the OS type... + +if [ "$OSTYPE" = "msys" ]; then + + echo -n Win32 on MinGW + + SYSTYPE=__GCCWIN32__ + EXESUFFIX=.exe + GLLIB=-lopengl32 + ICON=vj-ico.o + SDLLIBTYPE=--libs +#This doesn't seem to make a difference on Win32... +# SDLLIBTYPE=--static-libs + +elif [ "$OSTYPE" = "macosx" ]; then + + echo -n Mac OS X + + SYSTYPE=__GCCUNIX__ -D_OSX_ + EXESUFFIX= + GLLIB= + ICON= + SDLLIBTYPE=--static-libs + +else # *nix + + echo -n generic Unix/Linux + + SYSTYPE=__GCCUNIX__ + EXESUFFIX= + GLLIB=-lGL + ICON= + SDLLIBTYPE=--libs + +fi + +echo ... +echo + +export SYSTYPE EXESUFFIX GLLIB ICON SDLLIBTYPE + +# Yes, you can pass through parameters to make... + +make $@