comparison Makefile @ 2355:94cf5cc89227

Add an option to use the system file picker on Linux and Windows
author Michael Pavone <pavone@retrodev.com>
date Sat, 21 Oct 2023 19:22:01 -0700
parents 06d5e9b08bdb
children 64cf80e683aa
comparison
equal deleted inserted replaced
2354:a773b8f09292 2355:94cf5cc89227
13 13
14 GLEW_PREFIX:=glew 14 GLEW_PREFIX:=glew
15 MEM:=mem_win.o 15 MEM:=mem_win.o
16 TERMINAL:=terminal_win.o 16 TERMINAL:=terminal_win.o
17 FONT:=nuklear_ui/font_win.o 17 FONT:=nuklear_ui/font_win.o
18 CHOOSER:=nuklear_ui/filechooser_win.o
18 NET:=net_win.o 19 NET:=net_win.o
19 EXE:=.exe 20 EXE:=.exe
20 SO:=dll 21 SO:=dll
21 CPU:=i686 22 CPU:=i686
22 ifeq ($(CPU),i686) 23 ifeq ($(CPU),i686)
30 SDL2_PREFIX:="sdl/x86_64-w64-mingw32" 31 SDL2_PREFIX:="sdl/x86_64-w64-mingw32"
31 GLUDIR:=x64 32 GLUDIR:=x64
32 endif 33 endif
33 GLEW32S_LIB:=$(GLEW_PREFIX)/lib/Release/$(GLUDIR)/glew32s.lib 34 GLEW32S_LIB:=$(GLEW_PREFIX)/lib/Release/$(GLUDIR)/glew32s.lib
34 CFLAGS:=-std=gnu99 -Wreturn-type -Werror=return-type -Werror=implicit-function-declaration -Wpointer-arith -Werror=pointer-arith 35 CFLAGS:=-std=gnu99 -Wreturn-type -Werror=return-type -Werror=implicit-function-declaration -Wpointer-arith -Werror=pointer-arith
35 LDFLAGS:=-lm -lmingw32 -lws2_32 -mwindows 36 LDFLAGS:=-lm -lmingw32 -lws2_32 -lcomdlg32 -mwindows
36 ifneq ($(MAKECMDGOALS),libblastem.dll) 37 ifneq ($(MAKECMDGOALS),libblastem.dll)
37 CFLAGS+= -I"$(SDL2_PREFIX)/include/SDL2" -I"$(GLEW_PREFIX)/include" -DGLEW_STATIC 38 CFLAGS+= -I"$(SDL2_PREFIX)/include/SDL2" -I"$(GLEW_PREFIX)/include" -DGLEW_STATIC
38 LDFLAGS+= $(GLEW32S_LIB) -L"$(SDL2_PREFIX)/lib" -lSDL2main -lSDL2 -lopengl32 -lglu32 39 LDFLAGS+= $(GLEW32S_LIB) -L"$(SDL2_PREFIX)/lib" -lSDL2main -lSDL2 -lopengl32 -lglu32
39 endif 40 endif
40 LIBZOBJS=$(BUNDLED_LIBZ) 41 LIBZOBJS=$(BUNDLED_LIBZ)
50 CFLAGS:=-std=gnu99 -Wreturn-type -Werror=return-type -Werror=implicit-function-declaration -Wno-unused-value -Wpointer-arith -Werror=pointer-arith $(HAS_PROC) -DHAVE_UNISTD_H 51 CFLAGS:=-std=gnu99 -Wreturn-type -Werror=return-type -Werror=implicit-function-declaration -Wno-unused-value -Wpointer-arith -Werror=pointer-arith $(HAS_PROC) -DHAVE_UNISTD_H
51 52
52 ifeq ($(OS),Darwin) 53 ifeq ($(OS),Darwin)
53 LIBS=sdl2 glew 54 LIBS=sdl2 glew
54 FONT:=nuklear_ui/font_mac.o 55 FONT:=nuklear_ui/font_mac.o
56 CHOOSER:=nuklear_ui/filechooser_null.o
55 SO:=dylib 57 SO:=dylib
56 else 58 else
57 SO:=so 59 SO:=so
58 60
59 ifdef USE_FBDEV 61 ifdef USE_FBDEV
69 else 71 else
70 LIBS=sdl2 glew gl 72 LIBS=sdl2 glew gl
71 endif #USE_GLES 73 endif #USE_GLES
72 endif #USE_FBDEV 74 endif #USE_FBDEV
73 FONT:=nuklear_ui/font.o 75 FONT:=nuklear_ui/font.o
76 CHOOSER:=nuklear_ui/filechooser_gtk.o
77 GTKFLAGS:=$(shell pkg-config --cflags gtk+-3.0 2>/dev/null)
78 ifeq ($(GTKFLAGS),)
79 GTKFLAGS:=$(shell pkg-config --cflags gtk+-2.0 2>/dev/null)
80 ifeq ($(GTKFLAGS),)
81 CHOOSER:=nuklear_ui/filechooser_null.o
82 endif
83 endif
84 ifeq ($(GTKFLAGS),)
85 else
86 EXTRA_NUKLEAR_LDFLAGS:=-ldl
87 endif
88 CFLAGS+= $(GTKFLAGS)
74 endif #Darwin 89 endif #Darwin
75 90
76 ifdef HOST_ZLIB 91 ifdef HOST_ZLIB
77 LIBS+= zlib 92 LIBS+= zlib
78 LIBZOBJS= 93 LIBZOBJS=
82 97
83 ifeq ($(OS),Darwin) 98 ifeq ($(OS),Darwin)
84 #This should really be based on whether or not the C compiler is clang rather than based on the OS 99 #This should really be based on whether or not the C compiler is clang rather than based on the OS
85 CFLAGS+= -Wno-logical-op-parentheses 100 CFLAGS+= -Wno-logical-op-parentheses
86 endif 101 endif
102
87 ifdef PORTABLE 103 ifdef PORTABLE
88 ifdef USE_GLES 104 ifdef USE_GLES
89 ifndef GLES_LIB 105 ifndef GLES_LIB
90 GLES_LIB:=$(shell pkg-config --libs glesv2) 106 GLES_LIB:=$(shell pkg-config --libs glesv2)
91 endif 107 endif
92 LDFLAGS:=-lm $(GLES_LIB) 108 LDFLAGS:=-lm $(GLES_LIB)
93 else 109 else #USE_GLES
94 CFLAGS+= -DGLEW_STATIC -Iglew/include 110 CFLAGS+= -DGLEW_STATIC -Iglew/include
95 LDFLAGS:=-lm glew/lib/libGLEW.a -lEGL 111 LDFLAGS:=-lm glew/lib/libGLEW.a -lEGL
96 endif 112 endif #USE_GLES
97 113
98 ifeq ($(OS),Darwin) 114 ifeq ($(OS),Darwin)
99 SDL_INCLUDE_PATH:=Frameworks/SDL2.framework/Headers 115 SDL_INCLUDE_PATH:=Frameworks/SDL2.framework/Headers
100 CFLAGS+= -mmacosx-version-min=10.10 116 CFLAGS+= -mmacosx-version-min=10.10
101 LDFLAGS+= -FFrameworks -framework SDL2 -framework OpenGL -framework AppKit -mmacosx-version-min=10.10 117 LDFLAGS+= -FFrameworks -framework SDL2 -framework OpenGL -framework AppKit -mmacosx-version-min=10.10
102 FIXUP:=install_name_tool -change @rpath/SDL2.framework/Versions/A/SDL2 @executable_path/Frameworks/SDL2.framework/Versions/A/SDL2 118 FIXUP:=install_name_tool -change @rpath/SDL2.framework/Versions/A/SDL2 @executable_path/Frameworks/SDL2.framework/Versions/A/SDL2
103 else 119 else #Darwin
104 SDL_INCLUDE_PATH:=sdl/include 120 SDL_INCLUDE_PATH:=sdl/include
105 LDFLAGS+= -Wl,-rpath='$$ORIGIN/lib' -Llib -lSDL2 121 LDFLAGS+= -Wl,-rpath='$$ORIGIN/lib' -Llib -lSDL2
106 ifndef USE_GLES 122 ifndef USE_GLES
107 LDFLAGS+= $(shell pkg-config --libs gl) 123 LDFLAGS+= $(shell pkg-config --libs gl)
108 endif 124 endif
109 endif #Darwin 125 endif #Darwin
110 CFLAGS+= -I$(SDL_INCLUDE_PATH) 126 CFLAGS+= -I$(SDL_INCLUDE_PATH)
111 127
112 else 128 else #PORTABLE
113 ifeq ($(MAKECMDGOALS),libblastem.$(SO)) 129 ifeq ($(MAKECMDGOALS),libblastem.$(SO))
114 LDFLAGS:=-lm 130 LDFLAGS:=-lm
115 else 131 else
116 CFLAGS:=$(shell pkg-config --cflags-only-I $(LIBS)) $(CFLAGS) 132 CFLAGS:=$(shell pkg-config --cflags-only-I $(LIBS)) $(CFLAGS)
117 LDFLAGS:=-lm $(shell pkg-config --libs $(LIBS)) 133 LDFLAGS:=-lm $(shell pkg-config --libs $(LIBS))
178 endif 194 endif
179 195
180 TRANSOBJS=gen.o backend.o $(MEM) arena.o tern.o 196 TRANSOBJS=gen.o backend.o $(MEM) arena.o tern.o
181 M68KOBJS=68kinst.o disasm.o 197 M68KOBJS=68kinst.o disasm.o
182 198
199 ifdef NO_FILE_CHOOSER
200 CHOOSER:=nuklear_ui/filechooser_nulll.o
201 endif
202
183 ifdef NEW_CORE 203 ifdef NEW_CORE
184 Z80OBJS=z80.o z80inst.o 204 Z80OBJS=z80.o z80inst.o
185 M68KOBJS+= m68k.o 205 M68KOBJS+= m68k.o
186 CFLAGS+= -DNEW_CORE 206 CFLAGS+= -DNEW_CORE
187 else 207 else
196 endif 216 endif
197 endif 217 endif
198 endif 218 endif
199 AUDIOOBJS=ym2612.o psg.o wave.o flac.o vgm.o event_log.o render_audio.o rf5c164.o 219 AUDIOOBJS=ym2612.o psg.o wave.o flac.o vgm.o event_log.o render_audio.o rf5c164.o
200 CONFIGOBJS=config.o tern.o util.o paths.o 220 CONFIGOBJS=config.o tern.o util.o paths.o
201 NUKLEAROBJS=$(FONT) nuklear_ui/blastem_nuklear.o nuklear_ui/sfnt.o 221 NUKLEAROBJS=$(FONT) $(CHOOSER) nuklear_ui/blastem_nuklear.o nuklear_ui/sfnt.o
202 RENDEROBJS=ppm.o controller_info.o 222 RENDEROBJS=ppm.o controller_info.o
203 ifdef USE_FBDEV 223 ifdef USE_FBDEV
204 RENDEROBJS+= render_fbdev.o 224 RENDEROBJS+= render_fbdev.o
205 else 225 else
206 RENDEROBJS+= render_sdl.o 226 RENDEROBJS+= render_sdl.o
224 244
225 ifdef NONUKLEAR 245 ifdef NONUKLEAR
226 CFLAGS+= -DDISABLE_NUKLEAR 246 CFLAGS+= -DDISABLE_NUKLEAR
227 else 247 else
228 MAINOBJS+= $(NUKLEAROBJS) 248 MAINOBJS+= $(NUKLEAROBJS)
249 LDFLAGS+=$(EXTRA_NUKLEAR_LDFLAGS)
229 endif 250 endif
230 251
231 ifeq ($(CPU),x86_64) 252 ifeq ($(CPU),x86_64)
232 CFLAGS+=-DX86_64 -m64 253 CFLAGS+=-DX86_64 -m64
233 LDFLAGS+=-m64 254 LDFLAGS+=-m64