34cf4058 |
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 -c |
91 | COMPILE.cc = $(Q_CXX)$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -gdwarf-2 -c |
92 | LINK.o = $(Q_LD)$(CXX) $(CXXFLAGS) $(LDFLAGS) $(TARGET_ARCH) -gdwarf-2 |
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 |