98e75f2d |
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 |