# 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 = AlienMap2 ccanalyze CEL channel_mixer 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 dicom diffraction displace edge emboss engrave exchange film flarefx fractaltrace
COMMON3 = gauss gbr gee gee_zoom gif gifload gih glasstile gqbist gradmap grid gtm guillotine header hot illusion iwarp jigsaw jpeg laplace lic
COMMON4 = mapcolor max_rgb mblur mosaic newsprint nlfilt noisify normalize nova oilify papertile pat pcx pix pixelize plasma png pnm polar postscript psd psd_save psp randomize ripple rotate
COMMON5 = sample_colorize scatter_hsv screenshot sel_gauss 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 webbrowser whirlpinch winclipboard wind winprint wiredebug xbm xwd zealouscrop

NOTNOW = wmf 

# 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 winicon 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 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
STOCK_VARS = \
	stock_intensity_ambient_high images/stock-intensity-ambient-high.png	\
	stock_intensity_ambient_low images/stock-intensity-ambient-low.png		\
	stock_intensity_diffuse_high images/stock-intensity-diffuse-high.png	\
	stock_intensity_diffuse_low images/stock-intensity-diffuse-low.png		\
	stock_reflectivity_diffuse_high images/stock-reflectivity-diffuse-high.png	\
	stock_reflectivity_diffuse_low images/stock-reflectivity-diffuse-low.png	\
	stock_reflectivity_specular_high images/stock-reflectivity-specular-high.png	\
	stock_reflectivity_specular_low images/stock-reflectivity-specular-low.png	\
	stock_reflectivity_highlight_high images/stock-reflectivity-highlight-high.png	\
	stock_reflectivity_highlight_low images/stock-reflectivity-highlight-low.png

STOCK_IMAGES = \
	images/stock-intensity-ambient-high.png	\
	images/stock-intensity-ambient-low.png		\
	images/stock-intensity-diffuse-high.png	\
	images/stock-intensity-diffuse-low.png		\
	images/stock-reflectivity-diffuse-high.png	\
	images/stock-reflectivity-diffuse-low.png	\
	images/stock-reflectivity-specular-high.png	\
	images/stock-reflectivity-specular-low.png	\
	images/stock-reflectivity-highlight-high.png	\
	images/stock-reflectivity-highlight-low.png

images/stock-pixbufs.h: $(STOCK_IMAGES)
	gdk-pixbuf-csource --rle --build-list $(STOCK_VARS) > images/stock-pixbufs.h

EXTRA_DEPS = images/stock-pixbufs.h

OBJECTS = \
	lighting_apply.obj \
	lighting_image.obj \
	lighting_main.obj \
	lighting_preview.obj \
	lighting_shade.obj \
	lighting_stock.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 = \
	gimpprocbox.obj \
	gimpprocbrowser.obj \
	gimpprocview.obj \
	procedure-browser.obj
!ENDIF

!IFDEF EXTRA_plugindetails
OBJECTS = \
	gimpprocbox.obj \
	gimpprocbrowser.obj \
	gimpprocview.obj \
	plugin-browser.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_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_select_object images/stock-select-object.png \
	stock_show_all images/stock-show-all.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-dialog.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-style.obj \
	gfig-stock.obj
!ENDIF

!IFDEF EXTRA_ifscompose
OBJECTS = \
	ifscompose.obj \
	ifscompose_storage.obj \
	ifscompose_utils.obj
!ENDIF

!IFDEF EXTRA_imagemap
STOCK_VARS = \
        stock_arrow             images/stock-arrow.png \
        stock_circle            images/stock-circle.png        \
        stock_coord             images/stock-coord.png \
        stock_dimension         images/stock-dimension.png     \
        stock_java              images/stock-java.png  \
        stock_link              images/stock-link.png  \
        stock_map_info          images/stock-map-info.png      \
        stock_polygon           images/stock-polygon.png       \
        stock_rectangle         images/stock-rectangle.png     \
        stock_to_back           images/stock-to-back.png       \
        stock_to_front          images/stock-to-front.png      \

STOCK_IMAGES = \
        images/stock-arrow.png \
        images/stock-circle.png        \
        images/stock-coord.png \
        images/stock-dimension.png     \
        images/stock-java.png  \
        images/stock-link.png  \
        images/stock-map-info.png      \
        images/stock-polygon.png       \
        images/stock-rectangle.png     \
        images/stock-to-back.png       \
        images/stock-to-front.png      \


images/imap-stock-pixbufs.h: $(STOCK_IMAGES)
	gdk-pixbuf-csource --rle --build-list $(STOCK_VARS) > images/imap-stock-pixbufs.h

EXTRA_DEPS = images/imap-stock-pixbufs.h

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_pagecurl
STOCK_VARS = \
        curl0 curl0.png \
        curl1 curl1.png \
        curl2 curl2.png \
        curl3 curl3.png \
        curl4 curl4.png \
        curl5 curl5.png \
        curl6 curl6.png \
        curl7 curl7.png \

STOCK_IMAGES = \
        curl0.png \
        curl1.png \
        curl2.png \
        curl3.png \
        curl4.png \
        curl5.png \
        curl6.png \
        curl7.png \

pagecurl-icons.h: $(STOCK_IMAGES)
	gdk-pixbuf-csource --rle --build-list $(STOCK_VARS) > pagecurl-icons.h

EXTRA_DEPS = pagecurl-icons.h

!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
STOCK_VARS = \
        rcm_360         images/rcm-360.png     \
        rcm_a_b         images/rcm-a-b.png     \
        rcm_ccw         images/rcm-ccw.png     \
        rcm_cw          images/rcm-cw.png      \

STOCK_IMAGES = \
        images/rcm-360.png     \
        images/rcm-a-b.png     \
        images/rcm-ccw.png     \
        images/rcm-cw.png      \

images/rcm-stock-pixbufs.h: $(STOCK_IMAGES)
	gdk-pixbuf-csource --rle --build-list $(STOCK_VARS) > images/rcm-stock-pixbufs.h

EXTRA_DEPS = images/rcm-stock-pixbufs.h

OBJECTS = \
	rcm.obj \
	rcm_callback.obj \
	rcm_dialog.obj \
	rcm_gdk.obj \
	rcm_misc.obj \
	rcm_stock.obj
OPTIMIZE = 
!ENDIF

!IFDEF EXTRA_script_fu
OBJECTS = \
	siod-wrapper.obj \
	script-fu.obj \
	script-fu-console.obj \
	script-fu-scripts.obj \
	script-fu-text-console.obj \
	script-fu-interface.obj \
	..\dbbrowser\gimpprocbrowser.obj \
	..\dbbrowser\gimpprocbox.obj \
	..\dbbrowser\gimpprocview.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 --rle --name=logo_data logo.png > $(@F)

OBJECTS = \
	brush.obj \
	color.obj \
	general.obj \
	gimp.obj \
	gimpressionist.obj \
	globals.obj \
	orientation.obj \
	orientmap.obj \
	paper.obj \
	placement.obj \
	plasma.obj \
	ppmtool.obj \
	presets.obj \
	preview.obj \
	repaint.obj \
	size.obj \
	sizemap.obj \
	utils.obj
!ENDIF

!IFDEF EXTRA_helpbrowser
OBJECTS = \
	helpbrowser.obj	\
	dialog.obj	\
	queue.obj		\
	uri.obj
EXTRACFLAGS = $(GTKHTML2_CFLAGS)
EXTRALIBS = $(GTKHTML2_LIBS) user32.lib shell32.lib
!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
	tw_win.obj \
	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_winicon
OBJECTS = \
	icodialog.obj \
	icoload.obj \
	icosave.obj \
	main.obj
!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 \
	-DLOCALEDIR=\"?\" \
	-I$(GIMPTOP) -I. -I$(PLUGINDIR) \
	$(EXTRACFLAGS) \
	$(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 \
	$(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
