ecere/Makefile; ecere.epj: Excluding incomplete Cocoa files breaking build
[sdk] / ecere / Makefile
index ee24c7f..1f33a84 100644 (file)
@@ -94,6 +94,11 @@ _ECSOURCES1 = \
        src/gfx/bitmaps/PCXFormat.ec \
        src/gfx/bitmaps/PNGFormat.ec \
        src/gfx/bitmaps/RGBFormat.ec \
+       src/gfx/drivers/gl3/glab.ec \
+       src/gfx/drivers/gl3/immediate.ec \
+       src/gfx/drivers/gl3/matrixStack.ec \
+       src/gfx/drivers/gl3/shaders.ec \
+       src/gfx/drivers/gl3/defaultShader.ec \
        $(if $(WINDOWS_TARGET),src/gfx/drivers/Direct3D8DisplayDriver.ec,) \
        $(if $(WINDOWS_TARGET),src/gfx/drivers/Direct3D9DisplayDriver.ec,) \
        $(if $(WINDOWS_TARGET),src/gfx/drivers/DirectDrawDisplayDriver.ec,) \
@@ -105,7 +110,7 @@ _ECSOURCES1 = \
        $(if $(DISABLE_GL),,src/gfx/drivers/OpenGLDisplayDriver.ec) \
        $(if $(WINDOWS_TARGET),src/gfx/drivers/Win32BitmapPrinterDisplayDriver.ec,)
 _ECSOURCES2 = \
-       $(if $(OSX_TARGET),src/gfx/drivers/CocoaOpenGLDisplayDriver.ec,) \
+       $(if ,src/gfx/drivers/CocoaOpenGLDisplayDriver.ec,) \
        $(if $(WINDOWS_TARGET),src/gfx/drivers/Win32ConsoleDisplayDriver.ec,) \
        $(if $(WINDOWS_TARGET),src/gfx/drivers/Win32PrinterDisplayDriver.ec,) \
        $(if $(or $(LINUX_TARGET),$(OSX_TARGET)),src/gfx/drivers/XDisplayDriver.ec,) \
@@ -117,6 +122,9 @@ _ECSOURCES2 = \
        src/gfx/FontResource.ec \
        src/gfx/Resource.ec \
        src/gfx/Surface.ec \
+       src/gfx/fontManagement.ec \
+       src/gfx/fontRendering.ec \
+       src/gfx/imgDistMap.ec \
        src/gui/controls/Button.ec \
        src/gui/controls/CalendarControl.ec \
        src/gui/controls/DataBox.ec \
@@ -142,8 +150,8 @@ _ECSOURCES2 = \
        src/gui/dialogs/MessageBox.ec \
        src/gui/dialogs/ReplaceDialog.ec \
        src/gui/dialogs/WindowList.ec \
-       $(if $(OSX_TARGET),src/gui/drivers/cocoa/CocoaDispatch.ec,) \
-       $(if $(OSX_TARGET),src/gui/drivers/cocoa/CocoaInterface.ec,)
+       $(if ,src/gui/drivers/cocoa/CocoaDispatch.ec,) \
+       $(if ,src/gui/drivers/cocoa/CocoaInterface.ec,)
 _ECSOURCES3 = \
        $(if $(or $(LINUX_TARGET),$(OSX_TARGET)),src/gui/drivers/NCursesInterface.ec,) \
        $(if $(WINDOWS_TARGET),src/gui/drivers/Win32Interface.ec,) \
@@ -238,8 +246,9 @@ _OBJECTS = \
        $(OBJ)harfbuzz-tibetan.o \
        $(OBJ)harfbuzz-impl.o \
        $(OBJ)harfbuzz-thai.o \
-       $(if $(OSX_TARGET),$(OBJ)CocoaEcereBridge.o,) \
-       $(if $(OSX_TARGET),$(OBJ)EcereView.o,) \
+       $(OBJ)gl_compat_4_4.o \
+       $(if ,$(OBJ)CocoaEcereBridge.o,) \
+       $(if ,$(OBJ)EcereView.o,) \
        $(OBJ)instance.c.o
 
 OBJECTS = $(_OBJECTS) $(ECOBJECTS) $(OBJ)$(MODULE).main$(O)
@@ -267,8 +276,9 @@ SOURCES = $(ECSOURCES) \
        src/gfx/drivers/harfbuzz/harfbuzz-tibetan.c \
        src/gfx/drivers/harfbuzz/harfbuzz-impl.c \
        src/gfx/drivers/harfbuzz/harfbuzz-thai.c \
-       $(if $(OSX_TARGET),src/gui/drivers/cocoa/CocoaEcereBridge.m,) \
-       $(if $(OSX_TARGET),src/gui/drivers/cocoa/EcereView.m,) \
+       src/gfx/drivers/gl3/gl_compat_4_4.c \
+       $(if ,src/gui/drivers/cocoa/CocoaEcereBridge.m,) \
+       $(if ,src/gui/drivers/cocoa/EcereView.m,) \
        src/com/instance.c
 
 RESOURCES = $(RESOURCES1) $(RESOURCES2) $(RESOURCES3)
@@ -383,7 +393,9 @@ RESOURCES3 = \
        locale/nl.mo \
        locale/pt_BR.mo \
        locale/ru.mo \
-       locale/zh_CN.mo
+       locale/zh_CN.mo \
+       src/gfx/drivers/gl3/default.frag \
+       src/gfx/drivers/gl3/default.vert
 
 LIBS += $(SHAREDLIB) $(EXECUTABLE) $(LINKOPT)
 
@@ -399,11 +411,10 @@ endif
 PRJ_CFLAGS += \
         $(if $(WINDOWS_TARGET), \
                         -isystem ../deps/glext \
-                        -I../deps/DirectX-9.0/include \
-                        -I../deps/jpeg-6b \
-                        -I../deps/libpng-1.4.0 \
+                        -I../deps/jpeg-9a \
+                        -I../deps/libpng-1.6.12 \
                         -I../deps/libungif-4.1.1/lib \
-                        -I../deps/zlib \
+                        -I../deps/zlib-1.2.8 \
                         -I../deps/freetype-2.3.12/include \
                         $(if $(ENABLE_SSL),-I$(OPENSSL_INCLUDE_DIR),)) \
         $(if $(LINUX_TARGET), \
@@ -414,11 +425,13 @@ PRJ_CFLAGS += \
                         -I$(SYSROOT)/usr/X11/include \
                         -I/usr/X11R6/include/freetype2 \
                         -I/usr/X11R6/include \
-                        -I../deps/jpeg-6b \
-                        -I../deps/libpng-1.4.0 \
+                        -Isrc/gui/drivers/cocoa \
+                        -I../deps/jpeg-9a \
+                        -I../deps/libpng-1.6.12 \
                         -I../deps/libungif-4.1.1/lib,) \
         $(if $(DEBUG), -g, -O2 -ffast-math) $(FPIC) -w \
                         -DBUILDING_ECERE_COM \
+                        -Isrc/gfx/drivers/gl3/ \
                         -Isrc/gfx/drivers/harfbuzz \
                         -I/usr/X11R6/include \
                         -I/usr/X11R6/include/freetype2 $(FVISIBILITY)
@@ -437,9 +450,9 @@ ifdef WINDOWS_TARGET
 
 ifndef STATIC_LIBRARY_TARGET
 OFLAGS += \
-        -L../deps/zlib/obj/release.$(PLATFORM)$(COMPILER_SUFFIX) \
-        -L../deps/jpeg-6b/obj/release.$(PLATFORM)$(COMPILER_SUFFIX) \
-        -L../deps/libpng-1.4.0/obj/release.$(PLATFORM)$(COMPILER_SUFFIX) \
+        -L../deps/zlib-1.2.8/obj/release.$(PLATFORM)$(COMPILER_SUFFIX) \
+        -L../deps/jpeg-9a/obj/release.$(PLATFORM)$(COMPILER_SUFFIX) \
+        -L../deps/libpng-1.6.12/obj/release.$(PLATFORM)$(COMPILER_SUFFIX) \
         -L../deps/libungif-4.1.1/obj/release.$(PLATFORM)$(COMPILER_SUFFIX) \
         -L../deps/freetype-2.3.12/obj/release.$(PLATFORM)$(COMPILER_SUFFIX) \
         $(if $(ENABLE_SSL),-L$(OPENSSL_LIB_DIR) -L$(OPENSSL_BIN_DIR))
@@ -491,8 +504,7 @@ ifndef STATIC_LIBRARY_TARGET
 OFLAGS += \
         -L$(SYSROOT)/usr/X11/lib \
         -L/usr/X11R6/lib \
-        -L../deps/jpeg-6b/obj/release.$(PLATFORM)$(COMPILER_SUFFIX) \
-        -L../deps/libpng-1.4.0/obj/release.$(PLATFORM)$(COMPILER_SUFFIX) \
+        -L../deps/jpeg-9a/obj/release.$(PLATFORM)$(COMPILER_SUFFIX) \
         -L../deps/libungif-4.1.1/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)
 LIBS += \
        $(call _L,curses) \
@@ -520,17 +532,17 @@ CECFLAGS += -cpp $(_CPP)
 all: objdir $(TARGET)
 
 objdir:
-       $(if $(wildcard $(OBJ)),,$(call mkdirq,$(OBJ)))
+       $(if $(wildcard $(OBJ)),,$(call mkdir,$(OBJ)))
 
 $(OBJ)$(MODULE).main.ec: $(SYMBOLS) $(COBJECTS)
-       @$(call rmq,$(OBJ)symbols.lst)
+       @$(call rm,$(OBJ)symbols.lst)
        @$(call touch,$(OBJ)symbols.lst)
-       @$(call echo,$(SYMBOLS1)) >> $(OBJ)symbols.lst
-       @$(call echo,$(SYMBOLS2)) >> $(OBJ)symbols.lst
-       @$(call echo,$(SYMBOLS3)) >> $(OBJ)symbols.lst
-       @$(call echo,$(IMPORTS1)) >> $(OBJ)symbols.lst
-       @$(call echo,$(IMPORTS2)) >> $(OBJ)symbols.lst
-       @$(call echo,$(IMPORTS3)) >> $(OBJ)symbols.lst
+       $(call addtolistfile,$(SYMBOLS1),$(OBJ)symbols.lst)
+       $(call addtolistfile,$(SYMBOLS2),$(OBJ)symbols.lst)
+       $(call addtolistfile,$(SYMBOLS3),$(OBJ)symbols.lst)
+       $(call addtolistfile,$(IMPORTS1),$(OBJ)symbols.lst)
+       $(call addtolistfile,$(IMPORTS2),$(OBJ)symbols.lst)
+       $(call addtolistfile,$(IMPORTS3),$(OBJ)symbols.lst)
        $(ECS) $(ARCH_FLAGS) $(ECSLIBOPT) @$(OBJ)symbols.lst -symbols obj/$(CONFIG).$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX) -o $(OBJ)$(MODULE).main.ec
 
 $(OBJ)$(MODULE).main.c: $(OBJ)$(MODULE).main.ec
@@ -547,12 +559,12 @@ ifndef NOSTRIP
        $(STRIP) $(STRIPOPT) $(TARGET)
 endif
 ifdef WINDOWS_TARGET
-       $(call cpq,$(TARGET),../compiler/bootstrap/obj/bin.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/)
+       $(call cp,$(TARGET),../compiler/bootstrap/obj/bin.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/)
 endif
 else
        $(AR) rcs $(TARGET) $(OBJECTS) $(LIBS)
 endif
-       $(call cpq,$(TARGET),../$(HOST_SODESTDIR))
+       $(call cp,$(TARGET),../$(HOST_SODESTDIR))
 ifdef SHARED_LIBRARY_TARGET
 ifdef LINUX_HOST
        $(if $(basename $(VER)),ln -sf $(LP)$(MODULE)$(SO)$(VER) ../$(HOST_SODESTDIR)$(LP)$(MODULE)$(SO)$(basename $(VER)),)
@@ -561,13 +573,13 @@ endif
 endif
 
 $(TARGET): $(SOURCES) $(RESOURCES) $(SYMBOLS) $(OBJECTS) | objdir
-       @$(call rmq,$(OBJ)objects.lst)
+       @$(call rm,$(OBJ)objects.lst)
        @$(call touch,$(OBJ)objects.lst)
-       @$(call echo,$(_OBJECTS)) >> $(OBJ)objects.lst
-       @$(call echo,$(OBJ)$(MODULE).main$(O)) >> $(OBJ)objects.lst
-       @$(call echo,$(ECOBJECTS1)) >> $(OBJ)objects.lst
-       @$(call echo,$(ECOBJECTS2)) >> $(OBJ)objects.lst
-       @$(call echo,$(ECOBJECTS3)) >> $(OBJ)objects.lst
+       $(call addtolistfile,$(_OBJECTS),$(OBJ)objects.lst)
+       $(call addtolistfile,$(OBJ)$(MODULE).main$(O),$(OBJ)objects.lst)
+       $(call addtolistfile,$(ECOBJECTS1),$(OBJ)objects.lst)
+       $(call addtolistfile,$(ECOBJECTS2),$(OBJ)objects.lst)
+       $(call addtolistfile,$(ECOBJECTS3),$(OBJ)objects.lst)
 ifndef STATIC_LIBRARY_TARGET
        $(CC) $(OFLAGS) @$(OBJ)objects.lst $(LIBS) -o $(TARGET) $(SONAME) $(INSTALLNAME)
 ifndef NOSTRIP
@@ -591,11 +603,16 @@ endif
        $(EAR) aw$(EARFLAGS) $(TARGET) $(RES)status/audioVolumeHigh.png $(RES)status/folderOpen.png "status"
        $(EAR) aw$(EARFLAGS) $(TARGET) $(RES)unicode/derivedGeneralCategoryStripped.txt "unicode"
        $(EAR) aw$(EARFLAGS) $(TARGET) locale/es.mo locale/hu.mo locale/mr.mo locale/nl.mo locale/pt_BR.mo locale/ru.mo locale/zh_CN.mo "locale"
+       $(EAR) aw$(EARFLAGS) $(TARGET) src/gfx/drivers/gl3/default.frag src/gfx/drivers/gl3/default.vert "shaders"
 else
+ifdef WINDOWS_HOST
        $(AR) rcs $(TARGET) @$(OBJ)objects.lst $(LIBS)
+else
+       $(AR) rcs $(TARGET) $(OBJECTS) $(LIBS)
 endif
-       $(call mkdirq,../$(SODESTDIR))
-       $(call cpq,$(TARGET),../$(SODESTDIR))
+endif
+       $(call mkdir,../$(SODESTDIR))
+       $(call cp,$(TARGET),../$(SODESTDIR))
 ifdef SHARED_LIBRARY_TARGET
 ifdef LINUX_TARGET
 ifdef LINUX_HOST
@@ -723,22 +740,37 @@ $(OBJ)PNGFormat.sym: src/gfx/bitmaps/PNGFormat.ec
 $(OBJ)RGBFormat.sym: src/gfx/bitmaps/RGBFormat.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/bitmaps/RGBFormat.ec -o $(OBJ)RGBFormat.sym
 
-ifneq "$(WINDOWS_TARGET)" ""
+$(OBJ)glab.sym: src/gfx/drivers/gl3/glab.ec
+       $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/gl3/glab.ec -o $(OBJ)glab.sym
+
+$(OBJ)immediate.sym: src/gfx/drivers/gl3/immediate.ec
+       $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/gl3/immediate.ec -o $(OBJ)immediate.sym
+
+$(OBJ)matrixStack.sym: src/gfx/drivers/gl3/matrixStack.ec
+       $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/gl3/matrixStack.ec -o $(OBJ)matrixStack.sym
+
+$(OBJ)shaders.sym: src/gfx/drivers/gl3/shaders.ec
+       $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/gl3/shaders.ec -o $(OBJ)shaders.sym
+
+$(OBJ)defaultShader.sym: src/gfx/drivers/gl3/defaultShader.ec
+       $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/gl3/defaultShader.ec -o $(OBJ)defaultShader.sym
+
+ifneq ($(WINDOWS_TARGET),)
 $(OBJ)Direct3D8DisplayDriver.sym: src/gfx/drivers/Direct3D8DisplayDriver.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/Direct3D8DisplayDriver.ec -o $(OBJ)Direct3D8DisplayDriver.sym
 endif
 
-ifneq "$(WINDOWS_TARGET)" ""
+ifneq ($(WINDOWS_TARGET),)
 $(OBJ)Direct3D9DisplayDriver.sym: src/gfx/drivers/Direct3D9DisplayDriver.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/Direct3D9DisplayDriver.ec -o $(OBJ)Direct3D9DisplayDriver.sym
 endif
 
-ifneq "$(WINDOWS_TARGET)" ""
+ifneq ($(WINDOWS_TARGET),)
 $(OBJ)DirectDrawDisplayDriver.sym: src/gfx/drivers/DirectDrawDisplayDriver.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/DirectDrawDisplayDriver.ec -o $(OBJ)DirectDrawDisplayDriver.sym
 endif
 
-ifneq "$(WINDOWS_TARGET)" ""
+ifneq ($(WINDOWS_TARGET),)
 $(OBJ)GDIDisplayDriver.sym: src/gfx/drivers/GDIDisplayDriver.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/GDIDisplayDriver.ec -o $(OBJ)GDIDisplayDriver.sym
 endif
@@ -752,7 +784,7 @@ $(OBJ)lfbConvert.sym: src/gfx/drivers/lfbConvert.ec
 $(OBJ)LFBDisplayDriver.sym: src/gfx/drivers/LFBDisplayDriver.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/LFBDisplayDriver.ec -o $(OBJ)LFBDisplayDriver.sym
 
-ifneq "$(or $(LINUX_TARGET),$(OSX_TARGET))" ""
+ifneq ($(or $(LINUX_TARGET),$(OSX_TARGET)),)
 $(OBJ)NCursesDisplayDriver.sym: src/gfx/drivers/NCursesDisplayDriver.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/NCursesDisplayDriver.ec -o $(OBJ)NCursesDisplayDriver.sym
 endif
@@ -760,27 +792,27 @@ endif
 $(OBJ)OpenGLDisplayDriver.sym: src/gfx/drivers/OpenGLDisplayDriver.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/OpenGLDisplayDriver.ec -o $(OBJ)OpenGLDisplayDriver.sym
 
-ifneq "$(WINDOWS_TARGET)" ""
+ifneq ($(WINDOWS_TARGET),)
 $(OBJ)Win32BitmapPrinterDisplayDriver.sym: src/gfx/drivers/Win32BitmapPrinterDisplayDriver.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/Win32BitmapPrinterDisplayDriver.ec -o $(OBJ)Win32BitmapPrinterDisplayDriver.sym
 endif
 
-ifneq "$(OSX_TARGET)" ""
+ifneq ($(OSX_TARGET),)
 $(OBJ)CocoaOpenGLDisplayDriver.sym: src/gfx/drivers/CocoaOpenGLDisplayDriver.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/CocoaOpenGLDisplayDriver.ec -o $(OBJ)CocoaOpenGLDisplayDriver.sym
 endif
 
-ifneq "$(WINDOWS_TARGET)" ""
+ifneq ($(WINDOWS_TARGET),)
 $(OBJ)Win32ConsoleDisplayDriver.sym: src/gfx/drivers/Win32ConsoleDisplayDriver.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/Win32ConsoleDisplayDriver.ec -o $(OBJ)Win32ConsoleDisplayDriver.sym
 endif
 
-ifneq "$(WINDOWS_TARGET)" ""
+ifneq ($(WINDOWS_TARGET),)
 $(OBJ)Win32PrinterDisplayDriver.sym: src/gfx/drivers/Win32PrinterDisplayDriver.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/Win32PrinterDisplayDriver.ec -o $(OBJ)Win32PrinterDisplayDriver.sym
 endif
 
-ifneq "$(or $(LINUX_TARGET),$(OSX_TARGET))" ""
+ifneq ($(or $(LINUX_TARGET),$(OSX_TARGET)),)
 $(OBJ)XDisplayDriver.sym: src/gfx/drivers/XDisplayDriver.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/XDisplayDriver.ec -o $(OBJ)XDisplayDriver.sym
 endif
@@ -809,6 +841,15 @@ $(OBJ)Resource.sym: src/gfx/Resource.ec
 $(OBJ)Surface.sym: src/gfx/Surface.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/Surface.ec -o $(OBJ)Surface.sym
 
+$(OBJ)fontManagement.sym: src/gfx/fontManagement.ec
+       $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c $(call quote_path,src/gfx/fontManagement.ec) -o $(call quote_path,$@)
+
+$(OBJ)fontRendering.sym: src/gfx/fontRendering.ec
+       $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c $(call quote_path,src/gfx/fontRendering.ec) -o $(call quote_path,$@)
+
+$(OBJ)imgDistMap.sym: src/gfx/imgDistMap.ec
+       $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c $(call quote_path,src/gfx/imgDistMap.ec) -o $(call quote_path,$@)
+
 $(OBJ)Button.sym: src/gui/controls/Button.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gui/controls/Button.ec -o $(OBJ)Button.sym
 
@@ -884,32 +925,32 @@ $(OBJ)ReplaceDialog.sym: src/gui/dialogs/ReplaceDialog.ec
 $(OBJ)WindowList.sym: src/gui/dialogs/WindowList.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gui/dialogs/WindowList.ec -o $(OBJ)WindowList.sym
 
-ifneq "$(OSX_TARGET)" ""
+ifneq ($(OSX_TARGET),)
 $(OBJ)CocoaDispatch.sym: src/gui/drivers/cocoa/CocoaDispatch.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gui/drivers/cocoa/CocoaDispatch.ec -o $(OBJ)CocoaDispatch.sym
 endif
 
-ifneq "$(OSX_TARGET)" ""
+ifneq ($(OSX_TARGET),)
 $(OBJ)CocoaInterface.sym: src/gui/drivers/cocoa/CocoaInterface.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gui/drivers/cocoa/CocoaInterface.ec -o $(OBJ)CocoaInterface.sym
 endif
 
-ifneq "$(or $(LINUX_TARGET),$(OSX_TARGET))" ""
+ifneq ($(or $(LINUX_TARGET),$(OSX_TARGET)),)
 $(OBJ)NCursesInterface.sym: src/gui/drivers/NCursesInterface.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gui/drivers/NCursesInterface.ec -o $(OBJ)NCursesInterface.sym
 endif
 
-ifneq "$(WINDOWS_TARGET)" ""
+ifneq ($(WINDOWS_TARGET),)
 $(OBJ)Win32Interface.sym: src/gui/drivers/Win32Interface.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gui/drivers/Win32Interface.ec -o $(OBJ)Win32Interface.sym
 endif
 
-ifneq "$(WINDOWS_TARGET)" ""
+ifneq ($(WINDOWS_TARGET),)
 $(OBJ)Win32ConsoleInterface.sym: src/gui/drivers/Win32ConsoleInterface.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gui/drivers/Win32ConsoleInterface.ec -o $(OBJ)Win32ConsoleInterface.sym
 endif
 
-ifneq "$(or $(LINUX_TARGET),$(OSX_TARGET))" ""
+ifneq ($(or $(LINUX_TARGET),$(OSX_TARGET)),)
 $(OBJ)XInterface.sym: src/gui/drivers/XInterface.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gui/drivers/XInterface.ec -o $(OBJ)XInterface.sym
 endif
@@ -1135,22 +1176,37 @@ $(OBJ)PNGFormat.c: src/gfx/bitmaps/PNGFormat.ec $(OBJ)PNGFormat.sym | $(SYMBOLS)
 $(OBJ)RGBFormat.c: src/gfx/bitmaps/RGBFormat.ec $(OBJ)RGBFormat.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/bitmaps/RGBFormat.ec -o $(OBJ)RGBFormat.c -symbols $(OBJ)
 
-ifneq "$(WINDOWS_TARGET)" ""
+$(OBJ)glab.c: src/gfx/drivers/gl3/glab.ec $(OBJ)glab.sym | $(SYMBOLS)
+       $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/gl3/glab.ec -o $(OBJ)glab.c -symbols $(OBJ)
+
+$(OBJ)immediate.c: src/gfx/drivers/gl3/immediate.ec $(OBJ)immediate.sym | $(SYMBOLS)
+       $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/gl3/immediate.ec -o $(OBJ)immediate.c -symbols $(OBJ)
+
+$(OBJ)matrixStack.c: src/gfx/drivers/gl3/matrixStack.ec $(OBJ)matrixStack.sym | $(SYMBOLS)
+       $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/gl3/matrixStack.ec -o $(OBJ)matrixStack.c -symbols $(OBJ)
+
+$(OBJ)shaders.c: src/gfx/drivers/gl3/shaders.ec $(OBJ)shaders.sym | $(SYMBOLS)
+       $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/gl3/shaders.ec -o $(OBJ)shaders.c -symbols $(OBJ)
+
+$(OBJ)defaultShader.c: src/gfx/drivers/gl3/defaultShader.ec $(OBJ)defaultShader.sym | $(SYMBOLS)
+       $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/gl3/defaultShader.ec -o $(OBJ)defaultShader.c -symbols $(OBJ)
+
+ifneq ($(WINDOWS_TARGET),)
 $(OBJ)Direct3D8DisplayDriver.c: src/gfx/drivers/Direct3D8DisplayDriver.ec $(OBJ)Direct3D8DisplayDriver.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/Direct3D8DisplayDriver.ec -o $(OBJ)Direct3D8DisplayDriver.c -symbols $(OBJ)
 endif
 
-ifneq "$(WINDOWS_TARGET)" ""
+ifneq ($(WINDOWS_TARGET),)
 $(OBJ)Direct3D9DisplayDriver.c: src/gfx/drivers/Direct3D9DisplayDriver.ec $(OBJ)Direct3D9DisplayDriver.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/Direct3D9DisplayDriver.ec -o $(OBJ)Direct3D9DisplayDriver.c -symbols $(OBJ)
 endif
 
-ifneq "$(WINDOWS_TARGET)" ""
+ifneq ($(WINDOWS_TARGET),)
 $(OBJ)DirectDrawDisplayDriver.c: src/gfx/drivers/DirectDrawDisplayDriver.ec $(OBJ)DirectDrawDisplayDriver.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/DirectDrawDisplayDriver.ec -o $(OBJ)DirectDrawDisplayDriver.c -symbols $(OBJ)
 endif
 
-ifneq "$(WINDOWS_TARGET)" ""
+ifneq ($(WINDOWS_TARGET),)
 $(OBJ)GDIDisplayDriver.c: src/gfx/drivers/GDIDisplayDriver.ec $(OBJ)GDIDisplayDriver.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/GDIDisplayDriver.ec -o $(OBJ)GDIDisplayDriver.c -symbols $(OBJ)
 endif
@@ -1164,7 +1220,7 @@ $(OBJ)lfbConvert.c: src/gfx/drivers/lfbConvert.ec $(OBJ)lfbConvert.sym | $(SYMBO
 $(OBJ)LFBDisplayDriver.c: src/gfx/drivers/LFBDisplayDriver.ec $(OBJ)LFBDisplayDriver.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/LFBDisplayDriver.ec -o $(OBJ)LFBDisplayDriver.c -symbols $(OBJ)
 
-ifneq "$(or $(LINUX_TARGET),$(OSX_TARGET))" ""
+ifneq ($(or $(LINUX_TARGET),$(OSX_TARGET)),)
 $(OBJ)NCursesDisplayDriver.c: src/gfx/drivers/NCursesDisplayDriver.ec $(OBJ)NCursesDisplayDriver.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/NCursesDisplayDriver.ec -o $(OBJ)NCursesDisplayDriver.c -symbols $(OBJ)
 endif
@@ -1172,27 +1228,27 @@ endif
 $(OBJ)OpenGLDisplayDriver.c: src/gfx/drivers/OpenGLDisplayDriver.ec $(OBJ)OpenGLDisplayDriver.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/OpenGLDisplayDriver.ec -o $(OBJ)OpenGLDisplayDriver.c -symbols $(OBJ)
 
-ifneq "$(WINDOWS_TARGET)" ""
+ifneq ($(WINDOWS_TARGET),)
 $(OBJ)Win32BitmapPrinterDisplayDriver.c: src/gfx/drivers/Win32BitmapPrinterDisplayDriver.ec $(OBJ)Win32BitmapPrinterDisplayDriver.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/Win32BitmapPrinterDisplayDriver.ec -o $(OBJ)Win32BitmapPrinterDisplayDriver.c -symbols $(OBJ)
 endif
 
-ifneq "$(OSX_TARGET)" ""
+ifneq ($(OSX_TARGET),)
 $(OBJ)CocoaOpenGLDisplayDriver.c: src/gfx/drivers/CocoaOpenGLDisplayDriver.ec $(OBJ)CocoaOpenGLDisplayDriver.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/CocoaOpenGLDisplayDriver.ec -o $(OBJ)CocoaOpenGLDisplayDriver.c -symbols $(OBJ)
 endif
 
-ifneq "$(WINDOWS_TARGET)" ""
+ifneq ($(WINDOWS_TARGET),)
 $(OBJ)Win32ConsoleDisplayDriver.c: src/gfx/drivers/Win32ConsoleDisplayDriver.ec $(OBJ)Win32ConsoleDisplayDriver.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/Win32ConsoleDisplayDriver.ec -o $(OBJ)Win32ConsoleDisplayDriver.c -symbols $(OBJ)
 endif
 
-ifneq "$(WINDOWS_TARGET)" ""
+ifneq ($(WINDOWS_TARGET),)
 $(OBJ)Win32PrinterDisplayDriver.c: src/gfx/drivers/Win32PrinterDisplayDriver.ec $(OBJ)Win32PrinterDisplayDriver.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/Win32PrinterDisplayDriver.ec -o $(OBJ)Win32PrinterDisplayDriver.c -symbols $(OBJ)
 endif
 
-ifneq "$(or $(LINUX_TARGET),$(OSX_TARGET))" ""
+ifneq ($(or $(LINUX_TARGET),$(OSX_TARGET)),)
 $(OBJ)XDisplayDriver.c: src/gfx/drivers/XDisplayDriver.ec $(OBJ)XDisplayDriver.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/XDisplayDriver.ec -o $(OBJ)XDisplayDriver.c -symbols $(OBJ)
 endif
@@ -1221,6 +1277,15 @@ $(OBJ)Resource.c: src/gfx/Resource.ec $(OBJ)Resource.sym | $(SYMBOLS)
 $(OBJ)Surface.c: src/gfx/Surface.ec $(OBJ)Surface.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/Surface.ec -o $(OBJ)Surface.c -symbols $(OBJ)
 
+$(OBJ)fontManagement.c: src/gfx/fontManagement.ec $(OBJ)fontManagement.sym | $(SYMBOLS)
+       $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(call quote_path,src/gfx/fontManagement.ec) -o $(call quote_path,$@) -symbols $(OBJ)
+
+$(OBJ)fontRendering.c: src/gfx/fontRendering.ec $(OBJ)fontRendering.sym | $(SYMBOLS)
+       $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(call quote_path,src/gfx/fontRendering.ec) -o $(call quote_path,$@) -symbols $(OBJ)
+
+$(OBJ)imgDistMap.c: src/gfx/imgDistMap.ec $(OBJ)imgDistMap.sym | $(SYMBOLS)
+       $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(call quote_path,src/gfx/imgDistMap.ec) -o $(call quote_path,$@) -symbols $(OBJ)
+
 $(OBJ)Button.c: src/gui/controls/Button.ec $(OBJ)Button.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gui/controls/Button.ec -o $(OBJ)Button.c -symbols $(OBJ)
 
@@ -1296,32 +1361,32 @@ $(OBJ)ReplaceDialog.c: src/gui/dialogs/ReplaceDialog.ec $(OBJ)ReplaceDialog.sym
 $(OBJ)WindowList.c: src/gui/dialogs/WindowList.ec $(OBJ)WindowList.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gui/dialogs/WindowList.ec -o $(OBJ)WindowList.c -symbols $(OBJ)
 
-ifneq "$(OSX_TARGET)" ""
+ifneq ($(OSX_TARGET),)
 $(OBJ)CocoaDispatch.c: src/gui/drivers/cocoa/CocoaDispatch.ec $(OBJ)CocoaDispatch.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gui/drivers/cocoa/CocoaDispatch.ec -o $(OBJ)CocoaDispatch.c -symbols $(OBJ)
 endif
 
-ifneq "$(OSX_TARGET)" ""
+ifneq ($(OSX_TARGET),)
 $(OBJ)CocoaInterface.c: src/gui/drivers/cocoa/CocoaInterface.ec $(OBJ)CocoaInterface.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gui/drivers/cocoa/CocoaInterface.ec -o $(OBJ)CocoaInterface.c -symbols $(OBJ)
 endif
 
-ifneq "$(or $(LINUX_TARGET),$(OSX_TARGET))" ""
+ifneq ($(or $(LINUX_TARGET),$(OSX_TARGET)),)
 $(OBJ)NCursesInterface.c: src/gui/drivers/NCursesInterface.ec $(OBJ)NCursesInterface.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gui/drivers/NCursesInterface.ec -o $(OBJ)NCursesInterface.c -symbols $(OBJ)
 endif
 
-ifneq "$(WINDOWS_TARGET)" ""
+ifneq ($(WINDOWS_TARGET),)
 $(OBJ)Win32Interface.c: src/gui/drivers/Win32Interface.ec $(OBJ)Win32Interface.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gui/drivers/Win32Interface.ec -o $(OBJ)Win32Interface.c -symbols $(OBJ)
 endif
 
-ifneq "$(WINDOWS_TARGET)" ""
+ifneq ($(WINDOWS_TARGET),)
 $(OBJ)Win32ConsoleInterface.c: src/gui/drivers/Win32ConsoleInterface.ec $(OBJ)Win32ConsoleInterface.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gui/drivers/Win32ConsoleInterface.ec -o $(OBJ)Win32ConsoleInterface.c -symbols $(OBJ)
 endif
 
-ifneq "$(or $(LINUX_TARGET),$(OSX_TARGET))" ""
+ifneq ($(or $(LINUX_TARGET),$(OSX_TARGET)),)
 $(OBJ)XInterface.c: src/gui/drivers/XInterface.ec $(OBJ)XInterface.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gui/drivers/XInterface.ec -o $(OBJ)XInterface.c -symbols $(OBJ)
 endif
@@ -1613,22 +1678,22 @@ $(OBJ)harfbuzz-impl.o: src/gfx/drivers/harfbuzz/harfbuzz-impl.c
 $(OBJ)harfbuzz-thai.o: src/gfx/drivers/harfbuzz/harfbuzz-thai.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/harfbuzz/harfbuzz-thai.c -o $(OBJ)harfbuzz-thai.o
 
-ifneq "$(WINDOWS_TARGET)" ""
+ifneq ($(WINDOWS_TARGET),)
 $(OBJ)Direct3D8DisplayDriver.o: $(OBJ)Direct3D8DisplayDriver.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c $(OBJ)Direct3D8DisplayDriver.c -o $(OBJ)Direct3D8DisplayDriver.o
 endif
 
-ifneq "$(WINDOWS_TARGET)" ""
+ifneq ($(WINDOWS_TARGET),)
 $(OBJ)Direct3D9DisplayDriver.o: $(OBJ)Direct3D9DisplayDriver.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c $(OBJ)Direct3D9DisplayDriver.c -o $(OBJ)Direct3D9DisplayDriver.o
 endif
 
-ifneq "$(WINDOWS_TARGET)" ""
+ifneq ($(WINDOWS_TARGET),)
 $(OBJ)DirectDrawDisplayDriver.o: $(OBJ)DirectDrawDisplayDriver.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c $(OBJ)DirectDrawDisplayDriver.c -o $(OBJ)DirectDrawDisplayDriver.o
 endif
 
-ifneq "$(WINDOWS_TARGET)" ""
+ifneq ($(WINDOWS_TARGET),)
 $(OBJ)GDIDisplayDriver.o: $(OBJ)GDIDisplayDriver.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c $(OBJ)GDIDisplayDriver.c -o $(OBJ)GDIDisplayDriver.o
 endif
@@ -1642,7 +1707,7 @@ $(OBJ)lfbConvert.o: $(OBJ)lfbConvert.c
 $(OBJ)LFBDisplayDriver.o: $(OBJ)LFBDisplayDriver.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c $(OBJ)LFBDisplayDriver.c -o $(OBJ)LFBDisplayDriver.o
 
-ifneq "$(or $(LINUX_TARGET),$(OSX_TARGET))" ""
+ifneq ($(or $(LINUX_TARGET),$(OSX_TARGET)),)
 $(OBJ)NCursesDisplayDriver.o: $(OBJ)NCursesDisplayDriver.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c $(OBJ)NCursesDisplayDriver.c -o $(OBJ)NCursesDisplayDriver.o
 endif
@@ -1650,27 +1715,27 @@ endif
 $(OBJ)OpenGLDisplayDriver.o: $(OBJ)OpenGLDisplayDriver.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c $(OBJ)OpenGLDisplayDriver.c -o $(OBJ)OpenGLDisplayDriver.o
 
-ifneq "$(WINDOWS_TARGET)" ""
+ifneq ($(WINDOWS_TARGET),)
 $(OBJ)Win32BitmapPrinterDisplayDriver.o: $(OBJ)Win32BitmapPrinterDisplayDriver.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c $(OBJ)Win32BitmapPrinterDisplayDriver.c -o $(OBJ)Win32BitmapPrinterDisplayDriver.o
 endif
 
-ifneq "$(OSX_TARGET)" ""
+ifneq ($(OSX_TARGET),)
 $(OBJ)CocoaOpenGLDisplayDriver.o: $(OBJ)CocoaOpenGLDisplayDriver.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c $(OBJ)CocoaOpenGLDisplayDriver.c -o $(OBJ)CocoaOpenGLDisplayDriver.o
 endif
 
-ifneq "$(WINDOWS_TARGET)" ""
+ifneq ($(WINDOWS_TARGET),)
 $(OBJ)Win32ConsoleDisplayDriver.o: $(OBJ)Win32ConsoleDisplayDriver.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c $(OBJ)Win32ConsoleDisplayDriver.c -o $(OBJ)Win32ConsoleDisplayDriver.o
 endif
 
-ifneq "$(WINDOWS_TARGET)" ""
+ifneq ($(WINDOWS_TARGET),)
 $(OBJ)Win32PrinterDisplayDriver.o: $(OBJ)Win32PrinterDisplayDriver.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c $(OBJ)Win32PrinterDisplayDriver.c -o $(OBJ)Win32PrinterDisplayDriver.o
 endif
 
-ifneq "$(or $(LINUX_TARGET),$(OSX_TARGET))" ""
+ifneq ($(or $(LINUX_TARGET),$(OSX_TARGET)),)
 $(OBJ)XDisplayDriver.o: $(OBJ)XDisplayDriver.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c $(OBJ)XDisplayDriver.c -o $(OBJ)XDisplayDriver.o
 endif
@@ -1699,6 +1764,15 @@ $(OBJ)Resource.o: $(OBJ)Resource.c
 $(OBJ)Surface.o: $(OBJ)Surface.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c $(OBJ)Surface.c -o $(OBJ)Surface.o
 
+$(OBJ)fontManagement$(O): $(OBJ)fontManagement.c
+       $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(call quote_path,$(OBJ)fontManagement.c) -o $(call quote_path,$@)
+
+$(OBJ)fontRendering$(O): $(OBJ)fontRendering.c
+       $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(call quote_path,$(OBJ)fontRendering.c) -o $(call quote_path,$@)
+
+$(OBJ)imgDistMap$(O): $(OBJ)imgDistMap.c
+       $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(call quote_path,$(OBJ)imgDistMap.c) -o $(call quote_path,$@)
+
 $(OBJ)Button.o: $(OBJ)Button.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c $(OBJ)Button.c -o $(OBJ)Button.o
 
@@ -1774,42 +1848,42 @@ $(OBJ)ReplaceDialog.o: $(OBJ)ReplaceDialog.c
 $(OBJ)WindowList.o: $(OBJ)WindowList.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c $(OBJ)WindowList.c -o $(OBJ)WindowList.o
 
-ifneq "$(OSX_TARGET)" ""
+ifneq ($(OSX_TARGET),)
 $(OBJ)CocoaDispatch.o: $(OBJ)CocoaDispatch.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c $(OBJ)CocoaDispatch.c -o $(OBJ)CocoaDispatch.o
 endif
 
-ifneq "$(OSX_TARGET)" ""
+ifneq ($(OSX_TARGET),)
 $(OBJ)CocoaEcereBridge.o: src/gui/drivers/cocoa/CocoaEcereBridge.m
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c src/gui/drivers/cocoa/CocoaEcereBridge.m -o $(OBJ)CocoaEcereBridge.o
 endif
 
-ifneq "$(OSX_TARGET)" ""
+ifneq ($(OSX_TARGET),)
 $(OBJ)CocoaInterface.o: $(OBJ)CocoaInterface.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c $(OBJ)CocoaInterface.c -o $(OBJ)CocoaInterface.o
 endif
 
-ifneq "$(OSX_TARGET)" ""
+ifneq ($(OSX_TARGET),)
 $(OBJ)EcereView.o: src/gui/drivers/cocoa/EcereView.m
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c src/gui/drivers/cocoa/EcereView.m -o $(OBJ)EcereView.o
 endif
 
-ifneq "$(or $(LINUX_TARGET),$(OSX_TARGET))" ""
+ifneq ($(or $(LINUX_TARGET),$(OSX_TARGET)),)
 $(OBJ)NCursesInterface.o: $(OBJ)NCursesInterface.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c $(OBJ)NCursesInterface.c -o $(OBJ)NCursesInterface.o
 endif
 
-ifneq "$(WINDOWS_TARGET)" ""
+ifneq ($(WINDOWS_TARGET),)
 $(OBJ)Win32Interface.o: $(OBJ)Win32Interface.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c $(OBJ)Win32Interface.c -o $(OBJ)Win32Interface.o
 endif
 
-ifneq "$(WINDOWS_TARGET)" ""
+ifneq ($(WINDOWS_TARGET),)
 $(OBJ)Win32ConsoleInterface.o: $(OBJ)Win32ConsoleInterface.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c $(OBJ)Win32ConsoleInterface.c -o $(OBJ)Win32ConsoleInterface.o
 endif
 
-ifneq "$(or $(LINUX_TARGET),$(OSX_TARGET))" ""
+ifneq ($(or $(LINUX_TARGET),$(OSX_TARGET)),)
 $(OBJ)XInterface.o: $(OBJ)XInterface.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c $(OBJ)XInterface.c -o $(OBJ)XInterface.o
 endif
@@ -1853,6 +1927,24 @@ $(OBJ)Timer.o: $(OBJ)Timer.c
 $(OBJ)typeEdit.o: $(OBJ)typeEdit.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c $(OBJ)typeEdit.c -o $(OBJ)typeEdit.o
 
+$(OBJ)gl_compat_4_4.o: src/gfx/drivers/gl3/gl_compat_4_4.c
+       $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/gl3/gl_compat_4_4.c -o $(OBJ)gl_compat_4_4.o
+
+$(OBJ)glab.o: $(OBJ)glab.c
+       $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c $(OBJ)glab.c -o $(OBJ)glab.o
+
+$(OBJ)immediate.o: $(OBJ)immediate.c
+       $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c $(OBJ)immediate.c -o $(OBJ)immediate.o
+
+$(OBJ)matrixStack.o: $(OBJ)matrixStack.c
+       $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c $(OBJ)matrixStack.c -o $(OBJ)matrixStack.o
+
+$(OBJ)shaders.o: $(OBJ)shaders.c
+       $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c $(OBJ)shaders.c -o $(OBJ)shaders.o
+
+$(OBJ)defaultShader.o: $(OBJ)defaultShader.c
+       $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c $(OBJ)defaultShader.c -o $(OBJ)defaultShader.o
+
 $(OBJ)Window.o: $(OBJ)Window.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c $(OBJ)Window.c -o $(OBJ)Window.o
 
@@ -1926,51 +2018,55 @@ $(OBJ)$(MODULE).main$(O): $(OBJ)$(MODULE).main.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c $(OBJ)$(MODULE).main.c -o $(OBJ)$(MODULE).main$(O)
 
 cleaneceretarget: objdir
-       $(call rmq,$(TARGET))
+       $(call rm,$(TARGET))
 
 cleantarget: objdir
-       $(call rmq,$(OBJ)$(MODULE).main.o $(OBJ)$(MODULE).main.c $(OBJ)$(MODULE).main.ec $(OBJ)$(MODULE).main$(I) $(OBJ)$(MODULE).main$(S))
-       $(call rmq,$(OBJ)symbols.lst)
-       $(call rmq,$(OBJ)objects.lst)
-       $(call rmq,$(TARGET))
+       $(call rm,$(OBJ)$(MODULE).main.o $(OBJ)$(MODULE).main.c $(OBJ)$(MODULE).main.ec $(OBJ)$(MODULE).main$(I) $(OBJ)$(MODULE).main$(S))
+       $(call rm,$(OBJ)symbols.lst)
+       $(call rm,$(OBJ)objects.lst)
+       $(call rm,$(TARGET))
 ifdef SHARED_LIBRARY_TARGET
 ifdef LINUX_TARGET
 ifdef LINUX_HOST
-       $(call rmq,$(OBJ)$(LP)$(MODULE)$(SO)$(basename $(VER)))
-       $(call rmq,$(OBJ)$(LP)$(MODULE)$(SO))
+       $(call rm,$(OBJ)$(LP)$(MODULE)$(SO)$(basename $(VER)))
+       $(call rm,$(OBJ)$(LP)$(MODULE)$(SO))
 endif
 endif
 endif
-       $(MAKE) -f Makefile.ecereCOM cleantarget
-       $(MAKE) -f Makefile.vanilla cleantarget
+       $(_MAKE) -f Makefile.ecereCOM cleantarget
+       $(_MAKE) -f Makefile.vanilla cleantarget
 
 clean: cleantarget
-       $(call rmq,$(_OBJECTS))
-       $(call rmq,$(ECOBJECTS1))
-       $(call rmq,$(ECOBJECTS2))
-       $(call rmq,$(ECOBJECTS3))
-       $(call rmq,$(COBJECTS1))
-       $(call rmq,$(COBJECTS2))
-       $(call rmq,$(COBJECTS3))
-       $(call rmq,$(BOWLS1))
-       $(call rmq,$(BOWLS2))
-       $(call rmq,$(BOWLS3))
-       $(call rmq,$(IMPORTS1))
-       $(call rmq,$(IMPORTS2))
-       $(call rmq,$(IMPORTS3))
-       $(call rmq,$(SYMBOLS1))
-       $(call rmq,$(SYMBOLS2))
-       $(call rmq,$(SYMBOLS3))
-       $(MAKE) -f Makefile.ecereCOM clean
-       $(MAKE) -f Makefile.vanilla clean
+       $(call rm,$(_OBJECTS))
+       $(call rm,$(ECOBJECTS1))
+       $(call rm,$(ECOBJECTS2))
+       $(call rm,$(ECOBJECTS3))
+       $(call rm,$(COBJECTS1))
+       $(call rm,$(COBJECTS2))
+       $(call rm,$(COBJECTS3))
+       $(call rm,$(BOWLS1))
+       $(call rm,$(BOWLS2))
+       $(call rm,$(BOWLS3))
+       $(call rm,$(IMPORTS1))
+       $(call rm,$(IMPORTS2))
+       $(call rm,$(IMPORTS3))
+       $(call rm,$(SYMBOLS1))
+       $(call rm,$(SYMBOLS2))
+       $(call rm,$(SYMBOLS3))
+       $(_MAKE) -f Makefile.ecereCOM clean
+       $(_MAKE) -f Makefile.vanilla clean
 
 realclean: cleantarget
-       $(call rmrq,$(OBJ))
-       $(MAKE) -f Makefile.ecereCOM realclean
-       $(MAKE) -f Makefile.vanilla realclean
+       $(call rmr,$(OBJ))
+       $(_MAKE) -f Makefile.ecereCOM realclean
+       $(_MAKE) -f Makefile.vanilla realclean
+
+distclean:
+       $(_MAKE) -f $(_CF_DIR)Cleanfile distclean distclean_all_subdirs
 
-distclean: cleantarget
-       $(call rmrq,obj/)
+Makefile: ;
+$(_CF_DIR)crossplatform.mk: ;
+$(_CF_DIR)default.cf: ;
 
 #troubleshoot:
 #      @$(call echo,OBJECTS = $(OBJECTS))