configure.ac 84.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
m4_define([babl_required_version], [0.1.50])
47
m4_define([gegl_major_minor_version], [0.4])
48
m4_define([gegl_micro_version], [2])
49 50
m4_define([gegl_required_version],
          [gegl_major_minor_version.gegl_micro_version])
51 52 53
m4_define([glib_required_version], [2.56.0])
m4_define([atk_required_version], [2.4.0])
m4_define([gtk_required_version], [3.22.29])
54
m4_define([gdk_pixbuf_required_version], [2.30.8])
55
m4_define([cairo_required_version], [1.14.0])
56
m4_define([cairo_pdf_required_version], [1.12.2])
57
m4_define([pangocairo_required_version], [1.42.0])
58
m4_define([fontconfig_required_version], [2.12.4])
59
m4_define([freetype2_required_version], [2.1.7])
60
m4_define([harfbuzz_required_version], [0.9.19])
61
m4_define([gtkdoc_required_version], [1.0])
62
m4_define([webkit_required_version], [2.4.11])
63
m4_define([alsa_required_version], [1.0.0])
64
m4_define([rsvg_required_version], [2.40.6])
65
m4_define([wmf_required_version], [0.2.8])
66
m4_define([pygtk_required_version], [2.10.4])
67
m4_define([pycairo_required_version], [1.0.2])
68
m4_define([poppler_required_version], [0.44.0])
69
m4_define([poppler_data_required_version], [0.4.7])
70
m4_define([libgudev_required_version], [167])
71
m4_define([gexiv2_required_version], [0.10.6])
72
m4_define([libmypaint_required_version], [1.3.0])
73
m4_define([lcms_required_version], [2.8])
74
m4_define([libpng_required_version], [1.6.25])
75
m4_define([liblzma_required_version], [5.0.0])
76
m4_define([openexr_required_version], [1.6.1])
77
m4_define([openjpeg_required_version], [2.1.0])
78
m4_define([gtk_mac_integration_required_version], [2.0.0])
79
m4_define([intltool_required_version], [0.40.1])
80
m4_define([perl_required_version], [5.10.0])
81
m4_define([python2_required_version], [2.5.0])
82
m4_define([webp_required_version], [0.6.0])
83
m4_define([libheif_required_version], [1.1.0])
84

85 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.
m4_define([xgettext_recommended_version], [0.19])

89 90 91 92
AC_INIT([GIMP], [gimp_version],
        [http://bugzilla.gnome.org/enter_bug.cgi?product=GIMP],
        [gimp])

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

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

99 100 101 102 103
# 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])])

104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
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
119 120
GIMP_UNSTABLE=gimp_unstable
GIMP_FULL_NAME="gimp_full_name"
121 122 123
AC_SUBST(GIMP_MAJOR_VERSION)
AC_SUBST(GIMP_MINOR_VERSION)
AC_SUBST(GIMP_MICRO_VERSION)
124 125
AC_SUBST(GIMP_INTERFACE_AGE)
AC_SUBST(GIMP_BINARY_AGE)
126
AC_SUBST(GIMP_VERSION)
127 128 129 130 131 132 133 134 135
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)
136 137
AC_SUBST(GIMP_UNSTABLE)
AC_SUBST(GIMP_FULL_NAME)
138

139

140 141
# These are used in the .pc files
GLIB_REQUIRED_VERSION=glib_required_version
142
GDK_PIXBUF_REQUIRED_VERSION=gdk_pixbuf_required_version
143
GTK_REQUIRED_VERSION=gtk_required_version
144
GTK_WIN32_RECOMMENDED_VERSION=gtk_win32_recommended_version
145
CAIRO_REQUIRED_VERSION=cairo_required_version
146
CAIRO_PDF_REQUIRED_VERSION=cairo_pdf_required_version
147
GEGL_MAJOR_MINOR_VERSION=gegl_major_minor_version
148
GEGL_REQUIRED_VERSION=gegl_required_version
149
GEXIV2_REQUIRED_VERSION=gexiv2_required_version
150 151 152
LCMS_REQUIRED_VERSION=lcms_required_version
LIBPNG_REQUIRED_VERSION=libpng_required_version
LIBLZMA_REQUIRED_VERSION=liblzma_required_version
153
LIBMYPAINT_REQUIRED_VERSION=libmypaint_required_version
154 155 156 157
PANGOCAIRO_REQUIRED_VERSION=pangocairo_required_version
BABL_REQUIRED_VERSION=babl_required_version
FONTCONFIG_REQUIRED_VERSION=fontconfig_required_version
FREETYPE2_REQUIRED_VERSION=freetype2_required_version
158
HARFBUZZ_REQUIRED_VERSION=harfbuzz_required_version
159
WEBKIT_REQUIRED_VERSION=webkit_required_version
160
ATK_REQUIRED_VERSION=atk_required_version
161 162 163
RSVG_REQUIRED_VERSION=rsvg_required_version
WMF_REQUIRED_VERSION=wmf_required_version
POPPLER_REQUIRED_VERSION=poppler_required_version
164
POPPLER_DATA_REQUIRED_VERSION=poppler_data_required_version
165
OPENEXR_REQUIRED_VERSION=openexr_required_version
166
INTLTOOL_REQUIRED_VERSION=intltool_required_version
167
PERL_REQUIRED_VERSION=perl_required_version
168
PYTHON2_REQUIRED_VERSION=python2_required_version
169
WEBP_REQUIRED_VERSION=webp_required_version
170
LIBHEIF_REQUIRED_VERSION=libheif_required_version
171
XGETTEXT_RECOMMENDED_VERSION=xgettext_recommended_version
172
AC_SUBST(GLIB_REQUIRED_VERSION)
173
AC_SUBST(GDK_PIXBUF_REQUIRED_VERSION)
174
AC_SUBST(GTK_REQUIRED_VERSION)
175
AC_SUBST(GTK_WIN32_RECOMMENDED_VERSION)
176
AC_SUBST(CAIRO_REQUIRED_VERSION)
177
AC_SUBST(CAIRO_PDF_REQUIRED_VERSION)
178
AC_SUBST(GEGL_MAJOR_MINOR_VERSION)
179
AC_SUBST(GEGL_REQUIRED_VERSION)
180
AC_SUBST(GEXIV2_REQUIRED_VERSION)
181 182 183
AC_SUBST(LCMS_REQUIRED_VERSION)
AC_SUBST(LIBPNG_REQUIRED_VERSION)
AC_SUBST(LIBLZMA_REQUIRED_VERSION)
184
AC_SUBST(LIBMYPAINT_REQUIRED_VERSION)
185 186 187 188
AC_SUBST(PANGOCAIRO_REQUIRED_VERSION)
AC_SUBST(BABL_REQUIRED_VERSION)
AC_SUBST(FONTCONFIG_REQUIRED_VERSION)
AC_SUBST(FREETYPE2_REQUIRED_VERSION)
189
AC_SUBST(HARFBUZZ_REQUIRED_VERSION)
190
AC_SUBST(WEBKIT_REQUIRED_VERSION)
191
AC_SUBST(ATK_REQUIRED_VERSION)
192 193 194
AC_SUBST(RSVG_REQUIRED_VERSION)
AC_SUBST(WMF_REQUIRED_VERSION)
AC_SUBST(POPPLER_REQUIRED_VERSION)
195
AC_SUBST(POPPLER_DATA_REQUIRED_VERSION)
196
AC_SUBST(OPENEXR_REQUIRED_VERSION)
197
AC_SUBST(INTLTOOL_REQUIRED_VERSION)
198
AC_SUBST(PERL_REQUIRED_VERSION)
199
AC_SUBST(PYTHON2_REQUIRED_VERSION)
200
AC_SUBST(WEBP_REQUIRED_VERSION)
201
AC_SUBST(LIBHEIF_REQUIRED_VERSION)
202
AC_SUBST(XGETTEXT_RECOMMENDED_VERSION)
203 204 205 206

# The symbol GIMP_UNSTABLE is defined above for substitution in
# Makefiles and conditionally defined here as a preprocessor symbol
# and automake conditional.
207
if test "x$GIMP_UNSTABLE" = "xyes"; then
208
  AC_DEFINE(GIMP_UNSTABLE, 1,
209
            [Define to 1 if this is an unstable version of GIMP])
210
fi
211 212
AM_CONDITIONAL(GIMP_UNSTABLE, test "x$GIMP_UNSTABLE" = "xyes")

213 214

# libtool versioning
215
m4_define([lt_current], [m4_eval(100 * gimp_minor_version + gimp_micro_version - gimp_interface_age)])
216 217 218 219 220
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)
221 222
AC_SUBST(LT_CURRENT_MINUS_AGE)

223

224
# gettext i18n support
225
GETTEXT_PACKAGE=gimp30
226 227 228
AC_SUBST(GETTEXT_PACKAGE)
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE",
                   [The prefix for our gettext translation domains.])
229

230 231 232 233 234
# work around intltool-update issues during 'make distcheck'
AS_IF([test "x$0" != "x./configure"], [
        AC_SUBST([INTLTOOL_UPDATE], [/bin/true])
])

235 236
# Determine a C compiler to use
AC_PROG_CC
237
AX_PROG_CC_FOR_BUILD
238 239 240 241 242
# 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
243
AM_PROG_CC_C_O
Manish Singh's avatar
Manish Singh committed
244

245 246
# Determine a C++ compiler to use
AC_PROG_CXX
247
AX_CXX_COMPILE_STDCXX([14], , [mandatory])
248

249
# Initialize libtool
250 251
LT_PREREQ([2.2])
LT_INIT([disable-static win32-dll])
Elliot Lee's avatar
Elliot Lee committed
252

253
AM_PROG_AS
Elliot Lee's avatar
Elliot Lee committed
254

255
# Initialize maintainer mode
256
AM_MAINTAINER_MODE([enable])
257

258 259 260 261
# Check for pkg-config
PKG_PROG_PKG_CONFIG(0.16)


262 263 264 265 266 267 268 269
#########################
# Check host architecture
#########################

AC_CANONICAL_HOST

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

271 272 273
AC_MSG_CHECKING([for host processor])
case "$host_cpu" in
  i*86)
274 275
    have_x86=yes
    AC_DEFINE(ARCH_X86, 1, [Define to 1 if you are compiling for ix86.])
276
    AC_MSG_RESULT([x86])
277
    ;;
278
  x86_64)
279 280 281
    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.])
282
    AC_MSG_RESULT([x86-64])
283
    ;;
284
  ppc | powerpc)
285 286
    have_ppc=yes
    AC_DEFINE(ARCH_PPC, 1, [Define to 1 if you are compiling for PowerPC.])
287
    AC_MSG_RESULT([PowerPC])
288
    ;;
289
  ppc64 | powerpc64)
Manish Singh's avatar
Manish Singh committed
290 291 292
    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.])
293
    AC_MSG_RESULT([64-bit PowerPC])
Manish Singh's avatar
Manish Singh committed
294
    ;;
295
  *)
296
    AC_MSG_RESULT([unknown])
297 298 299 300
    ;;
esac


301 302 303
#################
# Check for Win32
#################
304

305 306 307
AC_MSG_CHECKING([if compiling for Win32])
case "$host_os" in
  mingw* | cygwin*)
308 309 310 311 312 313 314 315 316
    platform_win32=yes
    ;;
  *)
    platform_win32=no
    ;;
esac
AC_MSG_RESULT([$platform_win32])
AM_CONDITIONAL(PLATFORM_WIN32, test "$platform_win32" = "yes")

317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337
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
338
AC_SUBST(WIN32_LARGE_ADDRESS_AWARE)
339 340
AC_SUBST(PATHSEP)
AM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes")
341
AM_CONDITIONAL(OS_UNIX, test "$os_win32" != "yes")
342 343 344

if test "$os_win32" = "yes"; then
  AC_CHECK_PROG(ms_librarian, lib.exe, yes, no)
Manish Singh's avatar
Manish Singh committed
345
  AC_CHECK_TOOL(WINDRES, windres, :)
346 347
else
  WINDRES=":"
348
fi
Manish Singh's avatar
Manish Singh committed
349

350
AM_CONDITIONAL(MS_LIB_AVAILABLE, test "x$ms_librarian" = xyes)
351
AM_CONDITIONAL(HAVE_WINDRES, test "x$WINDRES" != "x:")
Manish Singh's avatar
Manish Singh committed
352 353

AC_SUBST(WINDRES)
354

355

356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374
####################
# 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)


375 376 377 378
###############
# Generic stuff
###############

379
# Checks for programs.
380 381
AC_PROG_INSTALL
AC_PROG_MAKE_SET
382
AC_PROG_LN_S
383

384
# Large file support for the swap file
385
AC_SYS_LARGEFILE
386

387
AC_MSG_CHECKING([whether to turn on debugging])
388
AC_ARG_ENABLE(debug,
389
              [  --enable-debug          turn on debugging (default=no)],
390 391 392
              if eval "test x$enable_debug = xyes"; then
                DEBUGFLAG="-g"
              fi)
393

394
if test -n "$DEBUGFLAG"; then
395
  AC_MSG_RESULT([yes])
396
  CFLAGS="$DEBUGFLAG $CFLAGS"
397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412
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])
413
fi
414

415
AC_ARG_ENABLE(ansi,
416
              [  --enable-ansi           turn on strict ansi (default=no)],,
417
              enable_ansi=no)
418

419
changequote(,)dnl
420 421 422 423 424
if eval "test x$GCC = xyes"; then
  case " $CFLAGS " in
  *[\ \	]-Wall[\ \	]*) ;;
  *) CFLAGS="$CFLAGS -Wall" ;;
  esac
Elliot Lee's avatar
Elliot Lee committed
425

426 427 428 429 430
  if test "x$enable_ansi" = "xyes"; then
    case " $CFLAGS " in
    *[\ \	]-ansi[\ \	]*) ;;
    *) CFLAGS="$CFLAGS -ansi" ;;
    esac
431

432 433 434 435
    case " $CFLAGS " in
    *[\ \	]-pedantic[\ \	]*) ;;
    *) CFLAGS="$CFLAGS -pedantic" ;;
    esac
Elliot Lee's avatar
Elliot Lee committed
436 437
  fi
fi
438
changequote([,])dnl
Elliot Lee's avatar
Elliot Lee committed
439

440

441
# If possible, warn if C99isms are used
442 443 444
GIMP_DETECT_CFLAGS(extra_warnings, '-Wdeclaration-after-statement')
CFLAGS="$CFLAGS $extra_warnings"

445
GIMP_DETECT_CFLAGS(extra_warnings, '-Wmissing-prototypes')
446 447 448 449 450
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.
451
#
452 453
GIMP_DETECT_CFLAGS(extra_warnings, '-Werror=missing-prototypes')
CFLAGS="$CFLAGS $extra_warnings"
454

455 456 457
GIMP_DETECT_CFLAGS(extra_warnings, '-Wstrict-prototypes')
CFLAGS="$CFLAGS $extra_warnings"

458 459 460
GIMP_DETECT_CFLAGS(extra_warnings, '-Wmissing-declarations')
CFLAGS="$CFLAGS $extra_warnings"

461 462 463 464 465
GIMP_DETECT_CFLAGS(extra_warnings, '-Winit-self')
CFLAGS="$CFLAGS $extra_warnings"

GIMP_DETECT_CFLAGS(extra_warnings, '-Wpointer-arith')
CFLAGS="$CFLAGS $extra_warnings"
466 467 468

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

470 471 472
GIMP_DETECT_CFLAGS(extra_warnings, '-Wmissing-format-attribute')
CFLAGS="$CFLAGS $extra_warnings"

473 474 475
GIMP_DETECT_CFLAGS(extra_warnings, '-Wformat-security')
CFLAGS="$CFLAGS $extra_warnings"

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

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

482 483 484
GIMP_DETECT_CFLAGS(extra_warnings, '-fno-common')
CFLAGS="$CFLAGS $extra_warnings"

485 486 487
GIMP_DETECT_CFLAGS(extra_warnings, '-fdiagnostics-show-option')
CFLAGS="$CFLAGS $extra_warnings"

488 489 490 491 492 493
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.
494 495 496 497
# 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"
498

499 500 501 502 503 504 505 506
# 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"


507 508 509 510
# 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".
511 512
if test "x$os_win32" = xyes; then
  if test "x$GCC" = xyes; then
513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531
    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
532
    if test "x$msnative_struct" = x ; then
533
      AC_MSG_RESULT([no way])
534
      AC_MSG_WARN([build will be incompatible with GTK+ DLLs])
535 536 537 538 539 540 541
    else
      CFLAGS="$CFLAGS $msnative_struct"
      AC_MSG_RESULT([${msnative_struct}])
    fi
  fi
fi

542 543 544 545 546 547 548 549 550
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
551 552 553 554 555 556 557 558 559 560 561 562 563 564 565
  # 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
566
fi
567
AC_SUBST(CC_VERSION)
568

569 570 571 572
AC_HEADER_STDC
AC_HEADER_SYS_WAIT
AC_HEADER_TIME

573
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)
574
AC_CHECK_FUNCS(backtrace, , AC_CHECK_LIB(execinfo, backtrace))
575 576 577 578 579 580

AC_TYPE_PID_T
AC_FUNC_VPRINTF

AC_FUNC_ALLOCA

581
# check some more funcs
Sven Neumann's avatar
Sven Neumann committed
582
AC_CHECK_FUNCS(fsync)
583
AC_CHECK_FUNCS(difftime mmap)
584
AC_CHECK_FUNCS(thr_self)
585

Sven Neumann's avatar
Sven Neumann committed
586

587 588
AM_BINRELOC

589

590 591
# _NL_MEASUREMENT_MEASUREMENT is an enum and not a define
AC_MSG_CHECKING([for _NL_MEASUREMENT_MEASUREMENT])
592 593
AC_LINK_IFELSE(
  [AC_LANG_PROGRAM(
594 595 596 597
    [[#include <langinfo.h>]],
    [[char c = *((unsigned char *)  nl_langinfo(_NL_MEASUREMENT_MEASUREMENT));]])],
  [nl_ok=yes],
  [nl_ok=no])
598 599 600 601 602 603 604
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


605 606 607
######################
# Internationalisation
######################
608

609
IT_PROG_INTLTOOL(intltool_required_version)
610
AM_GLIB_GNU_GETTEXT
611

612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642
# Testing xgettext version since we had some problem with localizing script-fu. See bug 720052.
AC_MSG_CHECKING([for recommended xgettext version (>= xgettext_recommended_version)])
XGETTEXT_RECOMMENDED_VERSION_MAJOR=`echo $XGETTEXT_RECOMMENDED_VERSION | awk -F. '{ print $ 1; }'`
XGETTEXT_RECOMMENDED_VERSION_MINOR_1=`echo $XGETTEXT_RECOMMENDED_VERSION | awk -F. '{ print $ 2; }'`

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; }'`

have_recommended_xgettext="no"
if test -n "$XGETTEXT_APPLIED_VERSION_MAJOR"; then
    if test "$XGETTEXT_RECOMMENDED_VERSION_MAJOR" -lt "$XGETTEXT_APPLIED_VERSION_MAJOR"; then
        have_recommended_xgettext="yes"
    elif test "$XGETTEXT_RECOMMENDED_VERSION_MAJOR" -eq "$XGETTEXT_APPLIED_VERSION_MAJOR"; then
        if test -n "$XGETTEXT_APPLIED_VERSION_MINOR_1"; then
            if test "$XGETTEXT_RECOMMENDED_VERSION_MINOR_1" -le "$XGETTEXT_APPLIED_VERSION_MINOR_1"; then
                have_recommended_xgettext="yes"
            fi
        fi
    fi
fi
AC_MSG_RESULT($have_recommended_xgettext)

if test "x$have_recommended_xgettext" = "xno"; then
    have_recommended_xgettext="
WARNING: Your gettext version is $XGETTEXT_APPLIED_VERSION.
         The recommended gettext version is $XGETTEXT_RECOMMENDED_VERSION or over.
         If you continue without updating gettext, your build will have partially broken localization."
else
    have_recommended_xgettext=""
fi
643

Sven Neumann's avatar
Sven Neumann committed
644 645 646 647
###########
# iso-codes
###########

648 649 650 651 652
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])
653
  ISO_CODES_PREFIX=`$PKG_CONFIG --variable=prefix iso-codes`
654 655 656 657 658 659 660 661 662
  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)


663 664 665
###############################
# Checks for required libraries
###############################
666

667 668 669 670 671 672
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], [
673
  AC_MSG_NOTICE([Eeeeeeeeeeeeeeeeeeeeek! Missing dep: $1])
674
  required_deps="$required_deps
675
  - Error: missing dependency $1"
676 677 678 679 680 681
  m4_foreach([more], [$2], [
  required_deps="$required_deps
      *** more"])])

PKG_CHECK_MODULES(BABL, [babl >= babl_required_version],,
                  [add_deps_error([babl >= babl_required_version])])
682 683
PKG_CHECK_MODULES(GEGL, gegl-gegl_major_minor_version >= gegl_required_version,,
                  [add_deps_error([gegl-gegl_major_minor_version >= gegl_required_version])])
684 685
PKG_CHECK_MODULES(ATK, atk >= atk_required_version,,
                  [add_deps_error([atk >= atk_required_version])])
686

687 688 689 690 691 692 693 694 695
# 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],
696 697 698
                 [add_deps_error([glib >= glib_required_version],
                                 [Test for GLIB failed])],
                 gobject)
699

700 701
PKG_CHECK_MODULES(GMODULE_NO_EXPORT, gmodule-no-export-2.0,,
                  [add_deps_error([gmodule-no-export-2.0])])
702

703 704
PKG_CHECK_MODULES(GIO, gio-2.0,,
                  [add_deps_error([gio-2.0])])
705

706
if test "x$os_win32" = "xyes"; then
707 708
  PKG_CHECK_MODULES(GIO_WINDOWS, gio-windows-2.0,,
                    [add_deps_error([gio-windows-2.0])])
709
else
710 711
  PKG_CHECK_MODULES(GIO_UNIX, gio-unix-2.0,,
                    [add_deps_error([gio-unix-2.0])])
712 713
fi

714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740
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

741 742
AC_PATH_PROG(GLIB_COMPILE_RESOURCES, glib-compile-resources, no)
if test "x$GLIB_COMPILE_RESOURCES" = xno; then
743 744
  add_deps_error([glib-compile-resources],
                 [Could not find glib-compile-resources in your PATH.])
745 746
fi

747 748
AC_PATH_PROG(GDBUS_CODEGEN, gdbus-codegen, no)
if test "x$GDBUS_CODEGEN" = xno; then
749
  add_deps_error([gdbus-codegen], [Could not find gdbus-codegen in your PATH.])
750 751
fi

752 753 754
AC_MSG_CHECKING([if GLib is version 2.43.0 or newer])
if $PKG_CONFIG --atleast-version=2.43.0 glib-2.0; then
  have_glib_2_43=yes
755
else
756
  have_glib_2_43=no
757
fi
758
AC_MSG_RESULT($have_glib_2_43)
759

760 761
AC_PATH_PROG(GEGL, gegl, no)
if test "x$GEGL" = xno; then
762
  add_deps_error([gegl], [Could not find native gegl executable in your PATH.])
763 764
fi

765

766
# Check for bind_textdomain_codeset, including -lintl if GLib brings it in.
767 768
gimp_save_LIBS=$LIBS
LIBS="$LIBS $GLIB_LIBS"
769
AC_CHECK_FUNCS(bind_textdomain_codeset,,
770 771
  add_deps_error([bind_textdomain_codeset()],
                 [Check for bind_textdomain_codeset() failed! This is required.]))
772 773 774 775 776
LIBS=$gimp_save_LIBS


AC_PATH_XTRA

777 778
AM_PATH_GTK_3_0(gtk_required_version, :,
  add_deps_error([gtk+-3.0 >= gtk_required_version],
779
                 [Test for GTK+ failed.]))
Elliot Lee's avatar
Elliot Lee committed
780

781 782
AC_PATH_PROG(GTK_UPDATE_ICON_CACHE, gtk-update-icon-cache, no)
if test "x$GTK_UPDATE_ICON_CACHE" = xno; then
783 784
  add_deps_error([gtk-update-icon-cache],
                 [Could not find gtk-update-icon-cache in your PATH.])
785 786
fi

787 788
PKG_CHECK_MODULES(GDK_PIXBUF, gdk-pixbuf-2.0 >= gdk_pixbuf_required_version,,
                  [add_deps_error([gdk-pixbuf-2.0 >= gdk_pixbuf_required_version])])
789

790
AC_PATH_PROG(GDK_PIXBUF_CSOURCE, gdk-pixbuf-csource, no)
791
if test "x$GDK_PIXBUF_CSOURCE" = xno; then
792 793
  add_deps_error([gdk-pixbuf-csource],
                 [Could not find gdk-pixbuf-csource in your PATH.])
794 795
fi

796 797
PKG_CHECK_MODULES(CAIRO, cairo >= cairo_required_version,,
                  [add_deps_error([cairo >= cairo_required_version])])
798

799
PKG_CHECK_MODULES(PANGOCAIRO,
800 801 802
                  [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.])])
803

Martin Nordholts's avatar
Martin Nordholts committed
804
gimp_save_CFLAGS=$CFLAGS
805 806
CFLAGS="$PANGOCAIRO_CFLAGS $CFLAGS"

807
# Windows platform had a few bugs fixed in earlier fontconfig.
808 809 810 811 812
# 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).
813 814
PKG_CHECK_MODULES(FONTCONFIG, fontconfig >= fontconfig_required_version,,
                  [add_deps_error([fontconfig >= fontconfig_required_version])])
815

816 817 818
AC_MSG_CHECKING([if Pango is version 1.32.0 or newer])
if $PKG_CONFIG --atleast-version=1.32.0 pango; then
  have_pango_1_32=yes
819
else
820
  have_pango_1_32=no
821
fi
822
AC_MSG_RESULT($have_pango_1_32)
823

824
CFLAGS="$PANGOCAIRO_CFLAGS $CFLAGS"
825 826

AC_MSG_CHECKING([if Pango is built with a recent fontconfig])
827 828 829 830 831 832
AC_COMPILE_IFELSE(
  [AC_LANG_PROGRAM(
    [[#include <fontconfig/fontconfig.h>]],
    [[FcObjectSet *os; os = FcObjectSetBuild (FC_FAMILY, FC_WIDTH);]])],
  [fontconfig_ok=yes],
  [fontconfig_ok=no])
833 834 835 836 837 838 839
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
840
*** Pango library is using an older version. This old version is probably in
841
*** /usr/X11R6. Look at the above output, and note that the result for
842
*** FONTCONFIG_CFLAGS is not in the result for PANGOCAIRO_CFLAGS, and that
843 844 845 846 847 848 849
*** 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
850

851

852
PKG_CHECK_MODULES(FREETYPE, freetype2 >= freetype2_required_version,,
853
                  [add_deps_error([freetype2_required_version >= freetype2_required_version])])
854

855 856
PKG_CHECK_MODULES(HARFBUZZ, harfbuzz >= harfbuzz_required_version,,
                 [add_deps_error([harfbuzz >= harfbuzz_required_version])])
857

858 859
PKG_CHECK_MODULES(GEXIV2, gexiv2 >= gexiv2_required_version,,
                 [add_deps_error([gexiv2 >= gexiv2_required_version])])
860

861 862 863 864
#####################
# Check for Dr. Mingw
#####################

865
enable_drmingw="no"
866 867 868
if test "x$platform_win32" = "xyes"; then
   # Check for Dr. Mingw
   AC_CHECK_LIB(exchndl, ExcHndlSetLogFileNameA,
869 870
                [
                 AC_DEFINE(HAVE_EXCHNDL, 1, [Define to 1 when Dr. MingW is available])
871
                 LIBS="-lexchndl $LIBS"
872 873 874 875
                 enable_drmingw="yes"
                ],
                [enable_drmingw="no (ExcHndl library missing)"]
               )
876 877 878
fi
AM_CONDITIONAL(HAVE_EXCHNDL, test "x$ac_cv_lib_exchndl_ExcHndlSetLogFileNameA" = "xyes")

879 880 881 882 883 884
###########################
# Check for backtrace() API
###########################

AC_CHECK_HEADERS([execinfo.h])

885 886 887
##########################################
# Check for some special functions we need
##########################################
Elliot Lee's avatar
Elliot Lee committed
888

David Neary's avatar
David Neary committed
889 890
AC_CHECK_HEADERS(math.h ieeefp.h)

891
# DU4 native cc currently needs -std1 for ANSI mode (instead of K&R)
Manish Singh's avatar
Manish Singh committed
892 893 894
AC_MSG_CHECKING([for extra flags to get ANSI library prototypes])
gimp_save_LIBS=$LIBS
LIBS="$LIBS -lm"
895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911
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()])
912

913
# Check for finite or isfinite
914 915
AC_CHECK_FUNCS(finite, , [
  AC_MSG_CHECKING(for finite in <math.h>)
916 917 918 919 920 921 922 923 924 925 926 927 928 929 930
  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)])])])
931 932 933
AC_SUBST(HAVE_FINITE)
AC_SUBST(HAVE_ISFINITE)

934 935 936
LIBS=$gimp_save_LIBS


937
# check for rint
938 939 940 941 942 943
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
944 945 946 947 948
# check for vfork
AC_CHECK_FUNCS(vfork, ,)
AC_SUBST(HAVE_VFORK)


949 950 951 952 953 954
##############################
# Check for attributes we need
##############################

AX_GCC_FUNC_ATTRIBUTE(destructor)

955 956 957
#####################################################################
# Check for extra libs needed for getaddrinfo, getnameinfo and socket
#####################################################################
958 959 960 961

gimp_save_LIBS=$LIBS
LIBS=""

962
AC_CHECK_FUNCS(getaddrinfo, , AC_CHECK_LIB(nsl, getaddrinfo))
963
AC_CHECK_FUNCS(getnameinfo, , AC_CHECK_LIB(nsl, getnameinfo))
964 965 966 967 968 969 970
AC_CHECK_LIB(socket, socket)

SOCKET_LIBS="$LIBS"
LIBS=$gimp_save_LIBS

AC_SUBST(SOCKET_LIBS)

971 972 973 974
###################################
# Check for Intel vector intrinsics
###################################
intrinsics_save_CFLAGS="$CFLAGS"
975
#FIXME: Check the CFLAGS separately
976 977 978 979 980 981
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)
982
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <emmintrin.h>]],[[__m128i one = _mm_set1_epi32 (1);]])],
983 984 985 986 987 988 989 990 991 992 993 994 995 996
  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)
997
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <smmintrin.h>]],[[__v4sf a, b, c; c = _mm_blend_ps(a, b, 0x08);]])],
998 999 1000 1001 1002 1003 1004 1005 1006
  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"

1007

1008 1009 1010
########################
# Check for MMX assembly
########################
1011

1012 1013 1014 1015 1016 1017
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)],,
1018
  enable_sse=$enable_mmx)
1019 1020

if test "x$enable_mmx" = xyes; then
1021 1022
  GIMP_DETECT_CFLAGS(MMX_EXTRA_CFLAGS, '-mmmx')
  SSE_EXTRA_CFLAGS=
1023

1024
  AC_MSG_CHECKING(whether we can compile MMX code)
1025

1026 1027
  mmx_save_CFLAGS="$CFLAGS"
  CFLAGS="$mmx_save_CFLAGS $MMX_EXTRA_CFLAGS"
1028

1029
  AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[asm ("movq 0, %mm0");]])],
1030

1031 1032 1033
    AC_DEFINE(USE_MMX, 1, [Define to 1 if MMX assembly is available.])
    AC_MSG_RESULT(yes)

1034
    if test "x$enable_sse" = xyes; then
1035 1036
      GIMP_DETECT_CFLAGS(sse_flag, '-msse')
      SSE_EXTRA_CFLAGS="$MMX_EXTRA_CFLAGS $sse_flag"
1037 1038 1039

      AC_MSG_CHECKING(whether we can compile SSE code)

1040 1041
      CFLAGS="$CFLAGS $sse_flag"

1042
      AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[asm ("movntps %xmm0, 0");]])],
1043 1044
        AC_DEFINE(USE_SSE, 1, [Define to 1 if SSE assembly is available.])
        AC_MSG_RESULT(yes)
1045
      ,
1046 1047 1048
        enable_sse=no
        AC_MSG_RESULT(no)
        AC_MSG_WARN([The assembler does not support the SSE command set.])
1049
      )
1050

1051
    fi
1052
  ,
1053 1054
    enable_mmx=no
    AC_MSG_RESULT(no)
1055
    AC_MSG_WARN([The assembler does not support the MMX command set.])
1056
  )
1057

1058 1059 1060 1061
  CFLAGS="$mmx_save_CFLAGS"

  AC_SUBST(MMX_EXTRA_CFLAGS)
  AC_SUBST(SSE_EXTRA_CFLAGS)
1062
fi
1063

1064 1065

############################
1066
# Check for AltiVec assembly
1067 1068 1069
############################

AC_ARG_ENABLE(altivec,
1070
  [  --enable-altivec        enable AltiVec support (default=auto)],,
1071 1072 1073
  enable_altivec=$have_ppc)

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

1075
  GIMP_DETECT_CFLAGS(altivec_flag, '-faltivec' '-maltivec -mabi=altivec')
1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088

  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
1089
  AC_SUBST(ALTIVEC_EXTRA_CFLAGS)
1090

1091
  AC_MSG_CHECKING(whether we can compile AltiVec code)
1092

1093
  can_use_altivec=no
1094
  if test -z "$ALTIVEC_EXTRA_CFLAGS"; then
1095
    AC_MSG_RESULT(no)
Manish Singh's avatar
Manish Singh committed
1096
    AC_MSG_WARN([The compiler does not support the AltiVec command set.])
1097
  else
1098 1099
    case "$host_os" in
      darwin*)
1100 1101 1102 1103 1104
        can_use_altivec=yes
        AC_DEFINE(HAVE_ALTIVEC_SYSCTL, 1,
         [Define to 1 if the altivec runtime test should use a sysctl.])
        ;;
      *)
1105
        AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[asm ("vand %v0, %v0, %v0");]])],
1106 1107 1108 1109
          can_use_altivec=yes, can_use_altivec=no)
        ;;
    esac
    AC_MSG_RESULT($can_use_altivec)
1110

1111 1112 1113 1114 1115 1116 1117
    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
1118 1119

  enable_altivec="$can_use_altivec"
1120
fi
1121

1122

1123 1124 1125
###################################
# Checks for shared memory handling
###################################
1126

1127
# MacOS X has broken SysV shm
1128 1129
case "$host_os" in
  darwin* | rhapsody* | machten*)
1130
    shmdefault=posix
1131 1132 1133 1134 1135 1136 1137
    ;;
  *)
    shmdefault=sysv
    ;;
esac

shmtype=auto
1138
AC_ARG_WITH(shm, [  --with-shm=none|sysv|posix|auto    shared memory transport type (default=auto)], shmtype=$with_shm)
1139 1140

case $shmtype in
1141
  none|sysv|posix) ;;
1142
  auto) shmtype=$shmdefault ;;
1143
  *) AC_MSG_ERROR([Invalid shared memory transport type: use none, sysv, posix, or auto.]);;
1144 1145
esac

1146 1147 1148 1149

if test "x$platform_win32" = "xyes"; then
  shmtype=win32
elif test "x$shmtype" = "xsysv"; then
1150 1151
  AC_CHECK_HEADER(sys/ipc.h,
    [AC_DEFINE(HAVE_IPC_H, 1,
1152
               [Define to 1 if you have the <sys/ipc.h> header file.])],
1153 1154 1155 1156 1157
    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)
1158

1159 1160
  if test "$ac_cv_header_sys_shm_h" = "yes"; then
    AC_MSG_CHECKING(whether shmctl IPC_RMID allowes subsequent attaches)
1161 1162
    AC_RUN_IFELSE(
      [AC_LANG_SOURCE([[
Elliot Lee's avatar
Elliot Lee committed
1163 1164 1165 1166 1167 1168 1169
	#include <sys/types.h>
	#include <sys/ipc.h>
	#include <sys/shm.h>
	int main()
	{
	  int id;
	  char *shmaddr;
1170
	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
Elliot Lee's avatar
Elliot Lee committed
1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183
	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);
	}
1184 1185 1186 1187 1188 1189
      ]])],
      [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)])
1190 1191 1192 1193 1194 1195

    AC_DEFINE(USE_SYSV_SHM, 1, [Define to 1 to use SYSV shared memory])
  else
    shmtype=none
  fi
elif test "x$shmtype" = "xposix"; then
1196 1197 1198 1199 1200 1201
  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
1202
    AC_CHECK_LIB(rt, shm_open, RT_LIBS="-lrt" have_shm_open=yes)
1203 1204
  fi
  AC_SUBST(RT_LIBS)
1205 1206 1207

  AC_CHECK_HEADER(sys/mman.h,
    [AC_DEFINE(HAVE_MMAN_H, 1,
1208
               [Define to 1 if you have the <sys/mman.h> header file.])],
1209 1210 1211
    no_sys_mman=yes)

  if test "$ac_cv_func_mmap" = "yes" &&
1212 1213
     test "$ac_cv_header_sys_mman_h" = "yes" &&
     test "$have_shm_open" = "yes"; then
1214 1215 1216
    AC_DEFINE(USE_POSIX_SHM, 1, [Define to 1 to use POSIX shared memory])
  else
    shmtype=none
1217
  fi
Elliot Lee's avatar
Elliot Lee committed
1218 1219
fi

1220 1221
AC_MSG_CHECKING(for shared memory transport type)
AC_MSG_RESULT($shmtype)
1222

1223

1224 1225 1226 1227 1228 1229
########################
# Define a symbol prefix
########################

AC_MSG_CHECKING([whether symbols are prefixed])

1230 1231
case "$host_os" in
  mingw*)
1232 1233 1234 1235
    case "$host_cpu" in 
	  x86_64) SYMPREFIX='' ;;
	  *) SYMPREFIX='_' ;;
	esac
1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252
    ;;
  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)


1253 1254 1255
############################
# Check for select and fdset
############################
Elliot Lee's avatar
Elliot Lee committed
1256

1257
if test "x$os_win32" != xyes; then
1258
  AC_MSG_CHECKING([fd_set and sys/select])
1259 1260 1261 1262 1263 1264
  AC_COMPILE_IFELSE(
    [AC_LANG_PROGRAM(
      [[#include <sys/types.h>]],
      [[fd_set readMask, writeMask;]])],
    [gimp_ok=yes],
    [gimp_ok=no])
1265
  if test "x$gimp_ok" = xno; then
1266
      AC_EGREP_HEADER(fd_mask, sys/select.h, gimp_ok=yes)
1267
      if test "x$gimp_ok" = xyes; then
1268 1269 1270 1271 1272
	  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)
1273
  if test "x$gimp_ok" = xno; then
1274 1275 1276
      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
1277 1278
fi

1279

1280
#############################
1281
# Threads and multi processor
1282
#############################
1283

1284
AC_ARG_ENABLE(mp, [  --disable-mp            disable support for multiple processors])
1285

1286
if test "x$enable_mp" != "xno"; then
1287 1288
  AC_DEFINE(ENABLE_MP, 1,
	    [Define to 1 to enable support for multiple processors.])
Sven Neumann's avatar
Sven Neumann committed
1289 1290
fi

1291

1292 1293 1294
################################
# Some plug-ins are X11 specific
################################
Sven Neumann's avatar
Sven Neumann committed
1295

1296
# Check if building for GTK+-X11
1297 1298
GTK_CHECK_BACKEND([x11], [gtk_required_version],
                  [have_gtk_x11=yes], [have_gtk_x11=no])
1299

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

1302
if test "x$have_gtk_x11" = "xyes"; then
1303

1304
   # doc-shooter is X11 specific
1305 1306
   DOC_SHOOTER=doc-shooter

1307
   # screenshot plug-in needs to link to X11 explicitly
1308
   SCREENSHOT_LIBS="$X_LIBS -lX11"
1309

1310 1311 1312 1313 1314
   gimp_save_CFLAGS="$CFLAGS"
   gimp_save_LDFLAGS="$LDFLAGS"
   CFLAGS="$CFLAGS $GTK_CFLAGS"
   LDFLAGS="$LDFLAGS $X_LIBS"

1315
   # Test for Xmu
1316
   if test -z "$XMU_LIBS"; then
Sven Neumann's avatar
Sven Neumann committed
1317
      AC_CHECK_LIB(Xmu, XmuClientWindow,
1318
        [AC_CHECK_HEADERS(X11/Xmu/WinUtil.h,
1319
	  have_libxmu=yes
1320 1321
          XMU_LIBS="$X_LIBS $X_PRE_LIBS -lX11 -lXmu -lXt"
          SCREENSHOT_LIBS="$XMU_LIBS",
1322 1323
	  [have_libxmu="no (XMU header file not found)"],[#include <gdk/gdkx.h>])],
	[have_libxmu="no (XMU library not found)"], -lXt -lX11)
1324
   fi
1325

1326
   # Check for shaped window extension
1327 1328
   AC_CHECK_LIB(Xext, XShapeGetRectangles,
     [AC_CHECK_HEADERS(X11/extensions/shape.h,
1329
        SCREENSHOT_LIBS="$SCREENSHOT_LIBS -lXext",,[#include <gdk/gdkx.h>])],,
1330 1331 1332 1333
     -lX11 -lXext)

   CFLAGS="$gimp_save_CFLAGS"
   LDFLAGS="$gimp_save_LDFLAGS"
1334

1335
   # check for the XFixes extension
1336 1337 1338
   PKG_CHECK_MODULES(XFIXES, xfixes,
      AC_DEFINE(HAVE_XFIXES, 1,
                [Define to 1 to if the XFIXES X extension is available])
1339
      SCREENSHOT_LIBS="$SCREENSHOT_LIBS $XFIXES_LIBS",
1340
      true)
1341
fi
Sven Neumann's avatar
Sven Neumann committed
1342

1343 1344
AC_SUBST(XMU_LIBS)
AC_SUBST(SCREENSHOT_LIBS)
1345

1346
AC_SUBST(DOC_SHOOTER)
1347

1348

1349
GIMP_COMMAND='gimp-gimp_app_version'
1350

1351 1352
AC_SUBST(GIMP_COMMAND)

1353

1354 1355 1356 1357 1358 1359
############
# MIME types
############

# The list of MIME types that are supported by plug-ins that are compiled
# unconditionally:
1360
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"
1361 1362


1363 1364 1365 1366
###################
# Check for libtiff
###################

1367
libtiff_error=
1368
if test -z "$TIFF_LIBS"; then
1369 1370 1371
  AC_CHECK_LIB(tiff, TIFFReadScanline,
    [AC_CHECK_HEADER(tiffio.h,
      FILE_TIFF_LOAD='file-tiff-load$(EXEEXT)'; FILE_TIFF_SAVE='file-tiff-save$(EXEEXT)'; TIFF_LIBS='-ltiff',
1372
      [libtiff_error="TIFF header files not found"])],
1373
    [AC_CHECK_LIB(tiff, TIFFWriteScanline,
Sven Neumann's avatar
Sven Neumann committed
1374
      [AC_CHECK_HEADER(tiffio.h,
1375
        FILE_TIFF_LOAD='file-tiff-load$(EXEEXT)'; FILE_TIFF_SAVE='file-tiff-save$(EXEEXT)'; TIFF_LIBS='-ltiff -ljpeg -lz',
1376
	[libtiff_error="TIFF header files not found"])],
1377
      [AC_CHECK_LIB(tiff34, TIFFFlushData,
Sven Neumann's avatar
Sven Neumann committed
1378
	[AC_CHECK_HEADER(tiffio.h,
1379
          FILE_TIFF_LOAD='file-tiff-load$(EXEEXT)'; FILE_TIFF_SAVE='file-tiff-save$(EXEEXT)'; TIFF_LIBS='-ltiff34 -ljpeg -lz',
1380 1381
	  [libtiff_error="TIFF header files not found"])],
      [libtiff_error="TIFF library not found"], -ljpeg -lz -lm)], -ljpeg -lz -lm)], -lm)
1382
fi
Sven Neumann's avatar
Sven Neumann committed
1383

1384
if test -z "$TIFF_LIBS"; then
1385
  add_deps_error([libtiff], [Checks for TIFF library failed: $libtiff_error])
1386
fi
Sven Neumann's avatar
Sven Neumann committed
1387

1388
MIME_TYPES="$MIME_TYPES;image/tiff"
1389

1390
AC_SUBST(TIFF_LIBS)
1391 1392 1393 1394 1395


###################
# Check for libjpeg
###################
Sven Neumann's avatar
Sven Neumann committed
1396

1397 1398
if test -z "$JPEG_LIBS"; then
  AC_CHECK_LIB(jpeg, jpeg_destroy_decompress, ,