configure.ac 89.2 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12
# Process this file with autoconf to produce a configure script.

AC_PREREQ(2.54)

# Making releases on the stable branch:
#   gimp_micro_version += 1;
#   gimp_interface_age += 1;
#
# For a description of libtool version variables, see:
# devel-docs/libtool-instructions.txt

m4_define([gimp_major_version], [2])
13 14
m4_define([gimp_minor_version], [99])
m4_define([gimp_micro_version], [1])
15 16 17
m4_define([gimp_real_version],
          [gimp_major_version.gimp_minor_version.gimp_micro_version])
m4_define([gimp_version], [gimp_real_version])
18
m4_define([gimp_interface_age], [0])
19 20 21 22
m4_define([gimp_binary_age],
          [m4_eval(100 * gimp_minor_version + gimp_micro_version)])

# For overriding the version string. Comment out if not needed.
23
# m4_define([gimp_version], [2.99.1])
24 25

# This is the X.Y used in -lgimp-X.Y
26
m4_define([gimp_api_version], [3.0])
27 28 29

# Versions used for apps, plugins, tools, pkg-config files, and data,
# as well as global and user prefs
30 31 32 33 34 35 36
m4_define([gimp_app_version], [2.99])
m4_define([gimp_plugin_version], [2.99])
m4_define([gimp_tool_version], [2.99])
m4_define([gimp_pkgconfig_version], [3.0])
m4_define([gimp_data_version], [2.99])
m4_define([gimp_sysconf_version], [2.99])
m4_define([gimp_user_version], [2.99])
37 38 39 40 41 42 43 44 45

m4_define([gimp_unstable],
          m4_if(m4_eval(gimp_minor_version % 2), [1], [yes], [no]))
m4_define([gimp_stable],
          m4_if(m4_eval(gimp_minor_version % 2), [0], [yes], [no]))

m4_define([gimp_full_name], [GNU Image Manipulation Program])

# required versions of other packages
46 47 48
m4_define([alsa_required_version], [1.0.0])
m4_define([appstream_glib_required_version], [0.7.7])
m4_define([atk_required_version], [2.4.0])
49
m4_define([babl_required_version], [0.1.57])
50 51 52 53 54
m4_define([cairo_required_version], [1.14.0])
m4_define([cairo_pdf_required_version], [1.12.2])
m4_define([fontconfig_required_version], [2.12.4])
m4_define([freetype2_required_version], [2.1.7])
m4_define([gdk_pixbuf_required_version], [2.30.8])
55
m4_define([gegl_major_minor_version], [0.4])
56
m4_define([gegl_micro_version], [9])
57 58
m4_define([gegl_required_version],
          [gegl_major_minor_version.gegl_micro_version])
59
m4_define([gexiv2_required_version], [0.10.6])
60
m4_define([glib_required_version], [2.56.0])
61
m4_define([gtk_mac_integration_required_version], [2.0.0])
62
m4_define([gtk_required_version], [3.22.29])
63
m4_define([gtkdoc_required_version], [1.0])
64 65 66
m4_define([harfbuzz_required_version], [0.9.19])
m4_define([intltool_required_version], [0.40.1])
m4_define([lcms_required_version], [2.8])
67
m4_define([libgudev_required_version], [167])
68 69
m4_define([libheif_required_version], [1.1.0])
m4_define([liblzma_required_version], [5.0.0])
70
m4_define([libmypaint_required_version], [1.3.0])
71
m4_define([libpng_required_version], [1.6.25])
72
m4_define([openexr_required_version], [1.6.1])
73
m4_define([openjpeg_required_version], [2.1.0])
74
m4_define([pangocairo_required_version], [1.42.0])
75
m4_define([perl_required_version], [5.10.0])
76 77 78 79
m4_define([poppler_required_version], [0.44.0])
m4_define([poppler_data_required_version], [0.4.7])
m4_define([pycairo_required_version], [1.0.2])
m4_define([pygtk_required_version], [2.10.4])
80
m4_define([python2_required_version], [2.5.0])
81 82
m4_define([rsvg_required_version], [2.40.6])
m4_define([webkitgtk_required_version], [2.20.3])
83
m4_define([webp_required_version], [0.6.0])
84
m4_define([wmf_required_version], [0.2.8])
Ell's avatar
Ell committed
85
m4_define([libunwind_required_version], [1.1.0])
86

87 88
# Current test considers only 2 version numbers. If we update the recommended
# version of gettext with more version numbers, please update the tests.
89
m4_define([xgettext_required_version], [0.19])
90

91
AC_INIT([GIMP], [gimp_version],
92
        [https://gitlab.gnome.org/GNOME/gimp/issues/new],
93 94
        [gimp])

95
AC_CONFIG_HEADERS([config.h])
96
AC_CONFIG_SRCDIR([app/core/gimp.c])
97
AC_CONFIG_MACRO_DIR([m4macros])
98

99
AM_INIT_AUTOMAKE(no-define dist-bzip2 dist-xz no-dist-gzip -Wno-portability)
Elliot Lee's avatar
Elliot Lee committed
100

101 102 103 104 105
# Enable silent build rules by default, requires at least
# Automake-1.11. Disable by either passing --disable-silent-rules to
# configure or passing V=1 to make
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])

106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
GIMP_MAJOR_VERSION=gimp_major_version
GIMP_MINOR_VERSION=gimp_minor_version
GIMP_MICRO_VERSION=gimp_micro_version
GIMP_INTERFACE_AGE=gimp_interface_age
GIMP_BINARY_AGE=gimp_binary_age
GIMP_VERSION=gimp_version
GIMP_REAL_VERSION=gimp_real_version
GIMP_API_VERSION=gimp_api_version
GIMP_APP_VERSION=gimp_app_version
GIMP_PLUGIN_VERSION=gimp_plugin_version
GIMP_TOOL_VERSION=gimp_tool_version
GIMP_PKGCONFIG_VERSION=gimp_pkgconfig_version
GIMP_DATA_VERSION=gimp_data_version
GIMP_SYSCONF_VERSION=gimp_sysconf_version
GIMP_USER_VERSION=gimp_user_version
121 122
GIMP_UNSTABLE=gimp_unstable
GIMP_FULL_NAME="gimp_full_name"
123 124 125
AC_SUBST(GIMP_MAJOR_VERSION)
AC_SUBST(GIMP_MINOR_VERSION)
AC_SUBST(GIMP_MICRO_VERSION)
126 127
AC_SUBST(GIMP_INTERFACE_AGE)
AC_SUBST(GIMP_BINARY_AGE)
128
AC_SUBST(GIMP_VERSION)
129 130 131 132 133 134 135 136 137
AC_SUBST(GIMP_REAL_VERSION)
AC_SUBST(GIMP_API_VERSION)
AC_SUBST(GIMP_APP_VERSION)
AC_SUBST(GIMP_PLUGIN_VERSION)
AC_SUBST(GIMP_TOOL_VERSION)
AC_SUBST(GIMP_PKGCONFIG_VERSION)
AC_SUBST(GIMP_DATA_VERSION)
AC_SUBST(GIMP_SYSCONF_VERSION)
AC_SUBST(GIMP_USER_VERSION)
138 139
AC_SUBST(GIMP_UNSTABLE)
AC_SUBST(GIMP_FULL_NAME)
140

141 142 143 144 145 146
# Version strings used in some source, though it seems unnecessary to
# declare them in the public API (libgimpbase/gimpversion.h).
AC_DEFINE(GIMP_PKGCONFIG_VERSION, "gimp_pkgconfig_version",
          [libgimp pkg-config version])
AC_DEFINE(GIMP_TOOL_VERSION, "gimp_tool_version",
          [GIMP tools version])
147

148
# These are used for substitution (.pc, INSTALL, etc.).
149
APPSTREAM_GLIB_REQUIRED_VERSION=appstream_glib_required_version
150 151
ATK_REQUIRED_VERSION=atk_required_version
BABL_REQUIRED_VERSION=babl_required_version
152
CAIRO_REQUIRED_VERSION=cairo_required_version
153
CAIRO_PDF_REQUIRED_VERSION=cairo_pdf_required_version
154 155 156
FONTCONFIG_REQUIRED_VERSION=fontconfig_required_version
FREETYPE2_REQUIRED_VERSION=freetype2_required_version
GDK_PIXBUF_REQUIRED_VERSION=gdk_pixbuf_required_version
157
GEGL_MAJOR_MINOR_VERSION=gegl_major_minor_version
158
GEGL_REQUIRED_VERSION=gegl_required_version
159
GEXIV2_REQUIRED_VERSION=gexiv2_required_version
160 161 162 163 164
GLIB_REQUIRED_VERSION=glib_required_version
GTK_REQUIRED_VERSION=gtk_required_version
GTK_WIN32_RECOMMENDED_VERSION=gtk_win32_recommended_version
HARFBUZZ_REQUIRED_VERSION=harfbuzz_required_version
INTLTOOL_REQUIRED_VERSION=intltool_required_version
165
LCMS_REQUIRED_VERSION=lcms_required_version
166
LIBHEIF_REQUIRED_VERSION=libheif_required_version
167
LIBLZMA_REQUIRED_VERSION=liblzma_required_version
168
LIBMYPAINT_REQUIRED_VERSION=libmypaint_required_version
169
LIBPNG_REQUIRED_VERSION=libpng_required_version
170
OPENEXR_REQUIRED_VERSION=openexr_required_version
171
OPENJPEG_REQUIRED_VERSION=openjpeg_required_version
172
PANGOCAIRO_REQUIRED_VERSION=pangocairo_required_version
173
PERL_REQUIRED_VERSION=perl_required_version
174 175
POPPLER_REQUIRED_VERSION=poppler_required_version
POPPLER_DATA_REQUIRED_VERSION=poppler_data_required_version
176
PYTHON2_REQUIRED_VERSION=python2_required_version
177 178
RSVG_REQUIRED_VERSION=rsvg_required_version
WEBKITGTK_REQUIRED_VERSION=webkitgtk_required_version
179
WEBP_REQUIRED_VERSION=webp_required_version
180
WMF_REQUIRED_VERSION=wmf_required_version
Ell's avatar
Ell committed
181
LIBUNWIND_REQUIRED_VERSION=libunwind_required_version
182
XGETTEXT_REQUIRED_VERSION=xgettext_required_version
183
AC_SUBST(APPSTREAM_GLIB_REQUIRED_VERSION)
184 185
AC_SUBST(ATK_REQUIRED_VERSION)
AC_SUBST(BABL_REQUIRED_VERSION)
186
AC_SUBST(CAIRO_REQUIRED_VERSION)
187
AC_SUBST(CAIRO_PDF_REQUIRED_VERSION)
188 189 190
AC_SUBST(FONTCONFIG_REQUIRED_VERSION)
AC_SUBST(FREETYPE2_REQUIRED_VERSION)
AC_SUBST(GDK_PIXBUF_REQUIRED_VERSION)
191
AC_SUBST(GEGL_MAJOR_MINOR_VERSION)
192
AC_SUBST(GEGL_REQUIRED_VERSION)
193
AC_SUBST(GEXIV2_REQUIRED_VERSION)
194 195 196 197 198
AC_SUBST(GLIB_REQUIRED_VERSION)
AC_SUBST(GTK_REQUIRED_VERSION)
AC_SUBST(GTK_WIN32_RECOMMENDED_VERSION)
AC_SUBST(HARFBUZZ_REQUIRED_VERSION)
AC_SUBST(INTLTOOL_REQUIRED_VERSION)
199
AC_SUBST(LCMS_REQUIRED_VERSION)
200
AC_SUBST(LIBHEIF_REQUIRED_VERSION)
201
AC_SUBST(LIBLZMA_REQUIRED_VERSION)
202
AC_SUBST(LIBMYPAINT_REQUIRED_VERSION)
203
AC_SUBST(LIBPNG_REQUIRED_VERSION)
204
AC_SUBST(OPENEXR_REQUIRED_VERSION)
205
AC_SUBST(OPENJPEG_REQUIRED_VERSION)
206
AC_SUBST(PANGOCAIRO_REQUIRED_VERSION)
207
AC_SUBST(PERL_REQUIRED_VERSION)
208 209
AC_SUBST(POPPLER_REQUIRED_VERSION)
AC_SUBST(POPPLER_DATA_REQUIRED_VERSION)
210
AC_SUBST(PYTHON2_REQUIRED_VERSION)
211 212
AC_SUBST(RSVG_REQUIRED_VERSION)
AC_SUBST(WEBKITGTK_REQUIRED_VERSION)
213
AC_SUBST(WEBP_REQUIRED_VERSION)
214
AC_SUBST(WMF_REQUIRED_VERSION)
Ell's avatar
Ell committed
215
AC_SUBST(LIBUNWIND_REQUIRED_VERSION)
216
AC_SUBST(XGETTEXT_REQUIRED_VERSION)
217 218 219 220

# The symbol GIMP_UNSTABLE is defined above for substitution in
# Makefiles and conditionally defined here as a preprocessor symbol
# and automake conditional.
221
if test "x$GIMP_UNSTABLE" = "xyes"; then
222
  AC_DEFINE(GIMP_UNSTABLE, 1,
223
            [Define to 1 if this is an unstable version of GIMP])
224
fi
225 226
AM_CONDITIONAL(GIMP_UNSTABLE, test "x$GIMP_UNSTABLE" = "xyes")

227 228

# libtool versioning
229
m4_define([lt_current], [m4_eval(100 * gimp_minor_version + gimp_micro_version - gimp_interface_age)])
230 231 232 233 234
m4_define([lt_revision], [gimp_interface_age])
m4_define([lt_age], [m4_eval(gimp_binary_age - gimp_interface_age)])
LT_VERSION_INFO="lt_current:lt_revision:lt_age"
LT_CURRENT_MINUS_AGE=m4_eval(lt_current - lt_age)
AC_SUBST(LT_VERSION_INFO)
235 236
AC_SUBST(LT_CURRENT_MINUS_AGE)

237

238
# gettext i18n support
239
GETTEXT_PACKAGE=gimp30
240 241 242
AC_SUBST(GETTEXT_PACKAGE)
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE",
                   [The prefix for our gettext translation domains.])
243

244 245 246 247 248
# work around intltool-update issues during 'make distcheck'
AS_IF([test "x$0" != "x./configure"], [
        AC_SUBST([INTLTOOL_UPDATE], [/bin/true])
])

249 250
# Determine a C compiler to use
AC_PROG_CC
251
AX_PROG_CC_FOR_BUILD
252 253 254 255 256
# Works around a bug in AX_PROG_CC_FOR_BUILD for build with MinGW on
# Windows. See bug 780270, comment 18.
case "$build_os" in
  cygwin*|mingw32*|mingw64*)	BUILD_EXEEXT=.exe ;;
esac
257
AM_PROG_CC_C_O
Manish Singh's avatar
Manish Singh committed
258

259 260
# Determine a C++ compiler to use
AC_PROG_CXX
261
AX_CXX_COMPILE_STDCXX([14], , [mandatory])
262

263
# Initialize libtool
264 265
LT_PREREQ([2.2])
LT_INIT([disable-static win32-dll])
Elliot Lee's avatar
Elliot Lee committed
266

267
AM_PROG_AS
Elliot Lee's avatar
Elliot Lee committed
268

269
# Initialize maintainer mode
270
AM_MAINTAINER_MODE([enable])
271

272 273 274 275
# Check for pkg-config
PKG_PROG_PKG_CONFIG(0.16)


276 277 278 279 280 281 282 283
#########################
# Check host architecture
#########################

AC_CANONICAL_HOST

AC_MSG_CHECKING([for host type])
AC_MSG_RESULT([$host])
284

285 286 287
AC_MSG_CHECKING([for host processor])
case "$host_cpu" in
  i*86)
288 289
    have_x86=yes
    AC_DEFINE(ARCH_X86, 1, [Define to 1 if you are compiling for ix86.])
290
    AC_MSG_RESULT([x86])
291
    ;;
292
  x86_64)
293 294 295
    have_x86=yes
    AC_DEFINE(ARCH_X86, 1, [Define to 1 if you are compiling for ix86.])
    AC_DEFINE(ARCH_X86_64, 1, [Define to 1 if you are compiling for amd64.])
296
    AC_MSG_RESULT([x86-64])
297
    ;;
298
  ppc | powerpc)
299 300
    have_ppc=yes
    AC_DEFINE(ARCH_PPC, 1, [Define to 1 if you are compiling for PowerPC.])
301
    AC_MSG_RESULT([PowerPC])
302
    ;;
303
  ppc64 | powerpc64)
Manish Singh's avatar
Manish Singh committed
304 305 306
    have_ppc=yes
    AC_DEFINE(ARCH_PPC, 1, [Define to 1 if you are compiling for PowerPC.])
    AC_DEFINE(ARCH_PPC64, 1, [Define to 1 if you are compiling for PowerPC64.])
307
    AC_MSG_RESULT([64-bit PowerPC])
Manish Singh's avatar
Manish Singh committed
308
    ;;
309
  *)
310
    AC_MSG_RESULT([unknown])
311 312 313 314
    ;;
esac


Ell's avatar
Ell committed
315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331
#################
# Check for Linux
#################

AC_MSG_CHECKING([if compiling for Linux])
case "$host_os" in
  linux*)
    platform_linux=yes
    ;;
  *)
    platform_linux=no
    ;;
esac
AC_MSG_RESULT([$platform_linux])
AM_CONDITIONAL(PLATFORM_LINUX, test "$platform_linux" = "yes")


332 333 334
#################
# Check for Win32
#################
335

336 337 338
AC_MSG_CHECKING([if compiling for Win32])
case "$host_os" in
  mingw* | cygwin*)
339 340 341 342 343 344 345 346 347
    platform_win32=yes
    ;;
  *)
    platform_win32=no
    ;;
esac
AC_MSG_RESULT([$platform_win32])
AM_CONDITIONAL(PLATFORM_WIN32, test "$platform_win32" = "yes")

348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368
PATHSEP=':'
os_win32=no
if test "x$platform_win32" != xno; then
  AC_MSG_CHECKING([if this is native Win32])
  case "$host_os" in
    mingw*)
      os_win32=yes
      case "$host_cpu" in
        x86_64)
        ;;
        *)
        WIN32_LARGE_ADDRESS_AWARE='-Wl,--large-address-aware'
        ;;
      esac
      PATHSEP=';'
      ;;
    *)
      ;;
  esac
  AC_MSG_RESULT([$os_win32])
fi
369
AC_SUBST(WIN32_LARGE_ADDRESS_AWARE)
370 371
AC_SUBST(PATHSEP)
AM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes")
372
AM_CONDITIONAL(OS_UNIX, test "$os_win32" != "yes")
373 374 375

if test "$os_win32" = "yes"; then
  AC_CHECK_PROG(ms_librarian, lib.exe, yes, no)
Manish Singh's avatar
Manish Singh committed
376
  AC_CHECK_TOOL(WINDRES, windres, :)
377 378
else
  WINDRES=":"
379
fi
Manish Singh's avatar
Manish Singh committed
380

381
AM_CONDITIONAL(MS_LIB_AVAILABLE, test "x$ms_librarian" = xyes)
382
AM_CONDITIONAL(HAVE_WINDRES, test "x$WINDRES" != "x:")
Manish Singh's avatar
Manish Singh committed
383 384

AC_SUBST(WINDRES)
385

386

387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405
####################
# Check for Mac OS X
####################

platform_osx=no
AC_MSG_CHECKING([if compiling for Mac OS X])
case "$host_os" in
  darwin*)
     AC_MSG_RESULT(yes)
     AC_DEFINE(PLATFORM_OSX, 1, [define to 1 if compiling for Mac OS X])
     platform_osx=yes
     ;;
  *)
     ;;
esac
AC_MSG_RESULT($platform_osx)
AM_CONDITIONAL(PLATFORM_OSX, test "x$platform_osx" = xyes)


406 407 408 409
###############
# Generic stuff
###############

410
# Checks for programs.
411 412
AC_PROG_INSTALL
AC_PROG_MAKE_SET
413
AC_PROG_LN_S
414

415
# Large file support for the swap file
416
AC_SYS_LARGEFILE
417

418
AC_MSG_CHECKING([whether to turn on debugging])
419
AC_ARG_ENABLE(debug,
420
              [  --enable-debug          turn on debugging (default=no)],
421 422 423
              if eval "test x$enable_debug = xyes"; then
                DEBUGFLAG="-g"
              fi)
424

425
if test -n "$DEBUGFLAG"; then
426
  AC_MSG_RESULT([yes])
427
  CFLAGS="$DEBUGFLAG $CFLAGS"
428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443
else
  AC_MSG_RESULT([no])
fi

AC_MSG_CHECKING([whether to turn on profiling])
AC_ARG_ENABLE(profile,
              [  --enable-profile        turn on profiling (default=no)],
              if eval "test x$enable_profile = xyes"; then
                PROFFLAG="-pg"
              fi)

if test -n "$PROFFLAG"; then
  AC_MSG_RESULT([yes])
  CFLAGS="$PROFFLAG $CFLAGS"
else
  AC_MSG_RESULT([no])
444
fi
445

446
AC_ARG_ENABLE(ansi,
447
              [  --enable-ansi           turn on strict ansi (default=no)],,
448
              enable_ansi=no)
449

450
changequote(,)dnl
451 452 453 454 455
if eval "test x$GCC = xyes"; then
  case " $CFLAGS " in
  *[\ \	]-Wall[\ \	]*) ;;
  *) CFLAGS="$CFLAGS -Wall" ;;
  esac
Elliot Lee's avatar
Elliot Lee committed
456

457 458 459 460 461
  if test "x$enable_ansi" = "xyes"; then
    case " $CFLAGS " in
    *[\ \	]-ansi[\ \	]*) ;;
    *) CFLAGS="$CFLAGS -ansi" ;;
    esac
462

463 464 465 466
    case " $CFLAGS " in
    *[\ \	]-pedantic[\ \	]*) ;;
    *) CFLAGS="$CFLAGS -pedantic" ;;
    esac
Elliot Lee's avatar
Elliot Lee committed
467 468
  fi
fi
469
changequote([,])dnl
Elliot Lee's avatar
Elliot Lee committed
470

471

472
# If possible, warn if C99isms are used
473 474 475
GIMP_DETECT_CFLAGS(extra_warnings, '-Wdeclaration-after-statement')
CFLAGS="$CFLAGS $extra_warnings"

476
GIMP_DETECT_CFLAGS(extra_warnings, '-Wmissing-prototypes')
477 478 479 480 481
CFLAGS="$CFLAGS $extra_warnings"

# We really don't want anyone using code with missing prototypes, which
# can cause random behavior. If compile breaks due to the following,
# come to us and we will point you to a newer version which works.
482
#
483 484
GIMP_DETECT_CFLAGS(extra_warnings, '-Werror=missing-prototypes')
CFLAGS="$CFLAGS $extra_warnings"
485

486 487 488
GIMP_DETECT_CFLAGS(extra_warnings, '-Wstrict-prototypes')
CFLAGS="$CFLAGS $extra_warnings"

489 490 491
GIMP_DETECT_CFLAGS(extra_warnings, '-Wmissing-declarations')
CFLAGS="$CFLAGS $extra_warnings"

492 493 494 495 496
GIMP_DETECT_CFLAGS(extra_warnings, '-Winit-self')
CFLAGS="$CFLAGS $extra_warnings"

GIMP_DETECT_CFLAGS(extra_warnings, '-Wpointer-arith')
CFLAGS="$CFLAGS $extra_warnings"
497 498 499

GIMP_DETECT_CFLAGS(extra_warnings, '-Wold-style-definition')
CFLAGS="$CFLAGS $extra_warnings"
500

501 502 503
GIMP_DETECT_CFLAGS(extra_warnings, '-Wmissing-format-attribute')
CFLAGS="$CFLAGS $extra_warnings"

504 505 506
GIMP_DETECT_CFLAGS(extra_warnings, '-Wformat-security')
CFLAGS="$CFLAGS $extra_warnings"

507 508 509 510 511 512
GIMP_DETECT_CFLAGS(extra_warnings, '-Wlogical-op')
CFLAGS="$CFLAGS $extra_warnings"

GIMP_DETECT_CFLAGS(extra_warnings, '-Wtype-limits')
CFLAGS="$CFLAGS $extra_warnings"

513 514 515
GIMP_DETECT_CFLAGS(extra_warnings, '-fno-common')
CFLAGS="$CFLAGS $extra_warnings"

516 517 518
GIMP_DETECT_CFLAGS(extra_warnings, '-fdiagnostics-show-option')
CFLAGS="$CFLAGS $extra_warnings"

519 520 521 522 523 524
GIMP_DETECT_CFLAGS(extra_warnings, '-Wreturn-type')
CFLAGS="$CFLAGS $extra_warnings"

# -Wreturn-type warns on forgotten return on non-void functions,
# but not of g_return_if_fail() on non-void functions.
# -Wsystem-headers is needed for that.
525 526 527 528
# Unfortunately it pulls tons of warnings on some systems.
# So we comment out for now.
# GIMP_DETECT_CFLAGS(extra_warnings, '-Wsystem-headers')
# CFLAGS="$CFLAGS $extra_warnings"
529

530 531 532 533 534 535 536 537
# Extra optimization flags for super performance
GIMP_DETECT_CFLAGS(extra_warnings, '--omg-optimized')
CFLAGS="$CFLAGS $extra_warnings"

GIMP_DETECT_CFLAGS(extra_warnings, '--disable-instructions')
CFLAGS="$CFLAGS $extra_warnings"


538 539 540 541
# Ensure MSVC-compatible struct packing convention is used when
# compiling for Win32 with gcc.
# What flag to depends on gcc version: gcc3 uses "-mms-bitfields", while
# gcc2 uses "-fnative-struct".
542 543
if test "x$os_win32" = xyes; then
  if test "x$GCC" = xyes; then
544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562
    msnative_struct=''
    AC_MSG_CHECKING([how to get MSVC-compatible struct packing])
    if test -z "$ac_cv_prog_CC"; then
      our_gcc="$CC"
    else
      our_gcc="$ac_cv_prog_CC"
    fi
    case `$our_gcc --version | sed -e 's,\..*,.,' -e q` in
      2.)
	if $our_gcc -v --help 2>/dev/null | grep fnative-struct >/dev/null; then
	  msnative_struct='-fnative-struct'
	fi
	;;
      *)
	if $our_gcc -v --help 2>/dev/null | grep ms-bitfields >/dev/null; then
	  msnative_struct='-mms-bitfields'
	fi
	;;
    esac
563
    if test "x$msnative_struct" = x ; then
564
      AC_MSG_RESULT([no way])
565
      AC_MSG_WARN([build will be incompatible with GTK+ DLLs])
566 567 568 569 570 571 572
    else
      CFLAGS="$CFLAGS $msnative_struct"
      AC_MSG_RESULT([${msnative_struct}])
    fi
  fi
fi

573 574 575 576 577 578 579 580 581
if test "x$GCC" = xyes; then
  gcc_version=`$CC -v 2>&1|grep 'gcc version'|sed -e 's/.*gcc version \([[0-9.]]\+\)[[^0-9.]].*/\1/'`
  if test "x$gcc_version" = "x7.2.0" ; then
    warning_gcc="
WARNING: GCC 7.2.0 has a serious bug affecting GEGL/GIMP. We advise
         against using this version of the compiler (previous and
         further versions are fine).
         See https://bugzilla.gnome.org/show_bug.cgi?id=787222"
  fi
582 583 584 585 586 587 588 589 590 591 592 593 594 595 596
  # For GCC, use -v which has more information than --version.
  CC_VERSION="\\\\t`$CC -v 2>&1 | sed -e 's/$/\\\\n\\\\t/g' | tr -d '\n'`"
else
  # This is the list of common options used by autotools to check
  # versions for various compilers.
  CC_VERSION="\\\\t`$CC --version 2>&1 | sed -e 's/$/\\\\n\\\\t/g' | tr -d '\n'`"
  if test $? != 0; then
    CC_VERSION="\\\\t`$CC -v 2>&1` | sed -e 's/$/\\\\n\\\\t/g' | tr -d '\n'"
    if test $? != 0; then
      CC_VERSION="\\\\t`$CC -V 2>&1` | sed -e 's/$/\\\\n\\\\t/g' | tr -d '\n'"
      if test $? != 0; then
        CC_VERSION="\\\\t`$CC -qversion 2>&1` | sed -e 's/$/\\\\n\\\\t/g' | tr -d '\n'"
      fi
    fi
  fi
597
fi
598
AC_SUBST(CC_VERSION)
599

600 601 602 603
AC_HEADER_STDC
AC_HEADER_SYS_WAIT
AC_HEADER_TIME

604
AC_CHECK_HEADERS(execinfo.h fcntl.h sys/param.h sys/prctl.h sys/thr.h sys/time.h sys/times.h sys/wait.h unistd.h)
605
AC_CHECK_FUNCS(backtrace, , AC_CHECK_LIB(execinfo, backtrace))
606 607 608 609 610 611

AC_TYPE_PID_T
AC_FUNC_VPRINTF

AC_FUNC_ALLOCA

612
# check some more funcs
Sven Neumann's avatar
Sven Neumann committed
613
AC_CHECK_FUNCS(fsync)
614
AC_CHECK_FUNCS(difftime mmap)
615
AC_CHECK_FUNCS(thr_self)
616

Sven Neumann's avatar
Sven Neumann committed
617

618 619
AM_BINRELOC

620

621 622
# _NL_MEASUREMENT_MEASUREMENT is an enum and not a define
AC_MSG_CHECKING([for _NL_MEASUREMENT_MEASUREMENT])
623 624
AC_LINK_IFELSE(
  [AC_LANG_PROGRAM(
625 626 627 628
    [[#include <langinfo.h>]],
    [[char c = *((unsigned char *)  nl_langinfo(_NL_MEASUREMENT_MEASUREMENT));]])],
  [nl_ok=yes],
  [nl_ok=no])
629 630 631 632 633 634
AC_MSG_RESULT($nl_ok)
if test "$nl_ok" = "yes"; then
  AC_DEFINE(HAVE__NL_MEASUREMENT_MEASUREMENT, 1,
	    [Define to 1 if _NL_MEASUREMENT_MEASUREMENT is available])
fi

635 636 637 638 639 640 641 642 643 644 645 646 647 648
# Macro to keep track of failed dependencies.

required_deps=''

# To add a required dependency error, call: add_deps_error([dependency]).
# If details about the dependency are needed:
# add_deps_error([dependency], [first line, second line])
m4_define([add_deps_error], [
  AC_MSG_NOTICE([Eeeeeeeeeeeeeeeeeeeeek! Missing dep: $1])
  required_deps="$required_deps
  - Error: missing dependency $1"
  m4_foreach([more], [$2], [
  required_deps="$required_deps
      *** more"])])
649

650 651 652
######################
# Internationalisation
######################
653

654
IT_PROG_INTLTOOL(intltool_required_version)
655
AM_GLIB_GNU_GETTEXT
656

657
# Testing xgettext version since we had some problem with localizing script-fu. See bug 720052.
658 659 660
AC_MSG_CHECKING([for xgettext version (>= xgettext_required_version)])
XGETTEXT_REQUIRED_VERSION_MAJOR=`echo $XGETTEXT_REQUIRED_VERSION | awk -F. '{ print $ 1; }'`
XGETTEXT_REQUIRED_VERSION_MINOR_1=`echo $XGETTEXT_REQUIRED_VERSION | awk -F. '{ print $ 2; }'`
661 662 663 664 665

XGETTEXT_APPLIED_VERSION=`$XGETTEXT --version | head -1 | cut -d" " -f4`
XGETTEXT_APPLIED_VERSION_MAJOR=`echo $XGETTEXT_APPLIED_VERSION | awk -F. '{ print $ 1; }'`
XGETTEXT_APPLIED_VERSION_MINOR_1=`echo $XGETTEXT_APPLIED_VERSION | awk -F. '{ print $ 2; }'`

666
have_required_xgettext="no"
667
if test -n "$XGETTEXT_APPLIED_VERSION_MAJOR"; then
668 669 670
    if test "$XGETTEXT_REQUIRED_VERSION_MAJOR" -lt "$XGETTEXT_APPLIED_VERSION_MAJOR"; then
        have_required_xgettext="yes"
    elif test "$XGETTEXT_REQUIRED_VERSION_MAJOR" -eq "$XGETTEXT_APPLIED_VERSION_MAJOR"; then
671
        if test -n "$XGETTEXT_APPLIED_VERSION_MINOR_1"; then
672 673
            if test "$XGETTEXT_REQUIRED_VERSION_MINOR_1" -le "$XGETTEXT_APPLIED_VERSION_MINOR_1"; then
                have_required_xgettext="yes"
674 675 676 677
            fi
        fi
    fi
fi
678
AC_MSG_RESULT($have_required_xgettext)
679

680 681
if test "x$have_required_xgettext" = "xno"; then
    add_deps_error([xgettext], [xgettext >= xgettext_required_version])
682
fi
683

Sven Neumann's avatar
Sven Neumann committed
684 685 686 687
###########
# iso-codes
###########

688 689 690 691 692
AC_MSG_CHECKING([for iso-codes])
PKG_CHECK_EXISTS(iso-codes,
  have_iso_codes="yes"
  AC_DEFINE(HAVE_ISO_CODES, 1,
  	    [Define to 1 if the iso-codes package is available])
693
  ISO_CODES_PREFIX=`$PKG_CONFIG --variable=prefix iso-codes`
694 695 696 697 698 699 700 701 702
  ISO_CODES_LOCATION="$ISO_CODES_PREFIX/share/xml/iso-codes"
  ISO_CODES_LOCALEDIR="$ISO_CODES_PREFIX/$DATADIRNAME/locale",
  have_iso_codes="no (iso-codes package not found)")
AC_MSG_RESULT($have_iso_codes)

AC_SUBST(ISO_CODES_LOCATION)
AC_SUBST(ISO_CODES_LOCALEDIR)


703 704 705
###############################
# Checks for required libraries
###############################
706

707 708
PKG_CHECK_MODULES(BABL, [babl >= babl_required_version],,
                  [add_deps_error([babl >= babl_required_version])])
709 710
PKG_CHECK_MODULES(GEGL, gegl-gegl_major_minor_version >= gegl_required_version,,
                  [add_deps_error([gegl-gegl_major_minor_version >= gegl_required_version])])
711 712
PKG_CHECK_MODULES(ATK, atk >= atk_required_version,,
                  [add_deps_error([atk >= atk_required_version])])
713

714 715 716 717 718 719 720 721 722
# glib 2.56.0 and 2.56.1 have a bad bug on Win32, breaking the file
# chooser dialogs. This has been fixed, but no release made yet. When
# 2.56.2 is released, the additional test for these broken versions can
# be removed and we can bump the requirement to glib 2.56.2.
AM_PATH_GLIB_2_0(glib_required_version,
                 [if test "x$platform_win32" = "xyes"; then
                   PKG_CHECK_MODULES(GLIB_WIN_BUG, glib-2.0 >= 2.56.0 glib-2.0 < 2.56.2,
                                     [add_deps_error([glib >= glib_required_version except glib 2.56.0 and 2.56.1 (broken on Win32 - bug 795855)])],:)
                 fi],
723 724 725
                 [add_deps_error([glib >= glib_required_version],
                                 [Test for GLIB failed])],
                 gobject)
726

727 728
PKG_CHECK_MODULES(GMODULE_NO_EXPORT, gmodule-no-export-2.0,,
                  [add_deps_error([gmodule-no-export-2.0])])
729

730 731
PKG_CHECK_MODULES(GIO, gio-2.0,,
                  [add_deps_error([gio-2.0])])
732

733
if test "x$os_win32" = "xyes"; then
734 735
  PKG_CHECK_MODULES(GIO_WINDOWS, gio-windows-2.0,,
                    [add_deps_error([gio-windows-2.0])])
736
else
737 738
  PKG_CHECK_MODULES(GIO_UNIX, gio-unix-2.0,,
                    [add_deps_error([gio-unix-2.0])])
739 740
fi

741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767
AC_MSG_CHECKING([for glib-networking (GIO TLS implementation)])
gimp_save_CFLAGS="$CFLAGS"
gimp_save_LIBS="$LIBS"
CFLAGS="$CFLAGS $GIO_CFLAGS"
LIBS="$LIBS $GIO_LIBS"
AC_RUN_IFELSE([AC_LANG_PROGRAM([#include <gio/gio.h>],
                               [return !g_tls_backend_supports_tls (g_tls_backend_get_default ());])],
              [have_glib_networking="yes"],
              [have_glib_networking="no"],
              [have_glib_networking="unknown (cross-compiling)"])
CFLAGS="$gimp_save_CFLAGS"
LIBS="$gimp_save_LIBS"
AC_MSG_RESULT($have_glib_networking)

if test "x$have_glib_networking" = "xno"; then
  add_deps_error([glib-networking],
      [Test for glib-networking failed. This is required.])
elif test "x$have_glib_networking" != "xyes"; then
  warning_glib_networking="
WARNING: Test for glib-networking cannot be performed while cross-compiling.
         Make sure glib-networking is installed, otherwise GIMP will not be able
         to display the remote help pages through the help browser, nor will it
         be able to open remote HTTPS (or other protocol using SSL/TLS) files.
         HTTPS is becoming the expected standard and should not be considered
         optional anymore."
fi

768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785
# AM_PATH_GLIB_2_0 already fills in the variable GLIB_COMPILE_RESOURCES.
# Unfortunately it looks it up using $PKG_CONFIG, which search in
# target-installed libraries, hence it would return a tool for the
# target architecture in case of cross-compilation (which can't be run
# during build, unless there is some compatibility layer in the OS).
# Therefore we make our own check.
AC_MSG_CHECKING([for native glib-compile-resources])
if test -z "$HOST_GLIB_COMPILE_RESOURCES"; then
  # Do not use $PKG_CONFIG as it will search target files.
  HOST_GLIB_COMPILE_RESOURCES=`pkg-config --variable=glib_compile_resources gio-2.0`
  if test -z "$HOST_GLIB_COMPILE_RESOURCES"; then
    # As fallback, search in path.
    AC_PATH_PROG(HOST_GLIB_COMPILE_RESOURCES, glib-compile-resources, no)
    if test "x$HOST_GLIB_COMPILE_RESOURCES" = xno; then
      add_deps_error([glib-compile-resources],
                     [Could not find glib-compile-resources in your PATH.])
    fi
  fi
786
fi
787 788
AC_MSG_RESULT($HOST_GLIB_COMPILE_RESOURCES)
AC_SUBST(HOST_GLIB_COMPILE_RESOURCES)
789

790 791
AC_PATH_PROG(GDBUS_CODEGEN, gdbus-codegen, no)
if test "x$GDBUS_CODEGEN" = xno; then
792
  add_deps_error([gdbus-codegen], [Could not find gdbus-codegen in your PATH.])
793 794
fi

795 796 797
AC_MSG_CHECKING([if GLib is version 2.57.0 or newer])
if $PKG_CONFIG --atleast-version=2.57.0 glib-2.0; then
  have_glib_2_57=yes
798
else
799
  have_glib_2_57=no
800
fi
801
AC_MSG_RESULT($have_glib_2_57)
802

803 804
AC_PATH_PROG(GEGL, gegl, no)
if test "x$GEGL" = xno; then
805
  add_deps_error([gegl], [Could not find native gegl executable in your PATH.])
806 807
fi

808

809
# Check for bind_textdomain_codeset, including -lintl if GLib brings it in.
810 811
gimp_save_LIBS=$LIBS
LIBS="$LIBS $GLIB_LIBS"
812
AC_CHECK_FUNCS(bind_textdomain_codeset,,
813 814
  add_deps_error([bind_textdomain_codeset()],
                 [Check for bind_textdomain_codeset() failed! This is required.]))
815 816 817 818 819
LIBS=$gimp_save_LIBS


AC_PATH_XTRA

820 821
AM_PATH_GTK_3_0(gtk_required_version, :,
  add_deps_error([gtk+-3.0 >= gtk_required_version],
822
                 [Test for GTK+ failed.]))
Elliot Lee's avatar
Elliot Lee committed
823

824 825
AC_PATH_PROG(GTK_UPDATE_ICON_CACHE, gtk-update-icon-cache, no)
if test "x$GTK_UPDATE_ICON_CACHE" = xno; then
826 827
  add_deps_error([gtk-update-icon-cache],
                 [Could not find gtk-update-icon-cache in your PATH.])
828 829
fi

830 831
PKG_CHECK_MODULES(GDK_PIXBUF, gdk-pixbuf-2.0 >= gdk_pixbuf_required_version,,
                  [add_deps_error([gdk-pixbuf-2.0 >= gdk_pixbuf_required_version])])
832

833
AC_PATH_PROG(GDK_PIXBUF_CSOURCE, gdk-pixbuf-csource, no)
834
if test "x$GDK_PIXBUF_CSOURCE" = xno; then
835 836
  add_deps_error([gdk-pixbuf-csource],
                 [Could not find gdk-pixbuf-csource in your PATH.])
837 838
fi

839 840
PKG_CHECK_MODULES(CAIRO, cairo >= cairo_required_version,,
                  [add_deps_error([cairo >= cairo_required_version])])
841

842
PKG_CHECK_MODULES(PANGOCAIRO,
843 844 845
                  [pangocairo >= pangocairo_required_version pangoft2], :,
                  [add_deps_error([pangocairo >= pangocairo_required_version and pangoft2],
                                  [We require Pango with the optional support for Cairo compiled in.])])
846

Martin Nordholts's avatar
Martin Nordholts committed
847
gimp_save_CFLAGS=$CFLAGS
848 849
CFLAGS="$PANGOCAIRO_CFLAGS $CFLAGS"

850
# Windows platform had a few bugs fixed in earlier fontconfig.
851 852 853 854 855
# The bugs are serious enough (for instance very slow startups at each
# GIMP start, but also slowness when closing, broken font features,
# etc.) that we should bump the requirement for Win32.
# See bugs 708110 (fontconfig 2.11.0), 703331 (2.11.1) and 782676
# (2.12.4).
856 857
PKG_CHECK_MODULES(FONTCONFIG, fontconfig >= fontconfig_required_version,,
                  [add_deps_error([fontconfig >= fontconfig_required_version])])
858

859 860 861
AC_MSG_CHECKING([if Pango is version 1.43.0 or newer])
if $PKG_CONFIG --atleast-version=1.43.0 pango; then
  have_pango_1_43=yes
862
else
863
  have_pango_1_43=no
864
fi
865
AC_MSG_RESULT($have_pango_1_43)
866

867
CFLAGS="$PANGOCAIRO_CFLAGS $CFLAGS"
868 869

AC_MSG_CHECKING([if Pango is built with a recent fontconfig])
870 871 872 873 874 875
AC_COMPILE_IFELSE(
  [AC_LANG_PROGRAM(
    [[#include <fontconfig/fontconfig.h>]],
    [[FcObjectSet *os; os = FcObjectSetBuild (FC_FAMILY, FC_WIDTH);]])],
  [fontconfig_ok=yes],
  [fontconfig_ok=no])
876 877 878 879 880 881 882
AC_MSG_RESULT($fontconfig_ok)

CFLAGS=$gimp_save_CFLAGS

if test "x$fontconfig_ok" = xno; then
  AC_MSG_ERROR([
*** You have a fontconfig >= fontconfig_required_version installed on your system, but your
883
*** Pango library is using an older version. This old version is probably in
884
*** /usr/X11R6. Look at the above output, and note that the result for
885
*** FONTCONFIG_CFLAGS is not in the result for PANGOCAIRO_CFLAGS, and that
886 887 888 889 890 891 892
*** there is likely an extra -I line, other than the ones for GLIB,
*** Freetype, and Pango itself. That's where your old fontconfig files are.
*** Rebuild pango, and make sure that it uses the newer fontconfig. The
*** easiest way be sure of this is to simply get rid of the old fontconfig.
*** When you rebuild pango, make sure the result for FONTCONFIG_CFLAGS is
*** the same as the result here.])
fi
893

894

895
PKG_CHECK_MODULES(FREETYPE, freetype2 >= freetype2_required_version,,
896
                  [add_deps_error([freetype2_required_version >= freetype2_required_version])])
897

898 899
PKG_CHECK_MODULES(HARFBUZZ, harfbuzz >= harfbuzz_required_version,,
                 [add_deps_error([harfbuzz >= harfbuzz_required_version])])
900

901 902
PKG_CHECK_MODULES(GEXIV2, gexiv2 >= gexiv2_required_version,,
                 [add_deps_error([gexiv2 >= gexiv2_required_version])])
903

904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928
#################################
# Check for debug console (Win32)
#################################

AC_ARG_ENABLE(win32-debug-console,
              [  --enable-win32-debug-console
                          open a console when starting the program
                          (default=auto)],,
              enable_win32_debug_console=auto)

AC_MSG_CHECKING([if GIMP should open a debug console at start])
if test "x$platform_win32" != "xyes"; then
   enable_win32_debug_console=no
elif test "x$enable_win32_debug_console" != xno &&
     test "x$enable_win32_debug_console" != xyes; then
  # By default, we enable the debug console only for unstable builds.
   enable_win32_debug_console=gimp_unstable
fi

if test "x$enable_win32_debug_console" = "xyes"; then
  AC_DEFINE(ENABLE_WIN32_DEBUG_CONSOLE, 1,
            [Define to 1 if GIMP should open a debug console at start])
fi
AC_MSG_RESULT([$enable_win32_debug_console])

929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956
######################################
# Check for 32-bit DLLs (Win32 64-bit)
######################################

AC_ARG_WITH(win32-32bit-dll-folder,
            [  --with-win32-32bit-dll-folder[=DIR]
                          alternative folder with 32-bit versions of DLL libraries on Windows (default: 32/bin/)],,
            with_win32_32bit_dll_folder="32/bin")

AC_MSG_CHECKING([the alternative folder containing 32-bit DLLs on Windows])
if test "x$platform_win32" = "xyes"; then
  case "$host_cpu" in
    x86_64)
    ;;
    *)
    with_win32_32bit_dll_folder="no"
    ;;
  esac
else
    with_win32_32bit_dll_folder="no"
fi

if test "x$with_win32_32bit_dll_folder" != "xno"; then
  AC_DEFINE_UNQUOTED(WIN32_32BIT_DLL_FOLDER, "$with_win32_32bit_dll_folder",
                     [Define if 32-bit versions of libraries are packaged in an alternative folder])
fi
AC_MSG_RESULT([$with_win32_32bit_dll_folder])

957 958 959 960
#####################
# Check for Dr. Mingw
#####################

961
enable_drmingw="no"
962 963 964
if test "x$platform_win32" = "xyes"; then
   # Check for Dr. Mingw
   AC_CHECK_LIB(exchndl, ExcHndlSetLogFileNameA,
965 966
                [
                 AC_DEFINE(HAVE_EXCHNDL, 1, [Define to 1 when Dr. MingW is available])
967
                 LIBS="-lexchndl $LIBS"
968 969 970 971
                 enable_drmingw="yes"
                ],
                [enable_drmingw="no (ExcHndl library missing)"]
               )
972 973 974
fi
AM_CONDITIONAL(HAVE_EXCHNDL, test "x$ac_cv_lib_exchndl_ExcHndlSetLogFileNameA" = "xyes")

975 976 977 978 979 980
###########################
# Check for backtrace() API
###########################

AC_CHECK_HEADERS([execinfo.h])

981 982 983
##########################################
# Check for some special functions we need
##########################################
Elliot Lee's avatar
Elliot Lee committed
984

David Neary's avatar
David Neary committed
985 986
AC_CHECK_HEADERS(math.h ieeefp.h)

987
# DU4 native cc currently needs -std1 for ANSI mode (instead of K&R)
Manish Singh's avatar
Manish Singh committed
988 989 990
AC_MSG_CHECKING([for extra flags to get ANSI library prototypes])
gimp_save_LIBS=$LIBS
LIBS="$LIBS -lm"
991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007
AC_RUN_IFELSE(
  [AC_LANG_SOURCE([[
    #include <math.h>
    int main (void) { return (log(1) != log(1.)); }]])],
  [AC_MSG_RESULT(none needed)],
  [gimp_save_CFLAGS=$CFLAGS
   CFLAGS="$CFLAGS -std1"
   AC_RUN_IFELSE(
     [AC_LANG_SOURCE([[
       #include <math.h>
       int main (void) { return (log(1) != log(1.)); }]])],
     [AC_MSG_RESULT(-std1)],
     [AC_MSG_RESULT()
      CFLAGS=$gimp_save_CFLAGS
      AC_MSG_WARN([No ANSI prototypes found in library. (-std1 didn't work.)])],
     [AC_MSG_RESULT])],
  [AC_MSG_RESULT()])
1008

1009
# Check for finite or isfinite
1010 1011
AC_CHECK_FUNCS(finite, , [
  AC_MSG_CHECKING(for finite in <math.h>)
1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026
  AC_LINK_IFELSE(
    [AC_LANG_PROGRAM(
      [[#include <math.h>]],
      [[double f = 0.0; finite (f)]])],
    [AC_DEFINE(HAVE_FINITE, 1)
     AC_MSG_RESULT(yes)],
    [AC_MSG_RESULT(no)
     AC_MSG_CHECKING(for isfinite in <math.h>)
     AC_LINK_IFELSE(
       [AC_LANG_PROGRAM(
         [[#include <math.h>]],
         [[float f = 0.0; isfinite(f)]])],
       [AC_DEFINE([HAVE_ISFINITE],[1],[Define to 1 if you have the isfinite function.])
        AC_MSG_RESULT(yes)],
       [AC_MSG_RESULT(no)])])])
1027 1028 1029
AC_SUBST(HAVE_FINITE)
AC_SUBST(HAVE_ISFINITE)

1030 1031 1032
LIBS=$gimp_save_LIBS


1033
# check for rint
1034 1035 1036 1037 1038 1039
AC_CHECK_FUNC(rint, AC_DEFINE(HAVE_RINT, 1,
                              [Define to 1 if you have the rint function.]), [
  AC_CHECK_LIB(m, rint, [
    AC_DEFINE(HAVE_RINT)])])


Ell's avatar
Ell committed
1040 1041 1042 1043 1044
# check for vfork
AC_CHECK_FUNCS(vfork, ,)
AC_SUBST(HAVE_VFORK)


1045 1046 1047 1048 1049 1050
##############################
# Check for attributes we need
##############################

AX_GCC_FUNC_ATTRIBUTE(destructor)

1051 1052 1053
#####################################################################
# Check for extra libs needed for getaddrinfo, getnameinfo and socket
#####################################################################
1054 1055 1056 1057

gimp_save_LIBS=$LIBS
LIBS=""

1058
AC_CHECK_FUNCS(getaddrinfo, , AC_CHECK_LIB(nsl, getaddrinfo))
1059
AC_CHECK_FUNCS(getnameinfo, , AC_CHECK_LIB(nsl, getnameinfo))
1060 1061 1062 1063 1064 1065 1066
AC_CHECK_LIB(socket, socket)

SOCKET_LIBS="$LIBS"
LIBS=$gimp_save_LIBS

AC_SUBST(SOCKET_LIBS)

1067 1068 1069 1070
###################################
# Check for Intel vector intrinsics
###################################
intrinsics_save_CFLAGS="$CFLAGS"
1071
#FIXME: Check the CFLAGS separately
1072 1073 1074 1075 1076 1077
GIMP_DETECT_CFLAGS(SSE_MATH_CFLAG, '-mfpmath=sse')
GIMP_DETECT_CFLAGS(SSE2_CFLAG, '-msse2')
SSE2_EXTRA_CFLAGS="$SSE_MATH_CFLAG $SSE2_CFLAG"
CFLAGS="$intrinsics_save_CFLAGS $SSE2_EXTRA_CFLAGS"

AC_MSG_CHECKING(whether we can compile SSE2 intrinsics)
1078
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <emmintrin.h>]],[[__m128i one = _mm_set1_epi32 (1);]])],
1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092
  AC_DEFINE(COMPILE_SSE2_INTRINISICS, 1, [Define to 1 if SSE2 intrinsics are available.])
  AC_SUBST(SSE2_EXTRA_CFLAGS)
  AC_MSG_RESULT(yes)
,
  AC_MSG_RESULT(no)
  AC_MSG_WARN([SSE2 intrinsics not available.])
)


GIMP_DETECT_CFLAGS(SSE4_1_CFLAG, '-msse4.1')
SSE4_1_EXTRA_CFLAGS="$SSE_MATH_CFLAG $SSE4_1_CFLAG"
CFLAGS="$intrinsics_save_CFLAGS $SSE4_1_EXTRA_CFLAGS"

AC_MSG_CHECKING(whether we can compile SSE4.1 intrinsics)
1093
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <smmintrin.h>]],[[__v4sf a, b, c; c = _mm_blend_ps(a, b, 0x08);]])],
1094 1095 1096 1097 1098 1099 1100 1101 1102
  AC_DEFINE(COMPILE_SSE4_1_INTRINISICS, 1, [Define to 1 if SSE4.1 intrinsics are available.])
  AC_SUBST(SSE4_1_EXTRA_CFLAGS)
  AC_MSG_RESULT(yes)
,
  AC_MSG_RESULT(no)
  AC_MSG_WARN([SSE4.1 intrinsics not available.])
)
CFLAGS="$intrinsics_save_CFLAGS"

1103

1104 1105 1106
########################
# Check for MMX assembly
########################
1107

1108 1109 1110 1111 1112 1113
AC_ARG_ENABLE(mmx,
  [  --enable-mmx            enable MMX support (default=auto)],,
  enable_mmx=$have_x86)

AC_ARG_ENABLE(sse,
  [  --enable-sse            enable SSE support (default=auto)],,
1114
  enable_sse=$enable_mmx)
1115 1116

if test "x$enable_mmx" = xyes; then
1117 1118
  GIMP_DETECT_CFLAGS(MMX_EXTRA_CFLAGS, '-mmmx')
  SSE_EXTRA_CFLAGS=
1119

1120
  AC_MSG_CHECKING(whether we can compile MMX code)
1121

1122 1123
  mmx_save_CFLAGS="$CFLAGS"
  CFLAGS="$mmx_save_CFLAGS $MMX_EXTRA_CFLAGS"
1124

1125
  AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[asm ("movq 0, %mm0");]])],
1126

1127 1128 1129
    AC_DEFINE(USE_MMX, 1, [Define to 1 if MMX assembly is available.])
    AC_MSG_RESULT(yes)

1130
    if test "x$enable_sse" = xyes; then
1131 1132
      GIMP_DETECT_CFLAGS(sse_flag, '-msse')
      SSE_EXTRA_CFLAGS="$MMX_EXTRA_CFLAGS $sse_flag"
1133 1134 1135

      AC_MSG_CHECKING(whether we can compile SSE code)

1136 1137
      CFLAGS="$CFLAGS $sse_flag"

1138
      AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[asm ("movntps %xmm0, 0");]])],
1139 1140
        AC_DEFINE(USE_SSE, 1, [Define to 1 if SSE assembly is available.])
        AC_MSG_RESULT(yes)
1141
      ,
1142 1143 1144
        enable_sse=no
        AC_MSG_RESULT(no)
        AC_MSG_WARN([The assembler does not support the SSE command set.])
1145
      )
1146

1147
    fi
1148
  ,
1149 1150
    enable_mmx=no
    AC_MSG_RESULT(no)
1151
    AC_MSG_WARN([The assembler does not support the MMX command set.])
1152
  )
1153

1154 1155 1156 1157
  CFLAGS="$mmx_save_CFLAGS"

  AC_SUBST(MMX_EXTRA_CFLAGS)
  AC_SUBST(SSE_EXTRA_CFLAGS)
1158
fi
1159

1160 1161

############################
1162
# Check for AltiVec assembly
1163 1164 1165
############################

AC_ARG_ENABLE(altivec,
1166
  [  --enable-altivec        enable AltiVec support (default=auto)],,
1167 1168 1169
  enable_altivec=$have_ppc)

if test "x$enable_altivec" = xyes; then
1170

1171
  GIMP_DETECT_CFLAGS(altivec_flag, '-faltivec' '-maltivec -mabi=altivec')
1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184

  ALTIVEC_EXTRA_CFLAGS=
  case "$altivec_flag" in
    -maltivec*)
      altivec_save_CPPFLAGS="$CPPFLAGS"
      CPPFLAGS="$altivec_save_CPPFLAGS $altivec_flag"
      AC_CHECK_HEADERS(altivec.h, [ALTIVEC_EXTRA_CFLAGS="$altivec_flag"])
      CPPFLAGS="$altivec_save_CPPFLAGS"
      ;;
    *)
      ALTIVEC_EXTRA_CFLAGS="$altivec_flag"
      ;;
  esac
1185
  AC_SUBST(ALTIVEC_EXTRA_CFLAGS)
1186

1187
  AC_MSG_CHECKING(whether we can compile AltiVec code)
1188

1189
  can_use_altivec=no
1190
  if test -z "$ALTIVEC_EXTRA_CFLAGS"; then
1191
    AC_MSG_RESULT(no)
Manish Singh's avatar
Manish Singh committed
1192
    AC_MSG_WARN([The compiler does not support the AltiVec command set.])
1193
  else
1194 1195
    case "$host_os" in
      darwin*)
1196 1197 1198 1199 1200
        can_use_altivec=yes
        AC_DEFINE(HAVE_ALTIVEC_SYSCTL, 1,
         [Define to 1 if the altivec runtime test should use a sysctl.])
        ;;
      *)
1201
        AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[asm ("vand %v0, %v0, %v0");]])],
1202 1203 1204 1205
          can_use_altivec=yes, can_use_altivec=no)
        ;;
    esac
    AC_MSG_RESULT($can_use_altivec)
1206

1207 1208 1209 1210 1211 1212 1213
    if test "x$can_use_altivec" = "xyes"; then
      AC_DEFINE(USE_ALTIVEC, 1, [Define to 1 if AltiVec support is available.])
    else
      enable_altivec=no
      AC_MSG_WARN([The assembler does not support the AltiVec command set.])
    fi
  fi
1214 1215

  enable_altivec="$can_use_altivec"
1216
fi
1217

1218

1219 1220 1221
###################################
# Checks for shared memory handling
###################################
1222

1223
# MacOS X has broken SysV shm
1224 1225
case "$host_os" in
  darwin* | rhapsody* | machten*)
1226
    shmdefault=posix
1227 1228 1229 1230 1231 1232 1233
    ;;
  *)
    shmdefault=sysv
    ;;
esac

shmtype=auto
1234
AC_ARG_WITH(shm, [  --with-shm=none|sysv|posix|auto    shared memory transport type (default=auto)], shmtype=$with_shm)
1235 1236

case $shmtype in
1237
  none|sysv|posix) ;;
1238
  auto) shmtype=$shmdefault ;;
1239
  *) AC_MSG_ERROR([Invalid shared memory transport type: use none, sysv, posix, or auto.]);;
1240 1241
esac

1242 1243 1244 1245

if test "x$platform_win32" = "xyes"; then
  shmtype=win32
elif test "x$shmtype" = "xsysv"; then
1246 1247
  AC_CHECK_HEADER(sys/ipc.h,
    [AC_DEFINE(HAVE_IPC_H, 1,
1248
               [Define to 1 if you have the <sys/ipc.h> header file.])],
1249 1250 1251 1252 1253
    no_sys_ipc=yes)
  AC_CHECK_HEADER(sys/shm.h,
    [AC_DEFINE(HAVE_SHM_H, 1,
               [Define to 1 if you have the <sys/shm.h> header file.])],
    no_sys_shm=yes)
1254

1255 1256
  if test "$ac_cv_header_sys_shm_h" = "yes"; then
    AC_MSG_CHECKING(whether shmctl IPC_RMID allowes subsequent attaches)
1257 1258
    AC_RUN_IFELSE(
      [AC_LANG_SOURCE([[
Elliot Lee's avatar
Elliot Lee committed
1259 1260 1261 1262 1263 1264 1265
	#include <sys/types.h>
	#include <sys/ipc.h>
	#include <sys/shm.h>
	int main()
	{
	  int id;
	  char *shmaddr;
1266
	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
Elliot Lee's avatar
Elliot Lee committed
1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279
	if (id == -1)
	  exit (2);
	  shmaddr = shmat (id, 0, 0);
	  shmctl (id, IPC_RMID, 0);
	  if ((char*) shmat (id, 0, 0) == (char*) -1)
	  {
	    shmdt (shmaddr);
	    exit (1);
	  }
	  shmdt (shmaddr);
	  shmdt (shmaddr);
	  exit (0);
	}
1280 1281 1282 1283 1284 1285
      ]])],
      [AC_DEFINE([IPC_RMID_DEFERRED_RELEASE],[1],
                 [Define to 1 if shared memory segments are released deferred.])
       AC_MSG_RESULT(yes)],
      [AC_MSG_RESULT(no)],
      [AC_MSG_RESULT(assuming no)])
1286 1287 1288 1289 1290 1291

    AC_DEFINE(USE_SYSV_SHM, 1, [Define to 1 to use SYSV shared memory])
  else
    shmtype=none
  fi
elif test "x$shmtype" = "xposix"; then
1292 1293 1294 1295 1296 1297
  have_shm_open=no

  AC_CHECK_FUNC(shm_open, have_shm_open=yes)

  RT_LIBS=
  if test "$have_shm_open" != "yes"; then
Manish Singh's avatar
Manish Singh committed
1298
    AC_CHECK_LIB(rt, shm_open, RT_LIBS="-lrt" have_shm_open=yes)
1299 1300
  fi
  AC_SUBST(RT_LIBS)
1301 1302 1303

  AC_CHECK_HEADER(sys/mman.h,
    [AC_DEFINE(HAVE_MMAN_H, 1,
1304
               [Define to 1 if you have the <sys/mman.h> header file.])],
1305 1306 1307
    no_sys_mman=yes)

  if test "$ac_cv_func_mmap" = "yes" &&
1308 1309
     test "$ac_cv_header_sys_mman_h" = "yes" &&
     test "$have_shm_open" = "yes"; then
1310 1311 1312
    AC_DEFINE(USE_POSIX_SHM, 1, [Define to 1 to use POSIX shared memory])
  else
    shmtype=none
1313
  fi
Elliot Lee's avatar
Elliot Lee committed
1314 1315
fi

1316 1317
AC_MSG_CHECKING(for shared memory transport type)
AC_MSG_RESULT($shmtype)
1318

1319

1320 1321 1322 1323 1324 1325
########################
# Define a symbol prefix
########################

AC_MSG_CHECKING([whether symbols are prefixed])

1326 1327
case "$host_os" in
  mingw*)
1328 1329 1330 1331
    case "$host_cpu" in 
	  x86_64) SYMPREFIX='' ;;
	  *) SYMPREFIX='_' ;;
	esac
1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348
    ;;
  darwin* | rhapsody* | machten*)
    SYMPREFIX='_'
    ;;
  *)
    ;;
esac

if test -n "$SYMPREFIX"; then
  AC_MSG_RESULT([yes, with a $SYMPREFIX])
else
  AC_MSG_RESULT(no)
fi

AC_SUBST(SYMPREFIX)


1349 1350 1351
############################
# Check for select and fdset
############################
Elliot Lee's avatar
Elliot Lee committed
1352

1353
if test "x$os_win32" != xyes; then
1354
  AC_MSG_CHECKING([fd_set and sys/select])
1355 1356 1357 1358 1359 1360
  AC_COMPILE_IFELSE(
    [AC_LANG_PROGRAM(
      [[#include <sys/types.h>]],
      [[fd_set readMask, writeMask;]])],
    [gimp_ok=yes],
    [gimp_ok=no])
1361
  if test "x$gimp_ok" = xno; then
1362
      AC_EGREP_HEADER(fd_mask, sys/select.h, gimp_ok=yes)
1363
      if test "x$gimp_ok" = xyes; then
1364 1365 1366 1367 1368
	  AC_DEFINE(HAVE_SYS_SELECT_H, 1,
		    [Define to 1 if you have the <sys/select.h> header.])
      fi
  fi
  AC_MSG_RESULT($gimp_ok)
1369
  if test "x$gimp_ok" = xno; then
1370 1371 1372
      AC_DEFINE(NO_FD_SET, 1,
		[Define to 1 if you don't have the fd_set typedef.])
  fi
Elliot Lee's avatar
Elliot Lee committed
1373 1374
fi

1375

1376
#############################
1377
# Threads and multi processor
1378
#############################
1379

1380
AC_ARG_ENABLE(mp, [  --disable-mp            disable support for multiple processors])
1381

1382
if test "x$enable_mp" != "xno"; then
1383 1384
  AC_DEFINE(ENABLE_MP, 1,
	    [Define to 1 to enable support for multiple processors.])
Sven Neumann's avatar
Sven Neumann committed
1385 1386
fi

1387

1388 1389 1390
################################
# Some plug-ins are X11 specific
################################
Sven Neumann's avatar
Sven Neumann committed
1391

1392
# Check if building for GTK+-X11
1393 1394
GTK_CHECK_BACKEND([x11], [gtk_required_version],
                  [have_gtk_x11=yes], [have_gtk_x11=no])
1395

1396
have_libxmu="no (building for `pkg-config --variable=targets gtk+-3.0`)"
1397

1398
if test "x$have_gtk_x11" = "xyes"; then
1399

1400
   # doc-shooter is X11 specific
1401 1402
   DOC_SHOOTER=doc-shooter

1403
   # screenshot plug-in needs to link to X11 explicitly
1404
   SCREENSHOT_LIBS="$X_LIBS -lX11"
1405

1406 1407 1408 1409 1410
   gimp_save_CFLAGS="$CFLAGS"
   gimp_save_LDFLAGS="$LDFLAGS"
   CFLAGS="$CFLAGS $GTK_CFLAGS"
   LDFLAGS="$LDFLAGS $X_LIBS"

1411
   # Test for Xmu
1412
   if test -z "$XMU_LIBS"; then
Sven Neumann's avatar
Sven Neumann committed
1413
      AC_CHECK_LIB(Xmu, XmuClientWindow,
1414
        [AC_CHECK_HEADERS(X11/Xmu/WinUtil.h,
1415
	  have_libxmu=yes
1416 1417
          XMU_LIBS="$X_LIBS $X_PRE_LIBS -lX11 -lXmu -lXt"
          SCREENSHOT_LIBS="$XMU_LIBS",
1418 1419
	  [have_libxmu="no (XMU header file not found)"],[#include <gdk/gdkx.h>])],
	[have_libxmu="no (XMU library not found)"], -lXt -lX11)
1420
   fi
1421

1422
   # Check for shaped window extension
1423 1424
   AC_CHECK_LIB(Xext, XShapeGetRectangles,
     [AC_CHECK_HEADERS(X11/extensions/shape.h,
1425
        SCREENSHOT_LIBS="$SCREENSHOT_LIBS -lXext",,[#include <gdk/gdkx.h>])],,
1426 1427 1428 1429
     -lX11 -lXext)

   CFLAGS="$gimp_save_CFLAGS"
   LDFLAGS="$gimp_save_LDFLAGS"
1430

1431
   # check for the XFixes extension
1432 1433 1434
   PKG_CHECK_MODULES(XFIXES, xfixes,
      AC_DEFINE(HAVE_XFIXES, 1,
                [Define to 1 to if the XFIXES X extension is available])
1435
      SCREENSHOT_LIBS="$SCREENSHOT_LIBS $XFIXES_LIBS",
1436
      true)
1437
fi
Sven Neumann's avatar
Sven Neumann committed
1438

1439 1440
AC_SUBST(XMU_LIBS)
AC_SUBST(SCREENSHOT_LIBS)
1441

1442
AC_SUBST(DOC_SHOOTER)
1443

1444

1445
GIMP_COMMAND='gimp-gimp_app_version'
1446

1447 1448
AC_SUBST(GIMP_COMMAND)

1449

1450 1451 1452 1453 1454 1455
############
# MIME types
############

# The list of MIME types that are supported by plug-ins that are compiled
# unconditionally:
1456
MIME_TYPES="image/bmp;image/g3fax;image/gif;image/x-fits;image/x-pcx;image/x-portable-anymap;image/x-portable-bitmap;image/x-portable-graymap;image/x-portable-pixmap;image/x-psd;image/x-sgi;image/x-tga;image/x-xbitmap;image/x-xwindowdump;image/x-xcf;image/x-compressed-xcf;image/x-gimp-gbr;image/x-gimp-pat;image/x-gimp-gih"
1457

1458 1459 1460 1461 1462 1463 1464 1465