Glide Plugin GLES2 port from mupen64plus-ae, but with special FrameSkip code
[mupen64plus-pandora.git] / source / gles2glide64 / Makefile
diff --git a/source/gles2glide64/Makefile b/source/gles2glide64/Makefile
new file mode 100755 (executable)
index 0000000..ee2e96b
--- /dev/null
@@ -0,0 +1,165 @@
+PIC ?= 1
+NO_ASM := 1
+CFLAGS += -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -mtune=cortex-a8 -fsigned-char -DNO_ASM -DPAULSCODE -Ofast
+CFLAGS += -I ../../../../mupen64plus-bundle-src-2.0/source/mupen64plus-core/src/api/
+CFLAGS += `sdl-config --cflags`
+
+SHARED = -shared
+SRCDIR := src
+
+MODULE := gles2glide64
+SHARED_LIBRARIES := SDL core
+STATIC_LIBRARIES := png
+ARM_MODE := arm
+
+C_INCLUDES :=         \
+    $(M64P_API_INCLUDES)    \
+    $(SDL_INCLUDES)         \
+
+SOURCE :=                  \
+    $(SRCDIR)/Glitch64/combiner.cpp             \
+    $(SRCDIR)/Glitch64/geometry.cpp             \
+    $(SRCDIR)/Glitch64/glitchmain.cpp           \
+    $(SRCDIR)/Glitch64/textures.cpp             \
+    $(SRCDIR)/Glide64/osal_dynamiclib_unix.c    \
+    $(SRCDIR)/Glide64/3dmath.cpp                \
+    $(SRCDIR)/Glide64/Combine.cpp               \
+    $(SRCDIR)/Glide64/Config.cpp                \
+    $(SRCDIR)/Glide64/CRC.cpp                   \
+    $(SRCDIR)/Glide64/Debugger.cpp              \
+    $(SRCDIR)/Glide64/DepthBufferRender.cpp     \
+    $(SRCDIR)/Glide64/FBtoScreen.cpp            \
+    $(SRCDIR)/Glide64/FrameSkipper.cpp          \
+    $(SRCDIR)/Glide64/Ini.cpp                   \
+    $(SRCDIR)/Glide64/Keys.cpp                  \
+    $(SRCDIR)/Glide64/Main.cpp                  \
+    $(SRCDIR)/Glide64/rdp.cpp                   \
+    $(SRCDIR)/Glide64/TexBuffer.cpp             \
+    $(SRCDIR)/Glide64/TexCache.cpp              \
+    $(SRCDIR)/Glide64/ticks.c                   \
+    $(SRCDIR)/Glide64/Util.cpp                  \
+       
+CFLAGS +=         \
+    $(COMMON_CFLAGS)    \
+    -D__CRC_OPT         \
+    -D__HASHMAP_OPT     \
+    -D__TRIBUFFER_OPT   \
+    -D__VEC4_OPT        \
+    -DUSE_SDL           \
+    -fsigned-char       \
+    #-DSDL_NO_COMPAT     \
+    
+ifeq ($(PIC), 1)
+  CFLAGS += -fPIC
+else
+  CFLAGS += -fno-PIC
+endif
+
+CPPFLAGS := $(CPPFLAGS)
+    
+LDLIBS :=         \
+    -lGLESv2           \
+       -lEGL                   \
+       -lrt                    \
+
+# Use for ARM7a:
+CFLAGS += -DARM_ASM
+CFLAGS += -D__NEON_OPT
+
+LDFLAGS += $(SHARED)
+
+include $(BUILD_SHARED_LIBRARY)
+
+# set base program pointers and flags
+CC        = $(CROSS_COMPILE)gcc
+CXX       = $(CROSS_COMPILE)g++
+RM       ?= rm -f
+INSTALL  ?= install
+MKDIR ?= mkdir -p
+COMPILE.c = $(Q_CC)$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -gdwarf-2 -c
+COMPILE.cc = $(Q_CXX)$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -gdwarf-2 -c
+LINK.o = $(Q_LD)$(CXX) $(CXXFLAGS) $(LDFLAGS) $(TARGET_ARCH) -gdwarf-2
+
+# set installation options
+ifeq ($(PREFIX),)
+  PREFIX := /usr/local
+endif
+ifeq ($(SHAREDIR),)
+  SHAREDIR := $(PREFIX)/share/mupen64plus
+endif
+ifeq ($(LIBDIR),)
+  LIBDIR := $(PREFIX)/lib
+endif
+ifeq ($(PLUGINDIR),)
+  PLUGINDIR := $(LIBDIR)/mupen64plus
+endif
+
+OBJDIR = _obj$(POSTFIX)
+
+# generate a list of object files build, make a temporary directory for them
+OBJECTS := $(patsubst $(SRCDIR)/%.c, $(OBJDIR)/%.o, $(filter %.c, $(SOURCE)))
+OBJECTS += $(patsubst $(SRCDIR)/%.cpp, $(OBJDIR)/%.o, $(filter %.cpp, $(SOURCE)))
+OBJDIRS = $(dir $(OBJECTS))
+$(shell $(MKDIR) $(OBJDIRS))
+
+# build targets
+TARGET = mupen64plus-video-gles2n64.so
+
+targets:
+       @echo "Mupen64plus-video-rice N64 Graphics plugin makefile. "
+       @echo "  Targets:"
+       @echo "    all           == Build Mupen64plus-video-rice plugin"
+       @echo "    clean         == remove object files"
+       @echo "    rebuild       == clean and re-build all"
+       @echo "    install       == Install Mupen64Plus-video-rice plugin"
+       @echo "    uninstall     == Uninstall Mupen64Plus-video-rice plugin"
+       @echo "  Options:"
+       @echo "    BITS=32       == build 32-bit binaries on 64-bit machine"
+       @echo "    NO_ASM=1      == build without inline assembly code (x86 MMX/SSE)"
+       @echo "    APIDIR=path   == path to find Mupen64Plus Core headers"
+       @echo "    OPTFLAGS=flag == compiler optimization (default: -O3)"
+       @echo "    WARNFLAGS=flag == compiler warning levels (default: -Wall)"
+       @echo "    PIC=(1|0)     == Force enable/disable of position independent code"
+       @echo "    POSTFIX=name  == String added to the name of the the build (default: '')"
+       @echo "  Install Options:"
+       @echo "    PREFIX=path   == install/uninstall prefix (default: /usr/local)"
+       @echo "    SHAREDIR=path == path to install shared data files (default: PREFIX/share/mupen64plus)"
+       @echo "    LIBDIR=path   == library prefix (default: PREFIX/lib)"
+       @echo "    PLUGINDIR=path == path to install plugin libraries (default: LIBDIR/mupen64plus)"
+       @echo "    DESTDIR=path  == path to prepend to all installation paths (only for packagers)"
+       @echo "  Debugging Options:"
+       @echo "    DEBUG=1       == add debugging symbols"
+       @echo "    V=1           == show verbose compiler output"
+
+all: $(TARGET)
+
+install: $(TARGET)
+       $(INSTALL) -d "$(DESTDIR)$(PLUGINDIR)"
+       $(INSTALL) -m 0644 $(INSTALL_STRIP_FLAG) $(TARGET) "$(DESTDIR)$(PLUGINDIR)"
+       $(INSTALL) -d "$(DESTDIR)$(SHAREDIR)"
+
+uninstall:
+       $(RM) "$(DESTDIR)$(PLUGINDIR)/$(TARGET)"
+
+clean:
+       $(RM) -r $(OBJDIR) $(TARGET)
+
+rebuild: clean all
+
+# build dependency files
+CFLAGS += -MD
+-include $(OBJECTS:.o=.d)
+
+CXXFLAGS += $(CFLAGS)
+
+# standard build rules
+$(OBJDIR)/%.o: $(SRCDIR)/%.c
+       $(COMPILE.c) -o $@ $<
+
+$(OBJDIR)/%.o: $(SRCDIR)/%.cpp
+       $(COMPILE.cc) -o $@ $<
+
+$(TARGET): $(OBJECTS)
+       $(LINK.o) $^ $(LOADLIBES) $(LDLIBS) -o $@
+
+.PHONY: all clean install uninstall targets