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