# Makefile to build the GIMP plug-ins with cygwin's make and gcc -mno-cygwin # I don't want to use many hand-written makefiles, so this is quite complex. # This same makefile is also included by sub-makes called as subroutines. # Various parts of this file are used when makeing from the plug-ins directory, # and when building individual plug-ins and the three plug-in libraries. INSTALL = install GIMP = /gimp BIN = $(GIMP)/plug-ins ifndef LIBRARY ifndef PLUGIN ifndef MODULE # This part is used when making from the plug-ins directory FROMPLUGINSDIR=YES # Used to bypass other parts below # List plug-ins. Use several lists just so that this makefile looks more like # the one used with Microsoft's nmake, which has silly limits. # The COMMON* ones are in the common subdirectory COMMON1 = CEL CML_explorer align_layers animationplay animoptimize apply_lens autocrop autostretch_hsv blinds blur bumpmap c_astretch checkerboard colorify compose convmatrix csource cubism curve_bend COMMON2 = decompose deinterlace depthmerge despeckle destripe diffraction displace edge emboss engrave exchange film flarefx fractaltrace COMMON3 = gauss_iir gauss_rle gbr gee gicon gif gifload glasstile gpb gqbist gradmap grid gtm guillotine gz header hot hrz illusion iwarp jigsaw jpeg laplace lic COMMON4 = mapcolor max_rgb mblur newsprint nlfilt noisify normalize nova oilify papertile pat pcx pix pixelize plasma plugindetails png pnm polar ps psd psp randomize ripple rotate COMMON5 = sample_colorize scatter_hsv semiflatten sharpen shift smooth_palette snoise sobel sparkle spheredesigner spread sunras tga threshold_alpha tiff tile tileit tiler video vinvert vpropagate waves whirlpinch winclipboard wind winprint wmf xbm xwd zealouscrop # These have own subdirectories each SEPARATE = AlienMap AlienMap2 FractalExplorer Lighting MapObject bmp borderaverage dbbrowser faxg3 fits flame fp gdyntext gfig gflare gfli gimpressionist ifscompose imagemap maze mosaic pagecurl rcm sel2path sgi sinus struc twain unsharp winsnap # These are unofficial, ie not in the CVS. To build these, you should # get tml's source snapshot and copy this makefile to the # ../unofficial-plug-ins directory, go there, and do "make -f # makefile.cygwin unofficial". UNOFFICIAL = Anamorphose RGB_Displace ccanalyze fuse gimp_ace guash sel_gauss user_filter # The main target all : ../config.h libs-all common-plugins-all separate-plugins-all ../config.h : ../config.h.win32 cp ../config.h.win32 ../config.h install : libs-install common-plugins-install separate-plugins-install data-install unofficial: for d in $(UNOFFICIAL); do $(MAKE) -f makefile.cygwin sub-one-separate DIR=$$d TARGET=install; done clean : libs-clean common-plugins-clean separate-plugins-clean libs-all : $(MAKE) -f makefile.cygwin sub-libs TARGET=all libs-install : $(MAKE) -f makefile.cygwin sub-libs TARGET=install libs-clean : $(MAKE) -f makefile.cygwin sub-libs TARGET=clean sub-libs: cd libgck/gck; $(MAKE) -f ../../makefile.cygwin TOP=../../.. LIBRARY=gck OBJECTS="gckcolor.o gcklistbox.o gckmath.o gckui.o gckvector.o" $(TARGET) common-plugins-all : $(MAKE) -f makefile.cygwin sub-common-plugins TARGET=all common-plugins-install : $(MAKE) -f makefile.cygwin sub-common-plugins TARGET=install common-plugins-clean : cd common; $(MAKE) -f ../makefile.cygwin LIBRARY=PLUGIN=dummy clean sub-common-plugins : for d in $(COMMON1) $(COMMON2) $(COMMON3) $(COMMON4) $(COMMON5); do $(MAKE) -f makefile.cygwin sub-one-common DIR=$$d TARGET=$(TARGET); done sub-one-common : cd common; $(MAKE) -f ../makefile.cygwin TOP=../.. PLUGIN=$(DIR) EXTRA_$(DIR)=1 $(TARGET) separate-plugins-all : $(MAKE) -f makefile.cygwin sub-separate-plugins TARGET=all separate-plugins-install : $(MAKE) -f makefile.cygwin sub-separate-plugins TARGET=install separate-plugins-clean : $(MAKE) -f makefile.cygwin sub-separate-plugins TARGET=clean sub-separate-plugins : sub-script-fu sub-gap for d in $(SEPARATE); do $(MAKE) -f makefile.cygwin sub-one-separate DIR=$$d TARGET=$(TARGET); done # We must handle script-fu separately because of the dash, sigh sub-script-fu : cd script-fu; $(MAKE) -f ../makefile.cygwin TOP=../.. PLUGIN=script-fu EXTRA_script_fu=1 $(TARGET) # Also GAP is special sub-gap : cd gap; $(MAKE) -f ../makefile.cygwin TOP=../.. PLUGIN=gap_filter EXTRA_gap_filter=1 $(TARGET) cd gap; $(MAKE) -f ../makefile.cygwin TOP=../.. PLUGIN=gap_plugins EXTRA_gap_plugins=1 $(TARGET) sub-one-separate : cd $(DIR); $(MAKE) -f ../makefile.cygwin TOP=../.. PLUGIN=$(DIR) EXTRA_$(DIR)=1 $(TARGET) data-install : gimpressionist-data-install script-fu-data-install gap-data-install guash-data-install gimpressionist-data-install : -mkdir $(GIMP)/gimpressionist $(GIMP)/gimpressionist/Brushes $(GIMP)/gimpressionist/Paper $(GIMP)/gimpressionist/Presets $(INSTALL) gimpressionist/Brushes/*.p?m $(GIMP)/gimpressionist/Brushes $(INSTALL) gimpressionist/Paper/*.p?m $(GIMP)/gimpressionist/Paper -$(INSTALL) gimpressionist/Presets/* $(GIMP)/gimpressionist/Presets -rm $(GIMP)/gimpressionist/Presets/Makefile.am script-fu-data-install: -mkdir $(GIMP)/scripts $(INSTALL) script-fu/scripts/*.scm $(GIMP)/scripts $(INSTALL) script-fu/scripts/*.jpg $(GIMP)/scripts for d in FractalExplorer/fractalexplorer-examples/*; do if [ -f $$d ]; then $(INSTALL) $$d $(GIMP)/fractalexplorer; fi; done rm $(GIMP)/fractalexplorer/Makefile.am gap-data-install: -mkdir $(GIMP)/scripts $(INSTALL) gap/*.scm $(GIMP)/scripts guash-data-install: endif # ifndef MODULE endif # ifndef PLUGIN endif # ifndef LIBRARY ifndef FROMPLUGINSDIR # This part is used when building individual plug-ins or one of # the libraries. ifdef EXTRA_FractalExplorer OBJECTS = \ Dialogs.o \ Events.o \ FractalExplorer.o \ Globals.o \ Languages.o endif ifdef EXTRA_Lighting OBJECTS = \ lighting_apply.o \ lighting_image.o \ lighting_main.o \ lighting_preview.o \ lighting_shade.o \ lighting_ui.o endif ifdef EXTRA_MapObject OBJECTS = \ arcball.o \ mapobject_apply.o \ mapobject_image.o \ mapobject_main.o \ mapobject_preview.o \ mapobject_shade.o \ mapobject_ui.o endif ifdef EXTRA_bmp OBJECTS = \ bmp.o \ bmpread.o \ bmpwrite.o endif ifdef EXTRA_dbbrowser OBJECTS = \ dbbrowser.o \ dbbrowser_utils.o endif ifdef EXTRA_faxg3 OBJECTS = \ faxg3.o \ g3.o \ run_tbl.o endif ifdef EXTRA_fits OBJECTS = \ fits.o \ fitsrw.o endif ifdef EXTRA_flame OBJECTS = \ cmap.o \ flame.o \ libifs.o \ megawidget.o \ rect.o endif ifdef EXTRA_fp OBJECTS = \ fp.o \ fp_gdk.o \ fp_gtk.o \ fp_hsv.o \ fp_misc.o endif ifdef EXTRA_gap_filter OBJECTS = \ gap_filter_main.o \ gap_dbbrowser_utils.o \ gap_filter_foreach.o \ gap_filter_iterators.o \ gap_filter_pdb.o \ gap_filter_codegen.o \ gap_arr_dialog.o \ gap_pdb_calls.o endif ifdef EXTRA_gap_plugins OBJECTS = \ gap_main.o \ gap_mov_exec.o \ gap_range_ops.o \ gap_arr_dialog.o \ gap_mov_dialog.o \ gap_layer_copy.o \ gap_split.o \ gap_resi_dialog.o \ gap_mpege.o \ gap_mod_layer.o \ gap_filter_pdb.o \ gap_filter_codegen.o \ gap_dbbrowser_utils.o \ gap_match.o \ gap_lib.o \ gap_exchange_image.o \ gap_pdb_calls.o \ resize.o endif ifdef EXTRA_gdyntext OBJECTS = \ charmap.o \ charmap_window.o \ font_selection.o \ gdyntext.o \ gdyntext_ui.o \ message_window.o endif ifdef EXTRA_gflare OBJECTS = \ asupsample.o \ gflare.o \ gtkmultioptionmenu.o endif ifdef EXTRA_gfli OBJECTS = \ fli.o \ gfli.o endif ifdef EXTRA_helpbrowser OBJECTS = \ helpbrowser.o \ queue.o endif ifdef EXTRA_ifscompose OBJECTS = \ ifscompose.o \ ifscompose_storage.o \ ifscompose_utils.o endif ifdef EXTRA_imagemap OBJECTS = \ imap_cmd_copy_object.o \ imap_about.o \ imap_browse.o \ imap_cern_lex.o \ imap_cern_parse.o \ imap_circle.o \ imap_cmd_clear.o \ imap_cmd_copy.o \ imap_cmd_create.o \ imap_cmd_cut.o \ imap_cmd_cut_object.o \ imap_cmd_delete.o \ imap_cmd_delete_point.o \ imap_cmd_edit_object.o \ imap_cmd_guides.o \ imap_cmd_insert_point.o \ imap_cmd_move.o \ imap_cmd_move_down.o \ imap_cmd_move_sash.o \ imap_cmd_move_selected.o \ imap_cmd_move_to_front.o \ imap_cmd_move_up.o \ imap_cmd_object_down.o \ imap_cmd_object_move.o \ imap_cmd_object_up.o \ imap_cmd_paste.o \ imap_cmd_select.o \ imap_cmd_select_all.o \ imap_cmd_select_next.o \ imap_cmd_select_prev.o \ imap_cmd_select_region.o \ imap_cmd_send_to_back.o \ imap_cmd_unselect.o \ imap_cmd_unselect_all.o \ imap_command.o \ imap_csim_lex.o \ imap_csim_parse.o \ imap_default_dialog.o \ imap_edit_area_info.o \ imap_file.o \ imap_grid.o \ imap_main.o \ imap_menu.o \ imap_menu_funcs.o \ imap_misc.o \ imap_mru.o \ imap_ncsa_lex.o \ imap_ncsa_parse.o \ imap_object.o \ imap_object_popup.o \ imap_polygon.o \ imap_popup.o \ imap_preferences.o \ imap_preview.o \ imap_rectangle.o \ imap_selection.o \ imap_settings.o \ imap_source.o \ imap_statusbar.o \ imap_string.o \ imap_table.o \ imap_toolbar.o \ imap_tools.o endif ifdef EXTRA_jpeg EXTRACFLAGS = -I$(JPEG) EXTRALIBS = -L $(JPEG) -ljpeg endif ifdef EXTRA_maze OBJECTS = \ algorithms.o \ handy.o \ maze.o \ maze_face.o endif ifdef EXTRA_mpeg EXTRACFLAGS = -I$(MPEG) EXTRALIBS = -L $(MPEG)/release -lmpeg endif ifdef EXTRA_png EXTRACFLAGS = -I$(PNG) -I$(ZLIB) EXTRALIBS = -L $(PNG) -lpng -L $(ZLIB) -lz endif ifdef EXTRA_print OBJECTS = \ print.o \ print-escp2.o \ print-pcl.o \ print-ps.o \ print-util.o endif ifdef EXTRA_psp EXTRACFLAGS = -I$(ZLIB) EXTRALIBS = -L $(ZLIB) -lz endif ifdef EXTRA_rcm OBJECTS = \ rcm.o \ rcm_callback.o \ rcm_dialog.o \ rcm_gdk.o \ rcm_misc.o OPTIMIZE = endif ifdef EXTRA_script_fu OBJECTS = \ interp_md5.o \ interp_regex.o \ interp_slib.o \ interp_sliba.o \ interp_trace.o \ script-fu.o \ script-fu-console.o \ script-fu-constants.o \ script-fu-scripts.o \ regex.o \ dbbrowser_utils.o EXTRACFLAGS = -DREGEX_MALLOC -I../dbbrowser HAVE_RESOURCE = YES dbbrowser_utils.c : ../dbbrowser/dbbrowser_utils.c cp $< $@ endif ifdef EXTRA_sel2path OBJECTS = \ curve.o \ edge.o \ fit.o \ math.o \ pxl-outline.o \ sel2path.o \ sel2path_adv_dialog.o \ spline.o \ vector.o endif ifdef EXTRA_sgi OBJECTS = \ sgi.o \ sgilib.o endif ifdef EXTRA_tiff EXTRACFLAGS = -I$(TIFF) EXTRALIBS = -L $(TIFF) -ltiff -L $(JPEG) -ljpeg -L $(ZLIB) -lz -luser32 endif ifdef EXTRA_unsharp OBJECTS = \ dialog_f.o \ dialog_i.o \ unsharp.o endif ifdef EXTRA_gimp_ace EXTRACFLAGS = -DGLACE_GIMP OBJECTS = \ gimp_ace.o \ glace.o \ glaceG.o endif ifdef EXTRA_gimpressionist OBJECTS = \ about.o \ brush.o \ color.o \ general.o \ gimp.o \ gimpressionist.o \ orientation.o \ orientmap.o \ paper.o \ placement.o \ plasma.o \ ppmtool.o \ presets.o \ preview.o \ repaint.o \ size.o \ sizemap.o endif ifdef EXTRA_guash HAVE_RESOURCE = YES endif ifdef EXTRA_user_filter uf_lexer.c : uf_lexer.l flex -Cem -ouf_lexer.c uf_lexer.l uf_parser.tab.c: uf_parser.y bison --defines --verbose uf_parser.y OBJECTS = \ libyywrap.o \ uf_eval.o \ uf_file.o \ uf_gui.o \ uf_lexer.o \ uf_main.o \ uf_parser.tab.o endif ifdef EXTRA_pmosaic EXTRACFLAGS = -I$(JPEG) EXTRALIBS = -L $(JPEG) -ljpeg OBJECTS = \ pmosaic.o \ pmsc.o endif ifdef EXTRA_twain OBJECTS = \ tw_func.o \ tw_util.o \ twain.o EXTRALIBS = -luser32 endif ifdef EXTRA_winsnap HAVE_RESOURCE = YES endif GIMP_VER = 1.1 GTK_VER = 1.3 GLIB_VER = 1.3 GTK = $(TOP)/../gtk+ GLIB = $(TOP)/../glib INTL = $(TOP)/../intl # Location of libpng sources PNG = $(TOP)/../libpng-1.0.3 # Location of tiff-3.4 sources TIFF = $(TOP)/../tiff-v3.4/libtiff # Location of jpeg-6b sources JPEG = $(TOP)/../jpeg-6b # and zlib ZLIB = $(TOP)/../zlib-1.1.3 # and libmpeg MPEG = $(TOP)/../mpeg_lib-1.3.0 PLUGINDIR = $(TOP)/plug-ins OPTIMIZE = -O CC = gcc $(OPTIMIZE) -mno-cygwin -mpentium -fnative-struct CFLAGS = -DHAVE_CONFIG_H $(EXTRACFLAGS) -I. -I$(TOP) -I$(PLUGINDIR) -I$(PLUGINDIR)/libgck -I$(GLIB) -I$(GTK)/gdk -I$(GTK) -I$(INTL) ifdef PLUGIN # This part is used when building individual plug-ins all : $(PLUGIN).exe install : all $(INSTALL) $(PLUGIN).exe $(BIN) ifndef OBJECTS OBJECTS = $(PLUGIN).o endif ifdef HAVE_RESOURCE # We have our own resource file (just an icon, usually) RESOURCE = $(PLUGIN)res.o else # Use the Wilber icon otherwise. If gimp.exe eventually gets more resources, # this will have to be changed. RESOURCE = ../../app/gimpres.o endif $(PLUGIN).exe : $(OBJECTS) $(RESOURCE) $(CC) $(CFLAGS) -mwindows -s -o $(PLUGIN).exe $(OBJECTS) $(RESOURCE) -L $(PLUGINDIR)/libgck/gck -lgck -L ../../libgimp -lgimp-$(GIMP_VER) -lgimpui-$(GIMP_VER) -L $(GTK)/gtk -lgtk-$(GTK_VER) -L $(GTK)/gdk -lgdk-$(GTK_VER) -L $(INTL) -lgnu-intl -L $(GLIB) -lglib-$(GLIB_VER) $(EXTRALIBS) $(LDFLAGS) # Kludge to get the path to the win32 headers WIN32APIHEADERS = $(shell echo "\#include " | $(CC) -M -E - | tail -1 | sed -e 's!/winver.h!!') $(PLUGIN)res.o : $(PLUGIN).rc windres --include-dir $(WIN32APIHEADERS) $(PLUGIN).rc $(PLUGIN)res.o endif ifdef LIBRARY # This part is used when building a library all : lib$(LIBRARY).a install : all ifndef OBJECTS OBJECTS = $(LIBRARY).o endif lib$(LIBRARY).a : $(OBJECTS) -rm $@ ar rc $@ $(OBJECTS) endif ifdef MODULE # This part is used when building a module # (This doesn't work, the only module so far is pygimp, and only Hans Breuer # builds it, with MSVC.) # Allow building libraries with specific extensions ifndef MODULE_EXT MODULE_EXT = dll endif all : $(MODULE).$(MODULE_EXT) install : all ifndef OBJECTS OBJECTS = $(MODULE).o endif $(MODULE).$(MODULE_EXT) : $(OBJECTS) $(MODULE).def $(CC) $(CFLAGS) -mwindows -s -o $@ $(OBJECTS) $(LDFLAGS) $(EXTRALIBS) -L ../../libgimp -lgimp-$(GIMP_VER) -lgimpui-$(GIMP_VER) -L $(GTK)\gtk -lgtk-$(GTK_VER) -L $(GLIB) -lgmodule-$(GLIB_VER) -lglib-$(GLIB_VER) endif .c.o : $(CC) $(CFLAGS) -c $< clean : -rm *.o *.a *.exe endif # ifndef FROMPLUGINSDIR