summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authormaxim nikonov <maxim.nikonov@hqo.co>2026-02-05 15:21:34 +0500
committermaxim nikonov <maxim.nikonov@hqo.co>2026-02-05 15:21:34 +0500
commitdb214d1145e46d527a46d1fc2519548d2c4d23f1 (patch)
treecf0fd9922e4d54f6beb63888f9b28c8e2a787bdf /Makefile
parent75fc94d6c71fe686f6dde5b41ad91cba2f6bdd6f (diff)
wip: fork
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile656
1 files changed, 656 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 000000000..8739b9460
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,656 @@
+#
+# Makefile for FLTK (Fast Light Toolkit)
+#
+# X11-only build with Cairo/Pango support.
+# No CMake, no autoconf.
+#
+# Copyright 1998-2026 by Bill Spitzak and others.
+#
+# This library is free software. Distribution and use rights are outlined in
+# the file "COPYING" which should have been included with this file.
+#
+
+#######################################################################
+# Configuration
+#######################################################################
+
+PREFIX = /usr/local
+BINDIR = $(PREFIX)/bin
+LIBDIR = $(PREFIX)/lib
+INCLUDEDIR = $(PREFIX)/include
+
+# Compiler settings
+CXX = g++
+CC = gcc
+AR = ar
+RANLIB = ranlib
+
+# Base flags
+CFLAGS = -O2 -Wall -fPIC
+CXXFLAGS = -O2 -Wall -fPIC -std=c++11
+
+# FLTK-specific defines
+DEFINES = -DFL_LIBRARY
+
+# Include directories
+# Note: -I./fluid is needed for fluid sources that use relative includes
+INCLUDES = -I. -I./src -I./jpeg -I./png -I./zlib -I./fluid
+
+# Platform detection and X11 paths
+UNAME_S := $(shell uname -s)
+ifeq ($(UNAME_S),Darwin)
+ # macOS with XQuartz
+ X11_CFLAGS = -I/opt/X11/include
+ X11_LIBS = -L/opt/X11/lib -lX11 -lXext -lXft -lXinerama -lXcursor -lXfixes -lXrender
+else
+ # Linux - use pkg-config
+ X11_CFLAGS = $(shell pkg-config --cflags x11 xext xft xinerama xcursor xfixes xrender)
+ X11_LIBS = $(shell pkg-config --libs x11 xext xft xinerama xcursor xfixes xrender)
+endif
+
+CAIRO_CFLAGS = $(shell pkg-config --cflags cairo pangocairo pango)
+CAIRO_LIBS = $(shell pkg-config --libs cairo pangocairo pango gobject-2.0)
+
+GL_CFLAGS = $(shell pkg-config --cflags gl glu)
+GL_LIBS = $(shell pkg-config --libs gl glu)
+
+# We use bundled jpeg/png/zlib, no system library needed
+PNG_LIBS =
+JPEG_LIBS =
+
+# Combined flags
+ALL_CFLAGS = $(CFLAGS) $(DEFINES) $(INCLUDES) $(X11_CFLAGS) $(CAIRO_CFLAGS)
+ALL_CXXFLAGS = $(CXXFLAGS) $(DEFINES) $(INCLUDES) $(X11_CFLAGS) $(CAIRO_CFLAGS)
+
+# Libraries for linking
+FLTK_LDLIBS = $(X11_LIBS) $(CAIRO_LIBS) -lm -ldl -lpthread
+
+#######################################################################
+# Source files for libfltk.a (core library)
+#######################################################################
+
+CORE_SRCS = \
+ src/Fl.cxx \
+ src/Fl_Adjuster.cxx \
+ src/Fl_Bitmap.cxx \
+ src/Fl_Browser.cxx \
+ src/Fl_Browser_.cxx \
+ src/Fl_Browser_load.cxx \
+ src/Fl_Box.cxx \
+ src/Fl_Button.cxx \
+ src/Fl_Cairo.cxx \
+ src/Fl_Chart.cxx \
+ src/Fl_Check_Browser.cxx \
+ src/Fl_Check_Button.cxx \
+ src/Fl_Choice.cxx \
+ src/Fl_Clock.cxx \
+ src/Fl_Color_Chooser.cxx \
+ src/Fl_Copy_Surface.cxx \
+ src/Fl_Counter.cxx \
+ src/Fl_Device.cxx \
+ src/Fl_Dial.cxx \
+ src/Fl_Double_Window.cxx \
+ src/Fl_File_Browser.cxx \
+ src/Fl_File_Chooser.cxx \
+ src/Fl_File_Chooser2.cxx \
+ src/Fl_File_Icon.cxx \
+ src/Fl_File_Input.cxx \
+ src/Fl_Flex.cxx \
+ src/Fl_Graphics_Driver.cxx \
+ src/Fl_Grid.cxx \
+ src/Fl_Group.cxx \
+ src/Fl_Help_View.cxx \
+ src/Fl_Image.cxx \
+ src/Fl_Image_Surface.cxx \
+ src/Fl_Input.cxx \
+ src/Fl_Input_.cxx \
+ src/Fl_Input_Choice.cxx \
+ src/Fl_Light_Button.cxx \
+ src/Fl_Menu.cxx \
+ src/Fl_Menu_.cxx \
+ src/Fl_Menu_Bar.cxx \
+ src/Fl_Menu_Button.cxx \
+ src/Fl_Menu_Window.cxx \
+ src/Fl_Menu_add.cxx \
+ src/Fl_Menu_global.cxx \
+ src/Fl_Message.cxx \
+ src/Fl_Multi_Label.cxx \
+ src/Fl_Native_File_Chooser.cxx \
+ src/Fl_Overlay_Window.cxx \
+ src/Fl_Pack.cxx \
+ src/Fl_Paged_Device.cxx \
+ src/Fl_Pixmap.cxx \
+ src/Fl_Positioner.cxx \
+ src/Fl_Preferences.cxx \
+ src/Fl_Printer.cxx \
+ src/Fl_Progress.cxx \
+ src/Fl_Repeat_Button.cxx \
+ src/Fl_Return_Button.cxx \
+ src/Fl_Roller.cxx \
+ src/Fl_Round_Button.cxx \
+ src/Fl_Scheme.cxx \
+ src/Fl_Scheme_Choice.cxx \
+ src/Fl_Screen_Driver.cxx \
+ src/Fl_Scroll.cxx \
+ src/Fl_Scrollbar.cxx \
+ src/Fl_Shared_Image.cxx \
+ src/Fl_Shortcut_Button.cxx \
+ src/Fl_Single_Window.cxx \
+ src/Fl_Slider.cxx \
+ src/Fl_Spinner.cxx \
+ src/Fl_Sys_Menu_Bar.cxx \
+ src/Fl_System_Driver.cxx \
+ src/Fl_Table.cxx \
+ src/Fl_Table_Row.cxx \
+ src/Fl_Tabs.cxx \
+ src/Fl_Terminal.cxx \
+ src/Fl_Text_Buffer.cxx \
+ src/Fl_Text_Display.cxx \
+ src/Fl_Text_Editor.cxx \
+ src/Fl_Tile.cxx \
+ src/Fl_Tiled_Image.cxx \
+ src/Fl_Timeout.cxx \
+ src/Fl_Tooltip.cxx \
+ src/Fl_Tree.cxx \
+ src/Fl_Tree_Item_Array.cxx \
+ src/Fl_Tree_Item.cxx \
+ src/Fl_Tree_Prefs.cxx \
+ src/Fl_Valuator.cxx \
+ src/Fl_Value_Input.cxx \
+ src/Fl_Value_Output.cxx \
+ src/Fl_Value_Slider.cxx \
+ src/Fl_Widget.cxx \
+ src/Fl_Widget_Surface.cxx \
+ src/Fl_Window.cxx \
+ src/Fl_Window_Driver.cxx \
+ src/Fl_Window_fullscreen.cxx \
+ src/Fl_Window_hotspot.cxx \
+ src/Fl_Window_iconize.cxx \
+ src/Fl_Wizard.cxx \
+ src/Fl_XBM_Image.cxx \
+ src/Fl_XPM_Image.cxx \
+ src/Fl_abort.cxx \
+ src/Fl_add_idle.cxx \
+ src/Fl_arg.cxx \
+ src/Fl_compose.cxx \
+ src/Fl_display.cxx \
+ src/Fl_get_system_colors.cxx \
+ src/Fl_grab.cxx \
+ src/Fl_lock.cxx \
+ src/Fl_own_colormap.cxx \
+ src/Fl_visual.cxx \
+ src/filename_absolute.cxx \
+ src/filename_expand.cxx \
+ src/filename_ext.cxx \
+ src/filename_isdir.cxx \
+ src/filename_list.cxx \
+ src/filename_match.cxx \
+ src/filename_setext.cxx \
+ src/fl_arc.cxx \
+ src/fl_ask.cxx \
+ src/fl_boxtype.cxx \
+ src/fl_color.cxx \
+ src/fl_contrast.cxx \
+ src/fl_cursor.cxx \
+ src/fl_curve.cxx \
+ src/fl_diamond_box.cxx \
+ src/fl_draw.cxx \
+ src/fl_draw_arrow.cxx \
+ src/fl_draw_pixmap.cxx \
+ src/fl_encoding_latin1.cxx \
+ src/fl_engraved_label.cxx \
+ src/fl_file_dir.cxx \
+ src/fl_font.cxx \
+ src/fl_gleam.cxx \
+ src/fl_gtk.cxx \
+ src/fl_labeltype.cxx \
+ src/fl_open_uri.cxx \
+ src/fl_oval_box.cxx \
+ src/fl_overlay.cxx \
+ src/fl_oxy.cxx \
+ src/fl_plastic.cxx \
+ src/fl_read_image.cxx \
+ src/fl_rect.cxx \
+ src/fl_round_box.cxx \
+ src/fl_rounded_box.cxx \
+ src/fl_set_font.cxx \
+ src/fl_scroll_area.cxx \
+ src/fl_shadow_box.cxx \
+ src/fl_shortcut.cxx \
+ src/fl_show_colormap.cxx \
+ src/fl_string_functions.cxx \
+ src/fl_symbols.cxx \
+ src/fl_utf8.cxx \
+ src/fl_vertex.cxx \
+ src/print_button.cxx \
+ src/screen_xywh.cxx
+
+# X11 driver files
+DRIVER_SRCS = \
+ src/Fl_x.cxx \
+ src/fl_dnd_x.cxx \
+ src/Fl_get_key.cxx \
+ src/Fl_Native_File_Chooser_FLTK.cxx \
+ src/Fl_Native_File_Chooser_GTK.cxx \
+ src/Fl_Native_File_Chooser_Kdialog.cxx \
+ src/Fl_Native_File_Chooser_Zenity.cxx \
+ src/drivers/Posix/Fl_Posix_Printer_Driver.cxx \
+ src/drivers/Posix/Fl_Posix_System_Driver.cxx \
+ src/drivers/Unix/Fl_Unix_Screen_Driver.cxx \
+ src/drivers/Unix/Fl_Unix_System_Driver.cxx \
+ src/drivers/X11/Fl_X11_Screen_Driver.cxx \
+ src/drivers/X11/Fl_X11_Window_Driver.cxx \
+ src/drivers/X11/fl_X11_platform_init.cxx \
+ src/drivers/Xlib/Fl_Xlib_Copy_Surface_Driver.cxx \
+ src/drivers/Xlib/Fl_Xlib_Image_Surface_Driver.cxx \
+ src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx \
+ src/drivers/Cairo/Fl_X11_Cairo_Graphics_Driver.cxx
+
+# PostScript driver
+PS_SRCS = \
+ src/drivers/PostScript/Fl_PostScript.cxx \
+ src/drivers/PostScript/Fl_PostScript_image.cxx
+
+# C source files
+CORE_C_SRCS = \
+ src/flstring.c \
+ src/numericsort.c \
+ src/vsnprintf.c \
+ src/scandir_posix.c \
+ src/xutf8/is_right2left.c \
+ src/xutf8/is_spacing.c \
+ src/xutf8/case.c \
+ src/xutf8/keysym2Ucs.c
+
+# All core sources
+LIBFLTK_SRCS = $(CORE_SRCS) $(DRIVER_SRCS) $(PS_SRCS)
+LIBFLTK_C_SRCS = $(CORE_C_SRCS)
+
+#######################################################################
+# Source files for libfltk_images.a
+#######################################################################
+
+IMG_SRCS = \
+ src/fl_images_core.cxx \
+ src/fl_write_png.cxx \
+ src/Fl_BMP_Image.cxx \
+ src/Fl_File_Icon2.cxx \
+ src/Fl_GIF_Image.cxx \
+ src/Fl_Anim_GIF_Image.cxx \
+ src/Fl_Help_Dialog.cxx \
+ src/Fl_ICO_Image.cxx \
+ src/Fl_JPEG_Image.cxx \
+ src/Fl_PNG_Image.cxx \
+ src/Fl_PNM_Image.cxx \
+ src/Fl_Image_Reader.cxx \
+ src/Fl_SVG_Image.cxx \
+ src/nanosvg.cxx \
+ src/drivers/SVG/Fl_SVG_File_Surface.cxx
+
+#######################################################################
+# Source files for libfltk_forms.a
+#######################################################################
+
+FORMS_SRCS = \
+ src/forms_compatibility.cxx \
+ src/forms_bitmap.cxx \
+ src/forms_free.cxx \
+ src/forms_fselect.cxx \
+ src/forms_pixmap.cxx \
+ src/forms_timer.cxx
+
+#######################################################################
+# Source files for libfltk_gl.a
+#######################################################################
+
+GL_SRCS = \
+ src/Fl_Gl_Choice.cxx \
+ src/Fl_Gl_Device_Plugin.cxx \
+ src/Fl_Gl_Overlay.cxx \
+ src/Fl_Gl_Window.cxx \
+ src/freeglut_geometry.cxx \
+ src/freeglut_stroke_mono_roman.cxx \
+ src/freeglut_stroke_roman.cxx \
+ src/freeglut_teapot.cxx \
+ src/gl_draw.cxx \
+ src/gl_start.cxx \
+ src/glut_compatibility.cxx \
+ src/glut_font.cxx \
+ src/drivers/OpenGL/Fl_OpenGL_Display_Device.cxx \
+ src/drivers/OpenGL/Fl_OpenGL_Graphics_Driver_arci.cxx \
+ src/drivers/OpenGL/Fl_OpenGL_Graphics_Driver_color.cxx \
+ src/drivers/OpenGL/Fl_OpenGL_Graphics_Driver_font.cxx \
+ src/drivers/OpenGL/Fl_OpenGL_Graphics_Driver_line_style.cxx \
+ src/drivers/OpenGL/Fl_OpenGL_Graphics_Driver_rect.cxx \
+ src/drivers/OpenGL/Fl_OpenGL_Graphics_Driver_vertex.cxx \
+ src/drivers/X11/Fl_X11_Gl_Window_Driver.cxx
+
+#######################################################################
+# Source files for fluid
+#######################################################################
+
+FLUID_SRCS = \
+ fluid/main.cxx \
+ fluid/Fluid.cxx \
+ fluid/Project.cxx \
+ fluid/app/args.cxx \
+ fluid/app/Snap_Action.cxx \
+ fluid/app/Image_Asset.cxx \
+ fluid/app/history.cxx \
+ fluid/app/Menu.cxx \
+ fluid/app/shell_command.cxx \
+ fluid/app/templates.cxx \
+ fluid/io/Code_Writer.cxx \
+ fluid/io/Project_Writer.cxx \
+ fluid/io/Project_Reader.cxx \
+ fluid/io/String_Writer.cxx \
+ fluid/nodes/Tree.cxx \
+ fluid/nodes/Button_Node.cxx \
+ fluid/nodes/Function_Node.cxx \
+ fluid/nodes/Grid_Node.cxx \
+ fluid/nodes/Group_Node.cxx \
+ fluid/nodes/Menu_Node.cxx \
+ fluid/nodes/Node.cxx \
+ fluid/nodes/Widget_Node.cxx \
+ fluid/nodes/Window_Node.cxx \
+ fluid/nodes/callbacks.cxx \
+ fluid/nodes/factory.cxx \
+ fluid/panels/about_panel.cxx \
+ fluid/panels/codeview_panel.cxx \
+ fluid/panels/function_panel.cxx \
+ fluid/panels/settings_panel.cxx \
+ fluid/panels/template_panel.cxx \
+ fluid/panels/widget_panel.cxx \
+ fluid/panels/widget_panel/Grid_Tab.cxx \
+ fluid/panels/widget_panel/Grid_Child_Tab.cxx \
+ fluid/proj/align_widget.cxx \
+ fluid/proj/i18n.cxx \
+ fluid/proj/mergeback.cxx \
+ fluid/proj/undo.cxx \
+ fluid/rsrcs/pixmaps.cxx \
+ fluid/tools/ExternalCodeEditor_UNIX.cxx \
+ fluid/tools/autodoc.cxx \
+ fluid/tools/filename.cxx \
+ fluid/widgets/App_Menu_Bar.cxx \
+ fluid/widgets/Code_Editor.cxx \
+ fluid/widgets/Code_Viewer.cxx \
+ fluid/widgets/Text_Viewer.cxx \
+ fluid/widgets/Formula_Input.cxx \
+ fluid/widgets/Bin_Button.cxx \
+ fluid/widgets/Style_Parser.cxx \
+ fluid/widgets/Node_Browser.cxx
+
+#######################################################################
+# Bundled libraries source files
+#######################################################################
+
+JPEG_SRCS = \
+ jpeg/jaricom.c \
+ jpeg/jcapimin.c \
+ jpeg/jcapistd.c \
+ jpeg/jcarith.c \
+ jpeg/jccoefct.c \
+ jpeg/jccolor.c \
+ jpeg/jcdctmgr.c \
+ jpeg/jchuff.c \
+ jpeg/jcinit.c \
+ jpeg/jcmainct.c \
+ jpeg/jcmarker.c \
+ jpeg/jcmaster.c \
+ jpeg/jcomapi.c \
+ jpeg/jcparam.c \
+ jpeg/jcprepct.c \
+ jpeg/jcsample.c \
+ jpeg/jctrans.c \
+ jpeg/jdapimin.c \
+ jpeg/jdapistd.c \
+ jpeg/jdarith.c \
+ jpeg/jdatadst.c \
+ jpeg/jdatasrc.c \
+ jpeg/jdcoefct.c \
+ jpeg/jdcolor.c \
+ jpeg/jddctmgr.c \
+ jpeg/jdhuff.c \
+ jpeg/jdinput.c \
+ jpeg/jdmainct.c \
+ jpeg/jdmarker.c \
+ jpeg/jdmaster.c \
+ jpeg/jdmerge.c \
+ jpeg/jdpostct.c \
+ jpeg/jdsample.c \
+ jpeg/jdtrans.c \
+ jpeg/jerror.c \
+ jpeg/jfdctflt.c \
+ jpeg/jfdctfst.c \
+ jpeg/jfdctint.c \
+ jpeg/jidctflt.c \
+ jpeg/jidctfst.c \
+ jpeg/jidctint.c \
+ jpeg/jmemmgr.c \
+ jpeg/jmemnobs.c \
+ jpeg/jquant1.c \
+ jpeg/jquant2.c \
+ jpeg/jutils.c
+
+PNG_SRCS = \
+ png/png.c \
+ png/pngerror.c \
+ png/pngget.c \
+ png/pngmem.c \
+ png/pngpread.c \
+ png/pngread.c \
+ png/pngrio.c \
+ png/pngrtran.c \
+ png/pngrutil.c \
+ png/pngset.c \
+ png/pngtrans.c \
+ png/pngwio.c \
+ png/pngwrite.c \
+ png/pngwtran.c \
+ png/pngwutil.c \
+ png/arm/arm_init.c \
+ png/arm/filter_neon_intrinsics.c \
+ png/arm/palette_neon_intrinsics.c
+
+ZLIB_SRCS = \
+ zlib/adler32.c \
+ zlib/compress.c \
+ zlib/crc32.c \
+ zlib/deflate.c \
+ zlib/gzclose.c \
+ zlib/gzlib.c \
+ zlib/gzread.c \
+ zlib/gzwrite.c \
+ zlib/infback.c \
+ zlib/inffast.c \
+ zlib/inflate.c \
+ zlib/inftrees.c \
+ zlib/trees.c \
+ zlib/uncompr.c \
+ zlib/zutil.c
+
+#######################################################################
+# Object files
+#######################################################################
+
+LIBFLTK_OBJS = $(LIBFLTK_SRCS:.cxx=.o)
+LIBFLTK_C_OBJS = $(LIBFLTK_C_SRCS:.c=.o)
+IMG_OBJS = $(IMG_SRCS:.cxx=.o)
+FORMS_OBJS = $(FORMS_SRCS:.cxx=.o)
+GL_OBJS = $(GL_SRCS:.cxx=.o)
+FLUID_OBJS = $(FLUID_SRCS:.cxx=.o)
+
+JPEG_OBJS = $(JPEG_SRCS:.c=.o)
+PNG_OBJS = $(PNG_SRCS:.c=.o)
+ZLIB_OBJS = $(ZLIB_SRCS:.c=.o)
+
+#######################################################################
+# Targets
+#######################################################################
+
+.PHONY: all clean install libs fluid
+
+all: libs fluid
+
+libs: lib/libfltk.a lib/libfltk_images.a lib/libfltk_forms.a lib/libfltk_gl.a \
+ lib/libfltk_jpeg.a lib/libfltk_png.a lib/libfltk_z.a
+
+fluid: bin/fluid
+
+#######################################################################
+# Directory creation
+#######################################################################
+
+lib:
+ mkdir -p lib
+
+bin:
+ mkdir -p bin
+
+#######################################################################
+# Core library
+#######################################################################
+
+lib/libfltk.a: lib $(LIBFLTK_OBJS) $(LIBFLTK_C_OBJS)
+ $(AR) rcs $@ $(LIBFLTK_OBJS) $(LIBFLTK_C_OBJS)
+ $(RANLIB) $@
+
+#######################################################################
+# Image library
+#######################################################################
+
+lib/libfltk_images.a: lib $(IMG_OBJS)
+ $(AR) rcs $@ $(IMG_OBJS)
+ $(RANLIB) $@
+
+#######################################################################
+# Forms library
+#######################################################################
+
+lib/libfltk_forms.a: lib $(FORMS_OBJS)
+ $(AR) rcs $@ $(FORMS_OBJS)
+ $(RANLIB) $@
+
+#######################################################################
+# OpenGL library
+#######################################################################
+
+lib/libfltk_gl.a: lib $(GL_OBJS)
+ $(AR) rcs $@ $(GL_OBJS)
+ $(RANLIB) $@
+
+#######################################################################
+# Bundled JPEG library
+#######################################################################
+
+lib/libfltk_jpeg.a: lib $(JPEG_OBJS)
+ $(AR) rcs $@ $(JPEG_OBJS)
+ $(RANLIB) $@
+
+#######################################################################
+# Bundled PNG library
+#######################################################################
+
+lib/libfltk_png.a: lib $(PNG_OBJS)
+ $(AR) rcs $@ $(PNG_OBJS)
+ $(RANLIB) $@
+
+#######################################################################
+# Bundled zlib library
+#######################################################################
+
+lib/libfltk_z.a: lib $(ZLIB_OBJS)
+ $(AR) rcs $@ $(ZLIB_OBJS)
+ $(RANLIB) $@
+
+#######################################################################
+# Fluid executable
+#######################################################################
+
+bin/fluid: bin lib/libfltk.a lib/libfltk_images.a $(FLUID_OBJS)
+ $(CXX) $(CXXFLAGS) -o $@ $(FLUID_OBJS) \
+ -Llib -lfltk_images -lfltk -lfltk_jpeg -lfltk_png -lfltk_z \
+ $(FLTK_LDLIBS) $(PNG_LIBS) $(JPEG_LIBS)
+
+#######################################################################
+# Compilation rules
+#######################################################################
+
+# C++ files
+%.o: %.cxx
+ $(CXX) $(ALL_CXXFLAGS) -c -o $@ $<
+
+# C files
+%.o: %.c
+ $(CC) $(ALL_CFLAGS) -c -o $@ $<
+
+# FLUID include flags
+FLUID_CXXFLAGS = $(ALL_CXXFLAGS) -I./fluid
+
+# Special rules for fluid sources (need fluid include path)
+# Pattern rules don't match subdirectories, so we need explicit rules
+fluid/%.o: fluid/%.cxx
+ $(CXX) $(FLUID_CXXFLAGS) -c -o $@ $<
+
+fluid/app/%.o: fluid/app/%.cxx
+ $(CXX) $(FLUID_CXXFLAGS) -c -o $@ $<
+
+fluid/io/%.o: fluid/io/%.cxx
+ $(CXX) $(FLUID_CXXFLAGS) -c -o $@ $<
+
+fluid/nodes/%.o: fluid/nodes/%.cxx
+ $(CXX) $(FLUID_CXXFLAGS) -c -o $@ $<
+
+fluid/panels/%.o: fluid/panels/%.cxx
+ $(CXX) $(FLUID_CXXFLAGS) -c -o $@ $<
+
+fluid/panels/widget_panel/%.o: fluid/panels/widget_panel/%.cxx
+ $(CXX) $(FLUID_CXXFLAGS) -c -o $@ $<
+
+fluid/proj/%.o: fluid/proj/%.cxx
+ $(CXX) $(FLUID_CXXFLAGS) -c -o $@ $<
+
+fluid/rsrcs/%.o: fluid/rsrcs/%.cxx
+ $(CXX) $(FLUID_CXXFLAGS) -c -o $@ $<
+
+fluid/tools/%.o: fluid/tools/%.cxx
+ $(CXX) $(FLUID_CXXFLAGS) -c -o $@ $<
+
+fluid/widgets/%.o: fluid/widgets/%.cxx
+ $(CXX) $(FLUID_CXXFLAGS) -c -o $@ $<
+
+# Special rule for jpeg (needs its own include path)
+jpeg/%.o: jpeg/%.c
+ $(CC) $(CFLAGS) -I./jpeg -c -o $@ $<
+
+# Special rule for png (needs zlib include path)
+png/%.o: png/%.c
+ $(CC) $(CFLAGS) -I./png -I./zlib -c -o $@ $<
+
+# Special rule for zlib
+zlib/%.o: zlib/%.c
+ $(CC) $(CFLAGS) -I./zlib -c -o $@ $<
+
+#######################################################################
+# Clean
+#######################################################################
+
+clean:
+ rm -f $(LIBFLTK_OBJS) $(LIBFLTK_C_OBJS)
+ rm -f $(IMG_OBJS) $(FORMS_OBJS) $(GL_OBJS)
+ rm -f $(FLUID_OBJS)
+ rm -f $(JPEG_OBJS) $(PNG_OBJS) $(ZLIB_OBJS)
+ rm -f lib/*.a
+ rm -f bin/fluid
+
+#######################################################################
+# Install
+#######################################################################
+
+install: all
+ mkdir -p $(DESTDIR)$(LIBDIR)
+ mkdir -p $(DESTDIR)$(INCLUDEDIR)/FL
+ mkdir -p $(DESTDIR)$(BINDIR)
+ cp lib/*.a $(DESTDIR)$(LIBDIR)/
+ cp FL/*.H FL/*.h $(DESTDIR)$(INCLUDEDIR)/FL/
+ cp bin/fluid $(DESTDIR)$(BINDIR)/