ebf5d988b3ca00d17191967512175dcbb1e38df7
[mupen64plus-pandora.git] / source / gles2n64 / Makefile
1 PIC ?= 1
2 NO_ASM := 1
3 CFLAGS += -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -mtune=cortex-a8 -fsigned-char -DNO_ASM -DPAULSCODE -Ofast -ffast-math -fno-strict-aliasing
4 CFLAGS += -I ../mupen64plus-core/src/api/
5 CFLAGS += `sdl-config --cflags`
6
7 SHARED = -shared
8 SRCDIR := src
9
10 MODULE := gles2n64
11 SHARED_LIBRARIES := SDL core
12 ARM_MODE := arm
13
14 C_INCLUDES :=         \
15     $(M64P_API_INCLUDES)    \
16     $(SDL_INCLUDES)         \
17
18 SOURCE :=                  \
19     $(SRCDIR)/2xSAI.cpp             \
20     $(SRCDIR)/3DMath.cpp            \
21     $(SRCDIR)/Config.cpp            \
22     $(SRCDIR)/CRC.cpp               \
23     $(SRCDIR)/DepthBuffer.cpp       \
24     $(SRCDIR)/F3D.cpp               \
25     $(SRCDIR)/F3DCBFD.cpp           \
26     $(SRCDIR)/F3DDKR.cpp            \
27     $(SRCDIR)/F3DEX.cpp             \
28     $(SRCDIR)/F3DEX2.cpp            \
29     $(SRCDIR)/F3DPD.cpp             \
30     $(SRCDIR)/F3DWRUS.cpp           \
31     $(SRCDIR)/FrameSkipper.cpp      \
32     $(SRCDIR)/GBI.cpp               \
33     $(SRCDIR)/gDP.cpp               \
34     $(SRCDIR)/gles2N64.cpp          \
35     $(SRCDIR)/gSP.cpp               \
36     $(SRCDIR)/L3D.cpp               \
37     $(SRCDIR)/L3DEX.cpp             \
38     $(SRCDIR)/L3DEX2.cpp            \
39     $(SRCDIR)/N64.cpp               \
40     $(SRCDIR)/OpenGL.cpp            \
41     $(SRCDIR)/RDP.cpp               \
42     $(SRCDIR)/RSP.cpp               \
43     $(SRCDIR)/S2DEX.cpp             \
44     $(SRCDIR)/S2DEX2.cpp            \
45     $(SRCDIR)/ShaderCombiner.cpp    \
46     $(SRCDIR)/Textures.cpp          \
47     $(SRCDIR)/ticks.c               \
48     $(SRCDIR)/VI.cpp                \
49         $(SRCDIR)/eglport.cpp                   \
50
51 CFLAGS +=         \
52     $(COMMON_CFLAGS)    \
53     -D__CRC_OPT         \
54     -D__HASHMAP_OPT     \
55     -D__TRIBUFFER_OPT   \
56     -D__VEC4_OPT        \
57     -DUSE_SDL           \
58     -fsigned-char       \
59     #-DSDL_NO_COMPAT     \
60     
61 ifeq ($(PIC), 1)
62   CFLAGS += -fPIC
63 else
64   CFLAGS += -fno-PIC
65 endif
66
67 CPPFLAGS := $(CPPFLAGS)
68     
69 LDLIBS :=         \
70     -lGLESv2            \
71         -lEGL                   \
72         -lrt                    \
73
74 # Use for ARM7a:
75 SOURCE += $(SRCDIR)/gSPNeon.cpp
76 SOURCE += $(SRCDIR)/3DMathNeon.cpp
77 CFLAGS += -DARM_ASM
78 CFLAGS += -D__NEON_OPT
79
80 LDFLAGS += $(SHARED)
81
82 include $(BUILD_SHARED_LIBRARY)
83
84 # set base program pointers and flags
85 CC        = $(CROSS_COMPILE)gcc
86 CXX       = $(CROSS_COMPILE)g++
87 RM       ?= rm -f
88 INSTALL  ?= install
89 MKDIR ?= mkdir -p
90 COMPILE.c = $(Q_CC)$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -gdwarf-2 -flto -fuse-linker-plugin -c
91 COMPILE.cc = $(Q_CXX)$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -gdwarf-2 -flto -fuse-linker-plugin -c
92 LINK.o = $(Q_LD)$(CXX) $(CXXFLAGS) $(LDFLAGS) $(TARGET_ARCH) -gdwarf-2 -flto -fuse-linker-plugin
93
94 # set installation options
95 ifeq ($(PREFIX),)
96   PREFIX := /usr/local
97 endif
98 ifeq ($(SHAREDIR),)
99   SHAREDIR := $(PREFIX)/share/mupen64plus
100 endif
101 ifeq ($(LIBDIR),)
102   LIBDIR := $(PREFIX)/lib
103 endif
104 ifeq ($(PLUGINDIR),)
105   PLUGINDIR := $(LIBDIR)/mupen64plus
106 endif
107
108 OBJDIR = _obj$(POSTFIX)
109
110 # generate a list of object files build, make a temporary directory for them
111 OBJECTS := $(patsubst $(SRCDIR)/%.c, $(OBJDIR)/%.o, $(filter %.c, $(SOURCE)))
112 OBJECTS += $(patsubst $(SRCDIR)/%.cpp, $(OBJDIR)/%.o, $(filter %.cpp, $(SOURCE)))
113 OBJDIRS = $(dir $(OBJECTS))
114 $(shell $(MKDIR) $(OBJDIRS))
115
116 # build targets
117 TARGET = mupen64plus-video-gles2n64.so
118
119 targets:
120         @echo "Mupen64plus-video-rice N64 Graphics plugin makefile. "
121         @echo "  Targets:"
122         @echo "    all           == Build Mupen64plus-video-rice plugin"
123         @echo "    clean         == remove object files"
124         @echo "    rebuild       == clean and re-build all"
125         @echo "    install       == Install Mupen64Plus-video-rice plugin"
126         @echo "    uninstall     == Uninstall Mupen64Plus-video-rice plugin"
127         @echo "  Options:"
128         @echo "    BITS=32       == build 32-bit binaries on 64-bit machine"
129         @echo "    NO_ASM=1      == build without inline assembly code (x86 MMX/SSE)"
130         @echo "    APIDIR=path   == path to find Mupen64Plus Core headers"
131         @echo "    OPTFLAGS=flag == compiler optimization (default: -O3)"
132         @echo "    WARNFLAGS=flag == compiler warning levels (default: -Wall)"
133         @echo "    PIC=(1|0)     == Force enable/disable of position independent code"
134         @echo "    POSTFIX=name  == String added to the name of the the build (default: '')"
135         @echo "  Install Options:"
136         @echo "    PREFIX=path   == install/uninstall prefix (default: /usr/local)"
137         @echo "    SHAREDIR=path == path to install shared data files (default: PREFIX/share/mupen64plus)"
138         @echo "    LIBDIR=path   == library prefix (default: PREFIX/lib)"
139         @echo "    PLUGINDIR=path == path to install plugin libraries (default: LIBDIR/mupen64plus)"
140         @echo "    DESTDIR=path  == path to prepend to all installation paths (only for packagers)"
141         @echo "  Debugging Options:"
142         @echo "    DEBUG=1       == add debugging symbols"
143         @echo "    V=1           == show verbose compiler output"
144
145 all: $(TARGET)
146
147 install: $(TARGET)
148         $(INSTALL) -d "$(DESTDIR)$(PLUGINDIR)"
149         $(INSTALL) -m 0644 $(INSTALL_STRIP_FLAG) $(TARGET) "$(DESTDIR)$(PLUGINDIR)"
150         $(INSTALL) -d "$(DESTDIR)$(SHAREDIR)"
151
152 uninstall:
153         $(RM) "$(DESTDIR)$(PLUGINDIR)/$(TARGET)"
154
155 clean:
156         $(RM) -r $(OBJDIR) $(TARGET)
157
158 rebuild: clean all
159
160 # build dependency files
161 CFLAGS += -MD
162 -include $(OBJECTS:.o=.d)
163
164 CXXFLAGS += $(CFLAGS)
165
166 # standard build rules
167 $(OBJDIR)/%.o: $(SRCDIR)/%.c
168         $(COMPILE.c) -o $@ $<
169
170 $(OBJDIR)/%.o: $(SRCDIR)/%.cpp
171         $(COMPILE.cc) -o $@ $<
172
173 $(TARGET): $(OBJECTS)
174         $(LINK.o) $^ $(LOADLIBES) $(LDLIBS) -o $@
175
176 .PHONY: all clean install uninstall targets