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