aboutsummaryrefslogtreecommitdiff
path: root/Makefile
blob: 43af1882f94bbbb14c15dda6e3a49acda049eb15 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
TARGET_NAME   := catsfc

INCLUDE     := -Isource -Isource/unzip -Isource/nds
INCLUDE     += -I.

platform = unix

ifeq ($(platform), unix)
   TARGET := $(TARGET_NAME)_libretro.so
   fpic   := -fPIC
   SHARED := -shared -Wl,--version-script=link.T
   CROSS  :=

   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

   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
endif

# - - - Tools - - -
CC           = $(CROSS)gcc
AR           = $(CROSS)ar
LD           = $(CROSS)ld
OBJCOPY      = $(CROSS)objcopy
NM           = $(CROSS)nm
OBJDUMP      = $(CROSS)objdump

#C_SOURCES   = libretro.c
CPP_SOURCES = source/apu.cpp source/c4.cpp \
              source/c4emu.cpp source/cheats2.cpp source/cheats.cpp \
              source/clip.cpp source/cpu.cpp source/cpuexec.cpp \
              source/cpuops.cpp source/data.cpp\
              source/dma.cpp source/dsp1.cpp \
              source/fxdbg.cpp source/fxemu.cpp source/fxinst.cpp \
              source/gfx.cpp source/globals.cpp source/loadzip.cpp \
              source/memmap.cpp \
              source/obc1.cpp source/ppu.cpp \
              source/sa1.cpp source/sa1cpu.cpp source/screenshot.cpp \
              source/sdd1.cpp source/sdd1emu.cpp \
              source/seta010.cpp source/seta011.cpp source/seta018.cpp \
              source/seta.cpp source/snaporig.cpp source/snapshot.cpp \
              source/soundux.cpp \
              source/spc700.cpp source/spc7110.cpp \
              source/srtc.cpp \
              source/tile.cpp \
              libretro.cpp

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' \
          -DFOREVER_16_BIT_SOUND -DFOREVER_STEREO

ifeq ($(DEBUG), 1)
OPTIMIZE	      := -O0 -g
OPTIMIZE_SAFE  := -O0 -g
else
OPTIMIZE	      := -O3
OPTIMIZE_SAFE  := -O2
endif


DEFS  += -D__LIBRETRO__

CFLAGS += $(fpic)

all: $(TARGET)

$(TARGET): $(OBJECTS)
ifeq ($(STATIC_LINKING), 1)
	$(AR) rcs $@ $(OBJECTS)
else
	$(CC) $(fpic) $(SHARED) $(INCLUDES) $(LDFLAGS) -o $@ $(OBJECTS) $(LIBM)
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 $<

Makefile: depend

depend: $(SOURCES)
	$(CC) -MM $(CFLAGS) $(INCLUDE) $(DEFS) $(SOURCES) > $@
	touch Makefile

.PHONY: clean

-include depend