5
5
# Description : Makefile for compiling :
7
# . the G'MIC interpreter, as a library ('make lib').
8
# . the G'MIC command line tool ('make gmic').
7
# . the G'MIC command line tool ('make').
9
8
# . the G'MIC plug-in for GIMP ('make gimp').
9
# . the G'MIC interpreter, as a C++ library ('make lib').
11
11
# ( http://gmic.sourceforge.net )
60
60
PLUGINDIR = ~/Library/Application\ Support/Gimp/plug-ins
63
PLUGINDIR=`gimptool-2.0 --gimpplugindir`/plug-ins
63
PLUGINDIR = `gimptool-2.0 --gimpplugindir`/plug-ins
66
66
ifeq ($(OS),MINGW32_NT-5.1)
75
76
ifeq ($(CC),g++-4.5.0)
82
ifeq ($(CC),g++-4.6.0)
79
86
#---------------------------------------------------
80
87
# Set compilation flags allowing to customize G'MIC
81
88
#---------------------------------------------------
90
# Flags to enable 'beta' version.
83
93
# Flags that are mandatory to compile 'gmic'.
84
MANDATORY_CFLAGS = -Dgmic_build -I$(USR)/include
85
MANDATORY_LDFLAGS = -L$(USR)/lib
94
MANDATORY_CFLAGS += -Dgmic_build -I$(USR)/include
95
MANDATORY_LDFLAGS += -L$(USR)/lib
86
96
ifeq ($(IS_GCC),yes)
87
97
MANDATORY_CFLAGS += -Wall -W
88
MANDATORY_LDFLAGS = -lm
98
MANDATORY_LDFLAGS += -lm
100
MANDATORY_CFLAGS+=$(IS_BETA_CFLAGS)
91
102
# Flags to enable debugging.
92
103
DEBUG_CFLAGS = -Dcimg_use_vt100 -Dcimg_verbosity=3 -g
94
105
# Flags to enable optimizations.
95
106
ifeq ($(IS_GCC),yes)
96
OPT_CFLAGS = -O3 -fno-tree-pre -ffast-math
107
OPT_CFLAGS = -O3 -fno-tree-pre # -ffast-math
99
110
OPT_CFLAGS = -O3 -ipo -no-prec-div -override-limits
102
113
# Flags to enable image display, using X11
103
114
# (keep /usr/ dirname here since X11 is located in /usr/ on Mac too).
104
X11_CFLAGS = -Dcimg_display=1 -Dcimg_display_classname=\\\"G\'MIC\\\" -I/usr/X11R6/include #-Dcimg_use_xrandr
115
X11_CFLAGS = -Dcimg_display=1 -Dcimg_appname=\\\"gmic\\\" -I/usr/X11R6/include #-Dcimg_use_xrandr
105
116
X11_LDFLAGS = -L/usr/X11R6/lib -lX11 -lpthread #-lXrandr
107
118
# Flags to enable fast display, using XShm.
109
120
XSHM_LDFLAGS = -L$(USR)/X11R6/lib -lXext
111
122
# Flags to enable image display, using GDI32.
112
GDI32_CFLAGS = -Dcimg_display=2
123
GDI32_CFLAGS = -Dcimg_display=2 -Dcimg_appname=\\\"gmic\\\"
113
124
GDI32_LDFLAGS = -lgdi32
115
126
# Flags to enable native support for PNG image files, using the PNG library.
169
180
BOARD_LDFLAGS = -lboard
171
182
# Sets of flags for building different configurations.
172
STD_UNIX_CFLAGS = $(MANDATORY_CFLAGS) $(X11_CFLAGS) $(XSHM_CFLAGS) $(PNG_CFLAGS) \
183
STD_UNIX_CFLAGS = $(MANDATORY_CFLAGS) $(X11_CFLAGS) $(PNG_CFLAGS) \
173
184
$(JPEG_CFLAGS) $(TIFF_CFLAGS) $(ZLIB_CFLAGS) $(OPENCV_CFLAGS) \
174
$(MAGICK_CFLAGS) $(EXR_CFLAGS) $(FFTW_CFLAGS) # $(FFMPEG_CFLAGS)
175
STD_UNIX_LDFLAGS = $(MANDATORY_LDFLAGS) $(X11_LDFLAGS) $(XSHM_LDFLAGS) $(PNG_LDFLAGS) \
185
$(EXR_CFLAGS) $(FFTW_CFLAGS) # $(FFMPEG_CFLAGS) $(XSHM_CFLAGS) # $(MAGICK_CFLAGS)
186
STD_UNIX_LDFLAGS = $(MANDATORY_LDFLAGS) $(X11_LDFLAGS) $(PNG_LDFLAGS) \
176
187
$(JPEG_LDFLAGS) $(TIFF_LDFLAGS) $(ZLIB_LDFLAGS) $(OPENCV_LDFLAGS) \
177
$(MAGICK_LDFLAGS) $(EXR_LDFLAGS) $(FFTW_LDFLAGS) # $(FFMPEG_LDFLAGS)
188
$(EXR_LDFLAGS) $(FFTW_LDFLAGS) # $(FFMPEG_LDFLAGS) $(XSHM_LDFLAGS) # $(MAGICK_LDFLAGS)
179
190
CUST_UNIX_CFLAGS = $(MANDATORY_CFLAGS) $(X11_CFLAGS) $(XSHM_CFLAGS) $(PNG_CFLAGS) \
180
191
$(JPEG_CFLAGS) $(TIFF_CFLAGS) $(MINC2_CFLAGS) $(ZLIB_CFLAGS) $(OPENCV_CFLAGS) \
181
$(MAGICK_CFLAGS) $(FFTW_CFLAGS) $(FFMPEG_CFLAGS) $(BOARD_CFLAGS) $(EXR_CFLAGS)
192
$(FFTW_CFLAGS) $(FFMPEG_CFLAGS) $(BOARD_CFLAGS) $(EXR_CFLAGS) $(MAGICK_CFLAGS)
182
193
CUST_UNIX_LDFLAGS = $(MANDATORY_LDFLAGS) $(X11_LDFLAGS) $(XSHM_LDFLAGS) $(PNG_LDFLAGS) \
183
194
$(JPEG_LDFLAGS) $(TIFF_LDFLAGS) $(MINC2_LDFLAGS) $(ZLIB_LDFLAGS) $(OPENCV_LDFLAGS) \
184
$(MAGICK_LDFLAGS) $(FFTW_LDFLAGS) $(FFMPEG_LDFLAGS) $(BOARD_LDFLAGS) $(EXR_LDFLAGS)
195
$(FFTW_LDFLAGS) $(FFMPEG_LDFLAGS) $(BOARD_LDFLAGS) $(EXR_LDFLAGS) $(MAGICK_LDFLAGS)
186
197
DEBUG_UNIX_CFLAGS = $(MANDATORY_CFLAGS) $(DEBUG_CFLAGS) $(X11_CFLAGS) $(XSHM_CFLAGS) $(PNG_CFLAGS) \
187
198
$(JPEG_CFLAGS) $(TIFF_CFLAGS) $(ZLIB_CFLAGS) $(OPENCV_CFLAGS) \
188
$(MAGICK_CFLAGS) $(FFTW_CFLAGS) $(FFMPEG_CFLAGS)
199
$(FFTW_CFLAGS) $(FFMPEG_CFLAGS) $(MAGICK_CFLAGS)
189
200
DEBUG_UNIX_LDFLAGS = $(MANDATORY_LDFLAGS) $(DEBUG_LDFLAGS) $(X11_LDFLAGS) $(XSHM_LDFLAGS) $(PNG_LDFLAGS) \
190
201
$(JPEG_LDFLAGS) $(TIFF_LDFLAGS) $(ZLIB_LDFLAGS) $(OPENCV_LDFLAGS) \
191
$(MAGICK_LDFLAGS) $(FFTW_LDFLAGS) $(FFMPEG_LDFLAGS)
202
$(FFTW_LDFLAGS) $(FFMPEG_LDFLAGS) $(MAGICK_LDFLAGS)
193
204
MINIMAL_UNIX_CFLAGS = $(MANDATORY_CFLAGS) $(DEBUG_CFLAGS) $(X11_CFLAGS)
194
205
MINIMAL_UNIX_LDFLAGS = $(MANDATORY_LDFLAGS) $(DEBUG_LDFLAGS) $(X11_LDFLAGS)
199
210
STD_MACOSX_CFLAGS= $(MANDATORY_CFLAGS) $(X11_CFLAGS) $(ZLIB_CFLAGS) $(PNG_CFLAGS) \
200
211
$(JPEG_CFLAGS) $(TIFF_CFLAGS) \
201
$(MAGICK_CFLAGS) $(EXR_CFLAGS) $(FFTW_CFLAGS)
202
STD_MACOSX_LDFLAGS = $(X11_LDFLAGS) $(ZLIB_LDFLAGS) $(MANDATORY_LDFLAGS) \
212
$(EXR_CFLAGS) $(FFTW_CFLAGS) # $(MAGICK_CFLAGS)
213
STD_MACOSX_LDFLAGS = $(MANDATORY_LDFLAGS) $(X11_LDFLAGS) $(ZLIB_LDFLAGS) \
203
214
$(PNG_LDFLAGS) $(JPEG_LDFLAGS) $(TIFF_LDFLAGS) \
204
$(MAGICK_LDFLAGS) $(EXR_LDFLAGS) $(FFTW_LDFLAGS)
215
$(EXR_LDFLAGS) $(FFTW_LDFLAGS) # $(MAGICK_LDFLAGS)
206
217
STD_WINDOWS_CFLAGS= $(MANDATORY_CFLAGS) $(GDI32_CFLAGS) $(ZLIB_CFLAGS) $(PNG_CFLAGS) $(JPEG_CFLAGS) $(FFTW_CFLAGS)
207
218
STD_WINDOWS_LDFLAGS = $(MANDATORY_LDFLAGS) $(GDI32_LDFLAGS) $(ZLIB_LDFLAGS) $(PNG_LDFLAGS) $(JPEG_LDFLAGS) $(FFTW_LDFLAGS)
209
STD_GIMP_CFLAGS = -Dgmic_build -Dcimg_display=0 -I$(USR)/include $(FFTW_CFLAGS) $(PNG_CFLAGS) $(ZLIB_CFLAGS)
220
STD_GIMP_CFLAGS = -Dgmic_build -Dcimg_display=0 -I$(USR)/include $(FFTW_CFLAGS) $(PNG_CFLAGS) $(ZLIB_CFLAGS) ${IS_BETA_CFLAGS}
210
221
STD_GIMP_LDFLAGS = -L$(USR)/lib -lpthread $(FFTW_LDFLAGS) $(PNG_LDFLAGS) $(ZLIB_LDFLAGS)
211
222
ifeq ($(OS),MINGW32_NT-5.1)
212
223
STD_GIMP_LDFLAGS += -mwindows
250
$(MAKE) "CFLAGS+=$(STD_GIMP_CFLAGS) $(OPT_CFLAGS)" "LDFLAGS+=$(STD_GIMP_LDFLAGS)" "STRIP_EXE=1" gmic_gimp
262
$(MAKE) "CFLAGS=$(STD_GIMP_CFLAGS) $(OPT_CFLAGS)" "LDFLAGS+=$(STD_GIMP_LDFLAGS) $(OPT_LDFLAGS)" "STRIP_EXE=1" gmic_gimp
253
$(MAKE) "CFLAGS+=$(STD_LIB_CFLAGS) $(OPT_CFLAGS)" "LDFLAGS+=$(STD_LIB_LDFLAGS)" gmic_lib
265
$(MAKE) "CFLAGS=$(STD_LIB_CFLAGS) $(OPT_CFLAGS)" "LDFLAGS+=$(STD_LIB_LDFLAGS)" gmic_lib
255
267
# Entries for non-default configurations.
260
272
$(MAKE) "CFLAGS+=$(DEBUG_UNIX_CFLAGS)" "LDFLAGS+=$(DEBUG_UNIX_LDFLAGS)" gmic_minimal
263
$(MAKE) "CFLAGS+=$(STD_UNIX_CFLAGS) $(OPT_CFLAGS)" "LDFLAGS+=$(STD_UNIX_LDFLAGS)" "STRIP_EXE=1" gmic_gmic
275
$(MAKE) "CFLAGS=$(STD_UNIX_CFLAGS) $(OPT_CFLAGS)" "LDFLAGS=$(STD_UNIX_LDFLAGS)" "STRIP_EXE=1" gmic_gmic
266
$(MAKE) "CFLAGS+=$(CUST_UNIX_CFLAGS) $(OPT_CFLAGS)" "LDFLAGS+=$(CUST_UNIX_LDFLAGS)" "STRIP_EXE=1" gmic_gmic
278
$(MAKE) "CFLAGS=$(CUST_UNIX_CFLAGS) $(OPT_CFLAGS)" "LDFLAGS=$(CUST_UNIX_LDFLAGS)" "STRIP_EXE=1" gmic_gmic
269
$(MAKE) "CFLAGS+=$(STD_UNIX_CFLAGS) $(OPT_CFLAGS)" "LDFLAGS+=$(STD_UNIX_LDFLAGS) -R$(USR)/X11R6/lib -lrt -lnsl -lsocket" "STRIP_EXE=1" gmic_gmic
281
$(MAKE) "CFLAGS=$(STD_UNIX_CFLAGS) $(OPT_CFLAGS)" "LDFLAGS=$(STD_UNIX_LDFLAGS) -R$(USR)/X11R6/lib -lrt -lnsl -lsocket" "STRIP_EXE=1" gmic_gmic
272
$(MAKE) "CFLAGS+=$(STD_MACOSX_CFLAGS) $(OPT_CFLAGS)" "LDFLAGS+=$(STD_MACOSX_LDFLAGS)" gmic_gmic
284
$(MAKE) "CFLAGS=$(STD_MACOSX_CFLAGS) $(OPT_CFLAGS)" "LDFLAGS=$(STD_MACOSX_LDFLAGS) $(OPT_LDFLAGS)" gmic_gmic
275
$(MAKE) "CFLAGS+=$(STD_WINDOWS_CFLAGS) $(OPT_CFLAGS)" "LDFLAGS+=$(STD_WINDOWS_LDFLAGS)" "STRIP_EXE=1" gmic_gmic
287
$(MAKE) "CFLAGS=$(STD_WINDOWS_CFLAGS) $(OPT_CFLAGS)" "LDFLAGS=$(STD_WINDOWS_LDFLAGS)" "STRIP_EXE=1" gmic_gmic
278
$(MAKE) "CFLAGS+=$(DEBUG_WINDOWS_CFLAGS)" "LDFLAGS+=$(DEBUG_WINDOWS_LDFLAGS)" gmic_minimal
290
$(MAKE) "CFLAGS=$(DEBUG_WINDOWS_CFLAGS)" "LDFLAGS=$(DEBUG_WINDOWS_LDFLAGS)" gmic_minimal
280
292
# Rules to build compilation modules.
281
293
gmic_lib.o: gmic.cpp gmic_def.h
315
327
$(CC) -o gmic gmic.cpp -Dgmic_separate_compilation -Dgmic_main $(CFLAGS) gmic_bool.o gmic_uchar.o gmic_char.o gmic_ushort.o gmic_short.o gmic_uint.o gmic_int.o gmic_float.o gmic_double.o $(LDFLAGS)
318
cd ../../CImg/examples && $(MAKE) gmic_def
330
@echo "#ifndef gmic_gimp" > gmic_def.h
331
\gmic -v - gmic_def.gmic raw:gmic_def.gmic,char -compress_gmic -type char -o -.h | sed 's/unnamed/gmic_def/' | sed 's/ \};/, 0 \};\n\nunsigned int size_data_gmic_def = sizeof(data_gmic_def);\n/g' >> gmic_def.h
332
@echo "#else" >> gmic_def.h
333
\gmic -v - gmic_def.gmic raw:gmic_def.gmic,char -compress_gmic_gimp -type char -o -.h | sed 's/unnamed/gmic_def/' | sed 's/ \};/, 0 \};\n\nunsigned int size_data_gmic_def = sizeof(data_gmic_def);\n/g' >> gmic_def.h
334
\gmic -v - ../html/img/logoGMIC.ppm -permute cxyz -type uchar -o -.h | sed 's/unnamed/gmic_logo/' >> gmic_def.h
335
@echo "unsigned int size_data_logo = sizeof(data_gmic_logo);" >> gmic_def.h
336
@echo "#endif" >> gmic_def.h
321
340
$(CC) -o gmic_bashcompletion gmic_bashcompletion.cpp
326
345
cp -f gmic_gimp $(DESTDIR)$(PLUGINDIR)/
327
346
mkdir -p $(DESTDIR)$(USR)/bin/
328
347
cp -f gmic $(DESTDIR)$(USR)/bin/
348
mkdir -p $(DESTDIR)$(USR)/include/
349
cp -f gmic.h $(DESTDIR)$(USR)/include/
351
mkdir -p $(DESTDIR)$(USR)/lib
352
cp -f libgmic.so $(DESTDIR)$(USR)/lib/libgmic.so.1
329
354
mkdir -p $(DESTDIR)$(USR)/share/man/man1/
330
355
mkdir -p $(DESTDIR)$(USR)/share/man/fr/man1/
331
356
cp -f ../man/gmic.1.gz $(DESTDIR)$(USR)/share/man/man1/gmic.1.gz
332
357
cp -f ../man/gmic.1.gz $(DESTDIR)$(USR)/share/man/fr/man1/gmic.1.gz
333
mkdir -p $(DESTDIR)$(USR)/share/doc/gmic/html/img/
334
358
if test -d /etc/bash_completion.d/; then mkdir -p $(DESTDIR)/etc/bash_completion.d/; cp -f gmic_bashcompletion.sh $(DESTDIR)/etc/bash_completion.d/gmic; fi
335
359
if test -d /opt/local/etc/bash_completion.d/; then mkdir -p $(DESTDIR)/opt/local/etc/bash_completion.d/; cp -f gmic_bashcompletion.sh $(DESTDIR)/opt/local/etc/bash_completion.d/gmic; fi
336
for pixmap in ../html/*.*; do \
337
if test -f $$pixmap; then \
338
cp -f $$pixmap $(DESTDIR)$(USR)/share/doc/gmic/html/; \
341
for pixmap in ../html/img/*.*; do \
342
if test -f $$pixmap; then \
343
cp -f $$pixmap $(DESTDIR)$(USR)/share/doc/gmic/html/img/; \
348
362
rm -f $(DESTDIR)$(USR)/bin/gmic
363
rm -f $(DESTDIR)$(USR)/include/gmic.h
364
rm -f $(DESTSIR)$(USR)/lib/libgmic.so.1
349
365
rm -rf $(DESTDIR)$(USR)/share/doc/gmic/
350
366
rm -f $(DESTDIR)$(USR)/share/man/man1/gmic.1.gz
351
367
rm -f $(DESTDIR)$(USR)/share/man/fr/man1/gmic.1.gz