diff 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
line wrap: on
line diff
--- a/Makefile	Thu Oct 19 23:27:57 2023 -0700
+++ b/Makefile	Sat Oct 21 19:22:01 2023 -0700
@@ -15,6 +15,7 @@
 MEM:=mem_win.o
 TERMINAL:=terminal_win.o
 FONT:=nuklear_ui/font_win.o
+CHOOSER:=nuklear_ui/filechooser_win.o
 NET:=net_win.o
 EXE:=.exe
 SO:=dll
@@ -32,7 +33,7 @@
 endif
 GLEW32S_LIB:=$(GLEW_PREFIX)/lib/Release/$(GLUDIR)/glew32s.lib
 CFLAGS:=-std=gnu99 -Wreturn-type -Werror=return-type -Werror=implicit-function-declaration -Wpointer-arith -Werror=pointer-arith
-LDFLAGS:=-lm -lmingw32 -lws2_32 -mwindows
+LDFLAGS:=-lm -lmingw32 -lws2_32 -lcomdlg32 -mwindows
 ifneq ($(MAKECMDGOALS),libblastem.dll)
 CFLAGS+= -I"$(SDL2_PREFIX)/include/SDL2" -I"$(GLEW_PREFIX)/include" -DGLEW_STATIC
 LDFLAGS+= $(GLEW32S_LIB) -L"$(SDL2_PREFIX)/lib" -lSDL2main -lSDL2 -lopengl32 -lglu32
@@ -52,6 +53,7 @@
 ifeq ($(OS),Darwin)
 LIBS=sdl2 glew
 FONT:=nuklear_ui/font_mac.o
+CHOOSER:=nuklear_ui/filechooser_null.o
 SO:=dylib
 else
 SO:=so
@@ -71,6 +73,19 @@
 endif #USE_GLES
 endif #USE_FBDEV
 FONT:=nuklear_ui/font.o
+CHOOSER:=nuklear_ui/filechooser_gtk.o
+GTKFLAGS:=$(shell pkg-config --cflags gtk+-3.0 2>/dev/null)
+ifeq ($(GTKFLAGS),)
+GTKFLAGS:=$(shell pkg-config --cflags gtk+-2.0 2>/dev/null)
+ifeq ($(GTKFLAGS),)
+CHOOSER:=nuklear_ui/filechooser_null.o
+endif
+endif
+ifeq ($(GTKFLAGS),)
+else
+EXTRA_NUKLEAR_LDFLAGS:=-ldl
+endif
+CFLAGS+= $(GTKFLAGS)
 endif #Darwin
 
 ifdef HOST_ZLIB
@@ -84,23 +99,24 @@
 #This should really be based on whether or not the C compiler is clang rather than based on the OS
 CFLAGS+= -Wno-logical-op-parentheses
 endif
+
 ifdef PORTABLE
 ifdef USE_GLES
 ifndef GLES_LIB
 GLES_LIB:=$(shell pkg-config --libs glesv2)
 endif
 LDFLAGS:=-lm $(GLES_LIB)
-else
+else #USE_GLES
 CFLAGS+= -DGLEW_STATIC -Iglew/include
 LDFLAGS:=-lm glew/lib/libGLEW.a -lEGL
-endif
+endif #USE_GLES
 
 ifeq ($(OS),Darwin)
 SDL_INCLUDE_PATH:=Frameworks/SDL2.framework/Headers
 CFLAGS+=  -mmacosx-version-min=10.10
 LDFLAGS+= -FFrameworks -framework SDL2 -framework OpenGL -framework AppKit -mmacosx-version-min=10.10
 FIXUP:=install_name_tool -change @rpath/SDL2.framework/Versions/A/SDL2 @executable_path/Frameworks/SDL2.framework/Versions/A/SDL2
-else
+else #Darwin
 SDL_INCLUDE_PATH:=sdl/include
 LDFLAGS+= -Wl,-rpath='$$ORIGIN/lib' -Llib -lSDL2
 ifndef USE_GLES
@@ -109,7 +125,7 @@
 endif #Darwin
 CFLAGS+= -I$(SDL_INCLUDE_PATH)
 
-else
+else #PORTABLE
 ifeq ($(MAKECMDGOALS),libblastem.$(SO))
 LDFLAGS:=-lm
 else
@@ -180,6 +196,10 @@
 TRANSOBJS=gen.o backend.o $(MEM) arena.o tern.o
 M68KOBJS=68kinst.o disasm.o
 
+ifdef NO_FILE_CHOOSER
+CHOOSER:=nuklear_ui/filechooser_nulll.o
+endif
+
 ifdef NEW_CORE
 Z80OBJS=z80.o z80inst.o
 M68KOBJS+= m68k.o
@@ -198,7 +218,7 @@
 endif
 AUDIOOBJS=ym2612.o psg.o wave.o flac.o vgm.o event_log.o render_audio.o rf5c164.o
 CONFIGOBJS=config.o tern.o util.o paths.o
-NUKLEAROBJS=$(FONT) nuklear_ui/blastem_nuklear.o nuklear_ui/sfnt.o
+NUKLEAROBJS=$(FONT) $(CHOOSER) nuklear_ui/blastem_nuklear.o nuklear_ui/sfnt.o
 RENDEROBJS=ppm.o controller_info.o
 ifdef USE_FBDEV
 RENDEROBJS+= render_fbdev.o
@@ -226,6 +246,7 @@
 CFLAGS+= -DDISABLE_NUKLEAR
 else
 MAINOBJS+= $(NUKLEAROBJS)
+LDFLAGS+=$(EXTRA_NUKLEAR_LDFLAGS)
 endif
 
 ifeq ($(CPU),x86_64)