diff options
-rw-r--r-- | Makefile | 272 | ||||
-rw-r--r-- | source/cpuexec.h | 18 | ||||
-rw-r--r-- | source/getset.h | 16 |
3 files changed, 203 insertions, 103 deletions
@@ -1,123 +1,221 @@ -TARGET_NAME := catsfc - -INCLUDE := -Isource -Isource/unzip -Isource/nds -INCLUDE += -I. +DEBUG = 0 +ifeq ($(platform),) platform = unix +ifeq ($(shell uname -a),) + platform = win +else ifneq ($(findstring Darwin,$(shell uname -a)),) + platform = osx + arch = intel +ifeq ($(shell uname -p),powerpc) + arch = ppc +endif +else ifneq ($(findstring MINGW,$(shell uname -a)),) + platform = win +endif +endif + +# system platform +system_platform = unix +ifeq ($(shell uname -a),) +EXE_EXT = .exe + system_platform = win +else ifneq ($(findstring Darwin,$(shell uname -a)),) + system_platform = osx + arch = intel +ifeq ($(shell uname -p),powerpc) + arch = ppc +endif +else ifneq ($(findstring MINGW,$(shell uname -a)),) + system_platform = win +endif + +TARGET_NAME := catsfc +DEFS := +CFLAGS := ifeq ($(platform), unix) TARGET := $(TARGET_NAME)_libretro.so - fpic := -fPIC - SHARED := -shared -Wl,--version-script=link.T - CROSS := + fpic := -fPIC + SHARED := -shared -Wl,--no-undefined -Wl,--version-script=link.T - CFLAGS := -fno-builtin \ + CFLAGS += -fno-builtin \ -fno-exceptions -ffunction-sections \ -fomit-frame-pointer -fgcse-sm -fgcse-las -fgcse-after-reload \ -fweb -fpeel-loops -# -Wall -Wno-unused-function -Wno-unused-variable - - DEFS := -else - TARGET := $(TARGET_NAME)_libretro_psp1.a - CROSS := psp- - CFLAGS := -G0 -march=allegrex -mno-abicalls -fno-pic -fno-builtin \ - -fno-exceptions -ffunction-sections -mno-long-calls \ - -fomit-frame-pointer -fgcse-sm -fgcse-las -fgcse-after-reload \ - -fweb -fpeel-loops -# -Wall -Wno-unused-function -Wno-unused-variable - -# CFLAGS += -march=allegrex -mfp32 -mgp32 -mlong32 -mabi=eabi -# CFLAGS += -fomit-frame-pointer -fstrict-aliasing -# CFLAGS += -falign-functions=32 -falign-loops -falign-labels -falign-jumps -# CFLAGS += -Wall -Wundef -Wpointer-arith -Wbad-function-cast -Wwrite-strings -Wsign-compare +else ifeq ($(platform), osx) + TARGET := $(TARGET_NAME)_libretro.dylib + fpic := -fPIC + SHARED := -dynamiclib + +ifeq ($(arch),ppc) + FLAGS += -DMSB_FIRST + OLD_GCC = 1 +endif + OSXVER = `sw_vers -productVersion | cut -d. -f 2` + OSX_LT_MAVERICKS = `(( $(OSXVER) <= 9)) && echo "YES"` +ifeq ($(OSX_LT_MAVERICKS),"YES") + fpic += -mmacosx-version-min=10.5 +endif +else ifeq ($(platform), ios) + TARGET := $(TARGET_NAME)_libretro_ios.dylib + fpic := -fPIC + SHARED := -dynamiclib - DEFS := -DPSP -D_PSP_FW_VERSION=371 +ifeq ($(IOSSDK),) + IOSSDK := $(shell xcrun -sdk iphoneos -show-sdk-path) +endif + CC = clang -arch armv7 -isysroot $(IOSSDK) + CXX = clang++ -arch armv7 -isysroot $(IOSSDK) + OSXVER = `sw_vers -productVersion | cut -d. -f 2` + OSX_LT_MAVERICKS = `(( $(OSXVER) <= 9)) && echo "YES"` +ifeq ($(OSX_LT_MAVERICKS),"YES") + SHARED += -miphoneos-version-min=5.0 + CC += -miphoneos-version-min=5.0 + CXX += -miphoneos-version-min=5.0 +endif +else ifeq ($(platform), qnx) + TARGET := $(TARGET_NAME)_libretro_qnx.so + fpic := -fPIC + SHARED := -shared -Wl,--no-undefined -Wl,--version-script=link.T + CC = qcc -Vgcc_ntoarmv7le + CXX = QCC -Vgcc_ntoarmv7le_cpp +else ifeq ($(platform), ps3) + TARGET := $(TARGET_NAME)_libretro_ps3.a + CC = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-gcc.exe + CXX = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-g++.exe + AR = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-ar.exe + STATIC_LINKING = 1 + FLAGS += -DMSB_FIRST + OLD_GCC = 1 +else ifeq ($(platform), sncps3) + TARGET := $(TARGET_NAME)_libretro_ps3.a + CC = $(CELL_SDK)/host-win32/sn/bin/ps3ppusnc.exe + CXX = $(CELL_SDK)/host-win32/sn/bin/ps3ppusnc.exe + AR = $(CELL_SDK)/host-win32/sn/bin/ps3snarl.exe + STATIC_LINKING = 1 + FLAGS += -DMSB_FIRST + NO_GCC = 1 +else ifeq ($(platform), psp1) + TARGET := $(TARGET_NAME)_libretro_psp1.a + CC = psp-gcc$(EXE_EXT) + CXX = psp-g++$(EXE_EXT) + AR = psp-ar$(EXE_EXT) + STATIC_LINKING = 1 + FLAGS += -G0 -DLSB_FIRST + CFLAGS += -march=allegrex -mno-abicalls -fno-pic -fno-builtin \ + -fno-exceptions -ffunction-sections -mno-long-calls \ + -fomit-frame-pointer -fgcse-sm -fgcse-las -fgcse-after-reload \ + -fweb -fpeel-loops + DEFS += -DPSP -D_PSP_FW_VERSION=371 INCLUDE += -I$(shell psp-config --pspsdk-path)/include -# INCLUDE += -I$(shell psp-config --psp-prefix)/include STATIC_LINKING := 1 +else + TARGET := $(TARGET_NAME)_libretro.dll + CC = gcc + CXX = g++ + SHARED := -shared -Wl,--no-undefined -Wl,--version-script=link.T + LDFLAGS += -static-libgcc -static-libstdc++ -lwinmm endif -# - - - Tools - - - -CC = $(CROSS)gcc -AR = $(CROSS)ar -LD = $(CROSS)ld -OBJCOPY = $(CROSS)objcopy -NM = $(CROSS)nm -OBJDUMP = $(CROSS)objdump - -#C_SOURCES = libretro.c -C_SOURCES = source/apu.c source/c4.c \ - source/c4emu.c source/cheats2.c source/cheats.c \ - source/clip.c source/cpu.c source/cpuexec.c \ - source/cpuops.c source/data.c\ - source/dma.c source/dsp1.c \ - source/fxdbg.c source/fxemu.c source/fxinst.c \ - source/gfx.c source/globals.c \ - source/memmap.c \ - source/obc1.c source/ppu.c \ - source/sa1.c source/sa1cpu.c source/screenshot.c \ - source/sdd1.c source/sdd1emu.c \ - source/seta010.c source/seta011.c source/seta018.c \ - source/seta.c source/snaporig.c source/snapshot.c \ - source/soundux.c \ - source/spc700.c source/spc7110.c \ - source/srtc.c \ - source/tile.c \ - libretro.c - -CPP_SOURCES = - -SOURCES = $(C_SOURCES) $(CPP_SOURCES) -C_OBJECTS = $(C_SOURCES:.c=.o) -CPP_OBJECTS = $(CPP_SOURCES:.cpp=.o) -OBJECTS = $(C_OBJECTS) $(CPP_OBJECTS) - -# - - - Compilation flags - - - - DEFS += -DSPC700_C -DEXECUTE_SUPERFX_PER_LINE -DSDD1_DECOMP \ -DVAR_CYCLES -DCPU_SHUTDOWN -DSPC700_SHUTDOWN \ -DNO_INLINE_SET_GET -DNOASM -DHAVE_MKSTEMP '-DACCEPT_SIZE_T=size_t' -ifeq ($(DEBUG), 1) -OPTIMIZE := -O0 -g -OPTIMIZE_SAFE := -O0 -g +DEFS += -D__LIBRETRO__ + +CATSFC_DIR := libfreedo + +CATSFC_SOURCES := source/apu.c source/c4.c \ + source/c4emu.c \ + source/cheats2.c \ + source/cheats.c \ + source/clip.c \ + source/cpu.c \ + source/cpuexec.c \ + source/cpuops.c \ + source/data.c\ + source/dma.c \ + source/dsp1.c \ + source/fxdbg.c \ + source/fxemu.c \ + source/fxinst.c \ + source/gfx.c source/globals.c \ + source/memmap.c \ + source/obc1.c \ + source/ppu.c \ + source/sa1.c \ + source/sa1cpu.c \ + source/screenshot.c \ + source/sdd1.c \ + source/sdd1emu.c \ + source/seta010.c \ + source/seta011.c \ + source/seta018.c \ + source/seta.c \ + source/snaporig.c \ + source/snapshot.c \ + source/soundux.c \ + source/spc700.c source/spc7110.c \ + source/srtc.c \ + source/tile.c + + +LIBRETRO_SOURCES := libretro.c + +SOURCES_C := $(LIBRETRO_SOURCES) $(CATSFC_SOURCES) + +SOURCES_CPP := +OBJECTS := $(SOURCES_C:.c=.o) +#OBJECTS += $(SOURCES_CPP:.cpp=.o) + +all: $(TARGET) + +ifeq ($(DEBUG),1) +FLAGS += -O0 -g else -OPTIMIZE := -O3 -OPTIMIZE_SAFE := -O2 +FLAGS += -O3 -DNDEBUG endif +LDFLAGS += $(fpic) -lz $(SHARED) +FLAGS += $(fpic) +FLAGS += -Isource -I. -DEFS += -D__LIBRETRO__ +ifeq ($(OLD_GCC), 1) +WARNINGS := -Wall +else ifeq ($(NO_GCC), 1) +WARNINGS := +else +WARNINGS := -Wall \ + -Wno-sign-compare \ + -Wno-unused-variable \ + -Wno-unused-function \ + -Wno-uninitialized \ + -Wno-strict-aliasing \ + -Wno-overflow \ + -fno-strict-overflow +endif -CFLAGS += $(fpic) +FLAGS += -D__LIBRETRO__ $(WARNINGS) -all: $(TARGET) +CXXFLAGS += $(FLAGS) +CFLAGS += $(FLAGS) $(TARGET): $(OBJECTS) ifeq ($(STATIC_LINKING), 1) $(AR) rcs $@ $(OBJECTS) else - $(CC) $(fpic) $(SHARED) $(INCLUDES) $(LDFLAGS) -o $@ $(OBJECTS) $(LIBM) + $(CXX) -o $@ $^ $(LDFLAGS) endif -clean: - rm -f $(OBJECTS) - rm -f depend - rm -f $(TARGET) - -.c.o: - $(CC) $(OPTIMIZE) $(CFLAGS) $(INCLUDE) $(DEFS) -o $@ -c $< -.cpp.o: - $(CC) $(OPTIMIZE) $(CFLAGS) $(INCLUDE) $(DEFS) -fno-rtti -o $@ -c $< +%.o: %.cpp + $(CXX) -c -o $@ $< $(CXXFLAGS) -Makefile: depend +%.o: %.c + $(CC) -c -o $@ $< $(CFLAGS) -depend: $(SOURCES) - $(CC) -MM $(CFLAGS) $(INCLUDE) $(DEFS) $(SOURCES) > $@ - touch Makefile +clean: + rm -f $(TARGET) $(OBJECTS) .PHONY: clean - --include depend diff --git a/source/cpuexec.h b/source/cpuexec.h index 3eb6064..ca5eb4f 100644 --- a/source/cpuexec.h +++ b/source/cpuexec.h @@ -89,6 +89,16 @@ #ifndef _CPUEXEC_H_ #define _CPUEXEC_H_ + +typedef struct +{ +#ifdef __WIN32__ + void (__cdecl* S9xOpcode)(void); +#else + void (*S9xOpcode)(void); +#endif +} SOpcodes; + #include "ppu.h" #include "memmap.h" #include "65c816.h" @@ -101,14 +111,6 @@ if (CPU.Cycles >= CPU.NextEvent) \ S9xDoHBlankProcessing_NoSFX (); -typedef struct -{ -#ifdef __WIN32__ - void (__cdecl* S9xOpcode)(void); -#else - void (*S9xOpcode)(void); -#endif -} SOpcodes; typedef struct { diff --git a/source/getset.h b/source/getset.h index 558ed98..05247c9 100644 --- a/source/getset.h +++ b/source/getset.h @@ -100,7 +100,7 @@ extern uint8 OpenBus; -uint8 S9xGetByte(uint32 Address) +static inline uint8 S9xGetByte(uint32 Address) { int block; uint8* GetAddress = Memory.Map [block = (Address >> MEMMAP_SHIFT) & @@ -183,7 +183,7 @@ uint8 S9xGetByte(uint32 Address) } } -uint16 S9xGetWord(uint32 Address) +static inline uint16 S9xGetWord(uint32 Address) { if ((Address & 0x0fff) == 0x0fff) { @@ -296,7 +296,7 @@ uint16 S9xGetWord(uint32 Address) } } -void S9xSetByte(uint8 Byte, uint32 Address) +static inline void S9xSetByte(uint8 Byte, uint32 Address) { #if defined(CPU_SHUTDOWN) CPU.WaitAddress = NULL; @@ -405,7 +405,7 @@ void S9xSetByte(uint8 Byte, uint32 Address) } } -void S9xSetWord(uint16 Word, uint32 Address) +static inline void S9xSetWord(uint16 Word, uint32 Address) { if ((Address & 0x0FFF) == 0x0FFF) { @@ -557,7 +557,7 @@ void S9xSetWord(uint16 Word, uint32 Address) } } -uint8* GetBasePointer(uint32 Address) +static inline uint8* GetBasePointer(uint32 Address) { uint8* GetAddress = Memory.Map [(Address >> MEMMAP_SHIFT) & MEMMAP_MASK]; if (GetAddress >= (uint8*) MAP_LAST) @@ -609,7 +609,7 @@ uint8* GetBasePointer(uint32 Address) } } -uint8* S9xGetMemPointer(uint32 Address) +static inline uint8* S9xGetMemPointer(uint32 Address) { uint8* GetAddress = Memory.Map [(Address >> MEMMAP_SHIFT) & MEMMAP_MASK]; if (GetAddress >= (uint8*) MAP_LAST) @@ -654,7 +654,7 @@ uint8* S9xGetMemPointer(uint32 Address) } } -void S9xSetPCBase(uint32 Address) +static inline void S9xSetPCBase(uint32 Address) { int block; uint8* GetAddress = Memory.Map [block = (Address >> MEMMAP_SHIFT) & @@ -716,5 +716,5 @@ void S9xSetPCBase(uint32 Address) return; } } -#endif +#endif |