aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile272
-rw-r--r--source/cpuexec.h18
-rw-r--r--source/getset.h16
3 files changed, 203 insertions, 103 deletions
diff --git a/Makefile b/Makefile
index c872761..659aaa2 100644
--- a/Makefile
+++ b/Makefile
@@ -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