# # 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 # Set USE_BUNDLED_X11=1 to use headers from xlibs/include (run xlibs/fetch_headers.sh first) USE_BUNDLED_X11 ?= 0 # Cairo rendering option # Set USE_CAIRO=0 for pure Xlib+Xft rendering (no Cairo/Pango dependency) # Set USE_CAIRO=1 (default) for Cairo+Pango rendering USE_CAIRO ?= 1 UNAME_S := $(shell uname -s) ifeq ($(USE_BUNDLED_X11),1) # Use bundled X11 headers, still link system libraries X11_CFLAGS = -I./xlibs/include ifeq ($(UNAME_S),Darwin) X11_LIBS = -L/opt/X11/lib -lX11 -lXext -lXft -lXinerama -lXcursor -lXfixes -lXrender else X11_CFLAGS += $(shell pkg-config --cflags freetype2 fontconfig) X11_LIBS = $(shell pkg-config --libs x11 xext xft xinerama xcursor xfixes xrender freetype2 fontconfig) endif else ifeq ($(UNAME_S),Darwin) # macOS with XQuartz (include freetype2 for Xft) X11_CFLAGS = -I/opt/X11/include -I/opt/X11/include/freetype2 X11_LIBS = -L/opt/X11/lib -lX11 -lXext -lXft -lXinerama -lXcursor -lXfixes -lXrender -lfontconfig -lfreetype else # Linux - use pkg-config (include freetype2 for Xft) X11_CFLAGS = $(shell pkg-config --cflags x11 xext xft xinerama xcursor xfixes xrender freetype2 fontconfig) X11_LIBS = $(shell pkg-config --libs x11 xext xft xinerama xcursor xfixes xrender freetype2 fontconfig) endif # Cairo/Pango configuration (only when USE_CAIRO=1) ifeq ($(USE_CAIRO),1) CAIRO_CFLAGS = $(shell pkg-config --cflags cairo pangocairo pango) CAIRO_LIBS = $(shell pkg-config --libs cairo pangocairo pango gobject-2.0) CAIRO_DEFINES = -DFLTK_USE_CAIRO=1 -DFLTK_HAVE_CAIRO=1 -DUSE_PANGO=1 else CAIRO_CFLAGS = CAIRO_LIBS = CAIRO_DEFINES = -DFLTK_USE_CAIRO=0 -DFLTK_HAVE_CAIRO=0 -DUSE_PANGO=0 endif # OpenGL configuration (separate from X11 bundling) ifeq ($(UNAME_S),Darwin) # macOS uses XQuartz GL - always need system GL headers GL_CFLAGS = -I/opt/X11/include GL_LIBS = -L/opt/X11/lib -lGL -lGLU else GL_CFLAGS = $(shell pkg-config --cflags gl glu 2>/dev/null) GL_LIBS = $(shell pkg-config --libs gl glu 2>/dev/null) endif # When using bundled X11 headers, still need system GL headers ifeq ($(USE_BUNDLED_X11),1) X11_CFLAGS += $(GL_CFLAGS) endif # 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) $(CAIRO_DEFINES) ALL_CXXFLAGS = $(CXXFLAGS) $(DEFINES) $(INCLUDES) $(X11_CFLAGS) $(CAIRO_CFLAGS) $(CAIRO_DEFINES) # 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 (common) DRIVER_SRCS_COMMON = \ 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 # Cairo graphics driver (USE_CAIRO=1) DRIVER_SRCS_CAIRO = \ src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx \ src/drivers/Cairo/Fl_X11_Cairo_Graphics_Driver.cxx # Xlib graphics driver (USE_CAIRO=0) - pure Xlib+Xft rendering DRIVER_SRCS_XLIB = \ src/drivers/Xlib/Fl_Xlib_Graphics_Driver.cxx \ src/drivers/Xlib/Fl_Xlib_Graphics_Driver_arci.cxx \ src/drivers/Xlib/Fl_Xlib_Graphics_Driver_color.cxx \ src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx \ src/drivers/Xlib/Fl_Xlib_Graphics_Driver_image.cxx \ src/drivers/Xlib/Fl_Xlib_Graphics_Driver_line_style.cxx \ src/drivers/Xlib/Fl_Xlib_Graphics_Driver_rect.cxx \ src/drivers/Xlib/Fl_Xlib_Graphics_Driver_vertex.cxx # Select driver based on USE_CAIRO ifeq ($(USE_CAIRO),1) DRIVER_SRCS = $(DRIVER_SRCS_COMMON) $(DRIVER_SRCS_CAIRO) else DRIVER_SRCS = $(DRIVER_SRCS_COMMON) $(DRIVER_SRCS_XLIB) endif # 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)/