# Makefile to build the GIMP plug-ins with Microsoft nmake and compiler # 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 = copy # This is what I use as installation target, from where the installer-builder # will pick it up. GIMP = C:\install\gimp BIN = $(GIMP)\plug-ins !IFNDEF GIMPTOP GIMPTOP = .. !ENDIF TOP = ..\$(GIMPTOP) !INCLUDE $(TOP)\glib\build\win32\make.msc !INCLUDE $(GIMPTOP)\gimpdefs.msc !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. We must use several lists to work around nmake's limits # The COMMON* ones are in the common subdirectory COMMON1 = AlienMap AlienMap2 ccanalyze CEL CML_explorer align_layers animationplay animoptimize apply_lens autocrop autostretch_hsv blinds blur borderaverage bumpmap c_astretch checkerboard color_enhance colorify colortoalpha 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 gee_zoom gicon gif gifload gih glasstile 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 psd_save psp randomize ripple rotate COMMON5 = sample_colorize scatter_hsv semiflatten sharpen shift sinus smooth_palette snoise sobel sparkle spheredesigner spread struc sunras svg tga threshold_alpha tiff tile tileit tiler uniteditor unsharp video vinvert vpropagate COMMON6 = warp waves whirlpinch winclipboard wind winprint wiredebug wmf xbm xwd zealouscrop # These have own subdirectories each SEPARATE = FractalExplorer Lighting MapObject bmp dbbrowser faxg3 fits flame fp gfig gflare gfli gimpressionist helpbrowser ifscompose imagemap maze mosaic pagecurl rcm sel2path sgi twain webbrowser winsnap xjt # 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 "nmake -f # makefile.msc unofficial". UNOFFICIAL = Anamorphose DigitalSignature RGB_Displace gimp_ace guash sel_gauss magiceye psd_save user_filter # The main target all : ..\config.h libs-all common-plugins-all separate-plugins-all ..\config.h : ..\config.h.win32 copy ..\config.h.win32 ..\config.h install : libs-install common-plugins-install separate-plugins-install data-install unofficial: for %d in ($(UNOFFICIAL)) do nmake -nologo -f makefile.msc sub-one-separate DIR=%d TARGET=install clean :: libs-clean common-plugins-clean separate-plugins-clean libs-all : @nmake -nologo -f makefile.msc sub-libs TARGET=all libs-install : @nmake -nologo -f makefile.msc sub-libs TARGET=install libs-clean : @nmake -nologo -f makefile.msc sub-libs TARGET=clean sub-libs: cd libgimpoldpreview nmake -nologo -f ..\makefile.msc GIMPTOP=..\.. LIBRARY=gimpoldpreview OBJECTS="gimpoldpreview.obj" $(TARGET) cd .. cd script-fu\siod nmake -nologo -f ..\..\makefile.msc GIMPTOP=..\..\.. LIBRARY=siod OBJECTS="trace.obj slib.obj sliba.obj regex.obj" $(TARGET) cd ..\.. common-plugins-all : @nmake -nologo -f makefile.msc sub-common-plugins TARGET=all common-plugins-install : @nmake -nologo -f makefile.msc sub-common-plugins TARGET=install common-plugins-clean : @nmake -nologo -f makefile.msc sub-common-plugins TARGET=clean sub-common-plugins : for %d in ($(COMMON1)) do nmake -nologo -f makefile.msc sub-one-common DIR=%d TARGET=$(TARGET) for %d in ($(COMMON2)) do nmake -nologo -f makefile.msc sub-one-common DIR=%d TARGET=$(TARGET) for %d in ($(COMMON3)) do nmake -nologo -f makefile.msc sub-one-common DIR=%d TARGET=$(TARGET) for %d in ($(COMMON4)) do nmake -nologo -f makefile.msc sub-one-common DIR=%d TARGET=$(TARGET) for %d in ($(COMMON5)) do nmake -nologo -f makefile.msc sub-one-common DIR=%d TARGET=$(TARGET) for %d in ($(COMMON6)) do nmake -nologo -f makefile.msc sub-one-common DIR=%d TARGET=$(TARGET) sub-one-common : @cd common @nmake -nologo -f ..\makefile.msc GIMPTOP=..\.. PLUGIN=$(DIR) EXTRA_$(DIR)=1 $(TARGET) separate-plugins-all : @nmake -nologo -f makefile.msc sub-separate-plugins TARGET=all separate-plugins-install : @nmake -nologo -f makefile.msc sub-separate-plugins TARGET=install separate-plugins-clean : @nmake -nologo -f makefile.msc sub-separate-plugins TARGET=clean sub-separate-plugins : for %d in ($(SEPARATE)) do nmake -nologo -f makefile.msc sub-one-separate DIR=%d TARGET=$(TARGET) # We must handle script-fu separately because of the dash, sigh @cd script-fu @nmake -nologo -f ..\makefile.msc GIMPTOP=..\.. PLUGIN=script-fu EXTRA_script_fu=1 $(TARGET) @cd .. sub-one-separate : cd $(DIR) nmake -nologo -f ..\makefile.msc GIMPTOP=..\.. PLUGIN=$(DIR) EXTRA_$(DIR)=1 $(TARGET) data-install : gimpressionist-data-install guash-data-install -md $(GIMP)\scripts $(INSTALL) script-fu\scripts\*.scm $(GIMP)\scripts $(INSTALL) script-fu\scripts\*.jpg $(GIMP)\scripts $(INSTALL) FractalExplorer\fractalexplorer-examples\* $(GIMP)\fractalexplorer del $(GIMP)\fractalexplorer\Makefile.am gimpressionist-data-install : -md $(GIMP)\gimpressionist -md $(GIMP)\gimpressionist\Brushes -md $(GIMP)\gimpressionist\Paper -md $(GIMP)\gimpressionist\Presets $(INSTALL) gimpressionist\Brushes\*.pgm $(GIMP)\gimpressionist\Brushes $(INSTALL) gimpressionist\Brushes\*.ppm $(GIMP)\gimpressionist\Brushes $(INSTALL) gimpressionist\Paper\*.pgm $(GIMP)\gimpressionist\Paper $(INSTALL) gimpressionist\Presets\* $(GIMP)\gimpressionist\Presets del $(GIMP)\gimpressionist\Presets\Makefile.am guash-data-install : !ENDIF !ENDIF !ENDIF !IFNDEF FROMPLUGINSDIR # This part is used when building individual plug-ins or one of # the libraries. # If a plug-in has several object files, or needs extra libraries or # compiler flags, these are in an EXTRA_xxx part. !IFDEF EXTRA_FractalExplorer OBJECTS = \ Dialogs.obj \ FractalExplorer.obj !ENDIF !IFDEF EXTRA_Lighting OBJECTS = \ lighting_apply.obj \ lighting_image.obj \ lighting_main.obj \ lighting_preview.obj \ lighting_shade.obj \ lighting_ui.obj !ENDIF !IFDEF EXTRA_MapObject OBJECTS = \ arcball.obj \ mapobject_apply.obj \ mapobject_image.obj \ mapobject_main.obj \ mapobject_preview.obj \ mapobject_shade.obj \ mapobject_ui.obj OPTIMIZE = !ENDIF !IFDEF EXTRA_bmp OBJECTS = \ bmp.obj \ bmpread.obj \ bmpwrite.obj !ENDIF !IFDEF EXTRA_dbbrowser OBJECTS = \ dbbrowser.obj \ dbbrowser_utils.obj !ENDIF !IFDEF EXTRA_faxg3 OBJECTS = \ faxg3.obj \ g3.obj \ run_tbl.obj !ENDIF !IFDEF EXTRA_fits OBJECTS = \ fits.obj \ fitsrw.obj !ENDIF !IFDEF EXTRA_flame OBJECTS = \ cmap.obj \ flame.obj \ libifs.obj \ rect.obj !ENDIF !IFDEF EXTRA_fp OBJECTS = \ fp.obj \ fp_gdk.obj \ fp_gtk.obj \ fp_misc.obj !ENDIF !IFDEF EXTRA_gfli OBJECTS = \ fli.obj \ gfli.obj !ENDIF !IFDEF EXTRA_gfig STOCK_VARS = \ stock_bezier images/stock-bezier.png \ stock_circle images/stock-circle.png \ stock_copy_object images/stock-copy-object.png \ stock_curve images/stock-curve.png \ stock_delete_object images/stock-delete-object.png \ stock_ellipse images/stock-ellipse.png \ stock_line images/stock-line.png \ stock_move_object images/stock-move-object.png \ stock_move_point images/stock-move-point.png \ stock_polygon images/stock-polygon.png \ stock_spiral images/stock-spiral.png \ stock_star images/stock-star.png \ stock_logo images/stock-logo.png STOCK_IMAGES = \ images/stock-bezier.png \ images/stock-circle.png \ images/stock-copy-object.png \ images/stock-curve.png \ images/stock-delete-object.png \ images/stock-ellipse.png \ images/stock-line.png \ images/stock-move-object.png \ images/stock-move-point.png \ images/stock-polygon.png \ images/stock-spiral.png \ images/stock-star.png \ images/stock-logo.png images/gfig-stock-pixbufs.h: $(STOCK_IMAGES) gdk-pixbuf-csource --rle --build-list $(STOCK_VARS) > images/gfig-stock-pixbufs.h EXTRA_DEPS = images/gfig-stock-pixbufs.h OBJECTS = \ gfig.obj \ gfig-arc.obj \ gfig-bezier.obj \ gfig-circle.obj \ gfig-dobject.obj \ gfig-ellipse.obj \ gfig-grid.obj \ gfig-line.obj \ gfig-poly.obj \ gfig-preview.obj \ gfig-spiral.obj \ gfig-star.obj \ gfig-stock.obj !ENDIF !IFDEF EXTRA_ifscompose OBJECTS = \ ifscompose.obj \ ifscompose_storage.obj \ ifscompose_utils.obj !ENDIF !IFDEF EXTRA_imagemap OBJECTS = \ imap_cmd_copy_object.obj \ imap_about.obj \ imap_browse.obj \ imap_cern_lex.obj \ imap_cern_parse.obj \ imap_circle.obj \ imap_cmd_clear.obj \ imap_cmd_copy.obj \ imap_cmd_create.obj \ imap_cmd_cut.obj \ imap_cmd_cut_object.obj \ imap_cmd_delete.obj \ imap_cmd_delete_point.obj \ imap_cmd_edit_object.obj \ imap_cmd_gimp_guides.obj \ imap_cmd_guides.obj \ imap_cmd_insert_point.obj \ imap_cmd_move.obj \ imap_cmd_move_down.obj \ imap_cmd_move_sash.obj \ imap_cmd_move_selected.obj \ imap_cmd_move_to_front.obj \ imap_cmd_move_up.obj \ imap_cmd_object_down.obj \ imap_cmd_object_move.obj \ imap_cmd_object_up.obj \ imap_cmd_paste.obj \ imap_cmd_select.obj \ imap_cmd_select_all.obj \ imap_cmd_select_next.obj \ imap_cmd_select_prev.obj \ imap_cmd_select_region.obj \ imap_cmd_send_to_back.obj \ imap_cmd_unselect.obj \ imap_cmd_unselect_all.obj \ imap_command.obj \ imap_csim_lex.obj \ imap_csim_parse.obj \ imap_default_dialog.obj \ imap_edit_area_info.obj \ imap_file.obj \ imap_grid.obj \ imap_main.obj \ imap_menu.obj \ imap_menu_funcs.obj \ imap_misc.obj \ imap_mru.obj \ imap_ncsa_lex.obj \ imap_ncsa_parse.obj \ imap_object.obj \ imap_object_popup.obj \ imap_polygon.obj \ imap_popup.obj \ imap_preferences.obj \ imap_preview.obj \ imap_rectangle.obj \ imap_selection.obj \ imap_settings.obj \ imap_source.obj \ imap_statusbar.obj \ imap_stock.obj \ imap_string.obj \ imap_table.obj \ imap_toolbar.obj \ imap_tools.obj # not changing the source which is lexed EXTRACFLAGS = -FIstring.h -FIstdlib.h !ENDIF !IFDEF EXTRA_iwarp OPTIMIZE = !ENDIF !IFDEF EXTRA_jpeg EXTRACFLAGS = -I$(JPEG) EXTRALIBS = $(JPEG)\libjpeg.lib !ENDIF !IFDEF EXTRA_maze OBJECTS = \ algorithms.obj \ handy.obj \ maze.obj \ maze_face.obj !ENDIF !IFDEF EXTRA_mpeg EXTRACFLAGS = -I$(MPEG) EXTRALIBS = $(MPEG)\release\libmpeg.lib !ENDIF !IFDEF EXTRA_png EXTRACFLAGS = -I$(PNG) -I$(ZLIB) EXTRALIBS = $(PNG)\libpng.lib $(ZLIB)\zlib.lib !ENDIF !IFDEF EXTRA_print OBJECTS = \ print.obj \ print-escp2.obj \ print-pcl.obj \ print-ps.obj \ print-util.obj !ENDIF !IFDEF EXTRA_psp EXTRACFLAGS = -I$(ZLIB) EXTRALIBS = $(ZLIB)\zlib.lib user32.lib !ENDIF !IFDEF EXTRA_rcm OBJECTS = \ rcm.obj \ rcm_callback.obj \ rcm_dialog.obj \ rcm_gdk.obj \ rcm_misc.obj OPTIMIZE = !ENDIF !IFDEF EXTRA_script_fu OBJECTS = \ siod-wrapper.obj \ script-fu.obj \ script-fu-console.obj \ script-fu-constants.obj \ script-fu-scripts.obj \ script-fu-text-console.obj \ ..\dbbrowser\dbbrowser_utils.obj EXTRALIBS = ..\..\regexrepl\regexrepl.lib siod\siod.lib kernel32.lib EXTRACFLAGS = -DREGEX_MALLOC HAVE_RESOURCE = YES !ENDIF !IFDEF EXTRA_sel2path OBJECTS = \ curve.obj \ edge.obj \ fit.obj \ math.obj \ pxl-outline.obj \ sel2path.obj \ sel2path_adv_dialog.obj \ spline.obj \ vector.obj !ENDIF !IFDEF EXTRA_sgi OBJECTS = \ sgi.obj \ sgilib.obj !ENDIF !IFDEF EXTRA_svg EXTRACFLAGS = $(RSVG_CFLAGS) EXTRALIBS = $(RSVG_LIBS) !ENDIF !IFDEF EXTRA_tiff EXTRACFLAGS = -I$(TIFF) EXTRALIBS = $(TIFF)\libtiff.lib $(JPEG)\libjpeg.lib $(ZLIB)\zlib.lib user32.lib !ENDIF !IFDEF EXTRA_gimp_ace EXTRACFLAGS = -DGLACE_GIMP OBJECTS = \ gimp_ace.obj \ glace.obj \ glaceG.obj !ENDIF !IFDEF EXTRA_gimpressionist gimpressionist.c: logo-pixbuf.h logo-pixbuf.h: logo.png gdk-pixbuf-csource --raw --name=logo_data logo.png > $(@F) OBJECTS = \ brush.obj \ color.obj \ general.obj \ gimp.obj \ gimpressionist.obj \ orientation.obj \ orientmap.obj \ paper.obj \ placement.obj \ plasma.obj \ ppmtool.obj \ presets.obj \ preview.obj \ repaint.obj \ size.obj \ sizemap.obj !ENDIF !IFDEF EXTRA_helpbrowser OBJECTS = \ helpbrowser.obj \ domain.obj \ dialog.obj \ queue.obj \ uri.obj !ENDIF !IFDEF EXTRA_guash HAVE_RESOURCE = YES !ENDIF !IFDEF EXTRA_magiceye OBJECTS = \ dialog.obj \ magiceye.obj !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.obj \ uf_eval.obj \ uf_file.obj \ uf_gui.obj \ uf_lexer.obj \ uf_main.obj \ uf_parser.tab.obj !ENDIF !IFDEF EXTRA_pmosaic EXTRACFLAGS = -I$(JPEG) EXTRALIBS = $(JPEG)\libjpeg.lib OBJECTS = \ pmosaic.obj \ pmsc.obj !ENDIF !IFDEF EXTRA_twain OBJECTS = \ tw_func.obj \ tw_util.obj \ !IFDEF DEBUG tw_dump.obj \ !ENDIF twain.obj EXTRALIBS = user32.lib !ENDIF !IFDEF EXTRA_webbrowser EXTRALIBS = shell32.lib !ENDIF !IFDEF EXTRA_winprint EXTRALIBS = user32.lib gdi32.lib comdlg32.lib !ENDIF !IFDEF EXTRA_winclipboard EXTRALIBS = user32.lib !ENDIF !IFDEF EXTRA_winsnap HAVE_RESOURCE = YES EXTRALIBS = user32.lib gdi32.lib !ENDIF !IFDEF EXTRA_xjt OBJECTS = \ xjt.obj \ xjpeg.obj EXTRACFLAGS = $(JPEG_CFLAGS) EXTRALIBS = $(JPEG_LIBS) !ENDIF PLUGINDIR = $(GIMPTOP)\plug-ins !IFNDEF OPTIMIZE !IFNDEF DEBUG OPTIMIZE = -Ox !ELSE OPTIMIZE = -Zi !ENDIF !ENDIF !IFNDEF DEBUG LINKDEBUG = RTL = -MD !ELSE LINKDEBUG = /debug RTL = -MDd !ENDIF CC = cl -nologo -G5 -GF $(OPTIMIZE) $(RTL) -W2 -Zm400 CFLAGS = -FImsvc_recommended_pragmas.h \ -DHAVE_CONFIG_H $(EXTRACFLAGS) \ -DLOCALEDIR=\"?\" \ -I. -I$(GIMPTOP) -I$(PLUGINDIR) -I$(PLUGINDIR)\libgimpoldpreview \ $(GTK2_CFLAGS) $(INTL_CFLAGS) LDFLAGS = /link /subsystem:console /machine:ix86 $(LINKDEBUG) !IFDEF PLUGIN # This part is used when building individual plug-ins all : $(PLUGIN).exe install : all $(INSTALL) $(PLUGIN).exe $(BIN) !IFNDEF OBJECTS OBJECTS = $(PLUGIN).obj !ENDIF !IFDEF HAVE_RESOURCE # We have our own resource file (just an icon, usually) RESOURCE = $(PLUGIN).res !ELSE # Use the Wilber icon otherwise. If gimp.exe eventually gets more resources, # this will have to be changed. RESOURCE = ..\..\app\gimp.res !ENDIF $(PLUGIN).exe : $(EXTRA_DEPS) $(OBJECTS) $(RESOURCE) $(CC) $(CFLAGS) -Fe$(PLUGIN).exe $(OBJECTS) $(RESOURCE) \ ..\..\libgimp\gimp-$(GIMP_VER).lib ..\..\libgimp\gimpui-$(GIMP_VER).lib \ ..\..\libgimpbase\gimpbase-$(GIMP_VER).lib \ ..\..\libgimpcolor\gimpcolor-$(GIMP_VER).lib \ ..\..\libgimpmath\gimpmath-$(GIMP_VER).lib \ ..\..\libgimpwidgets\gimpwidgets-$(GIMP_VER).lib \ ..\libgimpoldpreview\gimpoldpreview.lib \ $(GLIB_LIBS) $(GTK2_LIBS) $(INTL_LIBS) $(EXTRALIBS) $(LDFLAGS) $(PLUGIN).res : $(PLUGIN).rc rc -r -fo $(PLUGIN).res $(PLUGIN).rc !ENDIF !IFDEF LIBRARY # This part is used when building a library all : $(LIBRARY).lib install : all !IFNDEF OBJECTS OBJECTS = $(LIBRARY).obj !ENDIF $(LIBRARY).lib : $(OBJECTS) lib /out:$(LIBRARY).lib $(OBJECTS) !ENDIF !IFDEF MODULE # This part is used when building a module # Allow building libraries with specific extensions !IFNDEF MODULE_EXT MODULE_EXT = dll !ENDIF all : $(MODULE).$(MODULE_EXT) install : all !IFNDEF OBJECTS OBJECTS = $(MODULE).obj !ENDIF $(MODULE).$(MODULE_EXT) : $(OBJECTS) $(MODULE).def $(CC) $(CFLAGS) -LD -Fe$@ $(OBJECTS) $(LDFLAGS) $(EXTRALIBS) \ ..\..\libgimp\gimp-$(GIMP_VER).lib ..\..\libgimp\gimpui-$(GIMP_VER).lib \ ..\..\libgimpcolor\gimpcolor-$(GIMP_VER).lib \ ..\..\libgimpbase\gimpbase-$(GIMP_VER).lib \ $(GLIB_LIBS) $(GTK2_LIBS) /def:$(MODULE).def !ENDIF .c.obj : $(CC) $(CFLAGS) -c $< clean :: erase *.obj erase *.lib erase *.exp erase *.exe erase *.pdb erase *.ilk !ENDIF