configure.ac 79.7 KB
Newer Older
1
# Process this file with autoconf to produce a configure script.
Elliot Lee's avatar
Elliot Lee committed
2

3
AC_PREREQ(2.54)
4

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

12
m4_define([gimp_major_version], [2])
13
m4_define([gimp_minor_version], [9])
14
m4_define([gimp_micro_version], [5])
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
m4_define([gimp_binary_age],
          [m4_eval(100 * gimp_minor_version + gimp_micro_version)])
21 22

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

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

# Versions used for apps, plugins, tools, pkg-config files, and data,
# as well as global and user prefs
30
m4_define([gimp_app_version], [2.9])
31 32
m4_define([gimp_plugin_version], [2.0])
m4_define([gimp_tool_version], [2.0])
33
m4_define([gimp_pkgconfig_version], [2.0])
34 35
m4_define([gimp_data_version], [2.0])
m4_define([gimp_sysconf_version], [2.0])
36
m4_define([gimp_user_version], [2.9])
37

38 39
m4_define([gimp_unstable],
          m4_if(m4_eval(gimp_minor_version % 2), [1], [yes], [no]))
40 41
m4_define([gimp_stable],
          m4_if(m4_eval(gimp_minor_version % 2), [0], [yes], [no]))
42

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

45
# required versions of other packages
46 47
m4_define([babl_required_version], [0.1.28])
m4_define([gegl_required_version], [0.3.18])
48
m4_define([glib_required_version], [2.40.0])
49 50
m4_define([atk_required_version], [2.2.0])
m4_define([gtk_required_version], [2.24.10])
51
m4_define([gtk_win32_recommended_version], [2.24.32])
52
m4_define([gdk_pixbuf_required_version], [2.30.8])
53 54
m4_define([cairo_required_version], [1.12.2])
m4_define([cairo_pdf_required_version], [1.12.2])
55
m4_define([pangocairo_required_version], [1.29.4])
56
m4_define([fontconfig_required_version], [2.2.0])
57
m4_define([fontconfig_win32_recommended_version], [2.11.1])
58
m4_define([freetype2_required_version], [2.1.7])
59
m4_define([harfbuzz_required_version], [0.9.19])
60
m4_define([gtkdoc_required_version], [1.0])
61
m4_define([webkit_required_version], [1.6.1])
62
m4_define([alsa_required_version], [1.0.0])
63
m4_define([rsvg_required_version], [2.40.6])
64
m4_define([wmf_required_version], [0.2.8])
65
m4_define([pygtk_required_version], [2.10.4])
66
m4_define([pycairo_required_version], [1.0.2])
67
m4_define([poppler_required_version], [0.44.0])
68
m4_define([poppler_data_required_version], [0.4.7])
69
m4_define([libgudev_required_version], [167])
Ell's avatar
Ell committed
70
m4_define([gexiv2_required_version], [0.10.3])
71
m4_define([libmypaint_required_version], [1.3.0])
72
m4_define([lcms_required_version], [2.7])
73
m4_define([libpng_required_version], [1.6.25])
74
m4_define([liblzma_required_version], [5.0.0])
75
m4_define([openexr_required_version], [1.6.1])
76
m4_define([gtk_mac_integration_required_version], [2.0.0])
77
m4_define([intltool_required_version], [0.40.1])
78
m4_define([python2_required_version], [2.5.0])
79 80 81
m4_define([webp_required_version], [0.5.1])
m4_define([webpmux_required_version], [0.5.1])
m4_define([webpdemux_required_version], [0.5.1])
82

83 84 85 86
# 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])

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

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

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

97 98 99 100 101
# 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])])

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

137

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

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

211 212

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

221

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

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

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

243 244 245
# Determine a C++ compiler to use
AC_PROG_CXX

246
# Initialize libtool
247 248
LT_PREREQ([2.2])
LT_INIT([disable-static win32-dll])
Elliot Lee's avatar
Elliot Lee committed
249

250
AM_PROG_AS
Elliot Lee's avatar
Elliot Lee committed
251

252
# Initialize maintainer mode
253
AM_MAINTAINER_MODE([enable])
254

255 256 257 258
# Check for pkg-config
PKG_PROG_PKG_CONFIG(0.16)


259 260 261 262 263 264 265 266
#########################
# Check host architecture
#########################

AC_CANONICAL_HOST

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

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


298 299 300
#################
# Check for Win32
#################
301

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

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

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

347
AM_CONDITIONAL(MS_LIB_AVAILABLE, test "x$ms_librarian" = xyes)
348
AM_CONDITIONAL(HAVE_WINDRES, test "x$WINDRES" != "x:")
Manish Singh's avatar
Manish Singh committed
349 350

AC_SUBST(WINDRES)
351

352

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


372 373 374 375
###############
# Generic stuff
###############

376
# Checks for programs.
377 378
AC_PROG_INSTALL
AC_PROG_MAKE_SET
379
AC_PROG_LN_S
380

381
# Large file support for the swap file
382
AC_SYS_LARGEFILE
383

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

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

412
AC_ARG_ENABLE(ansi,
413
              [  --enable-ansi           turn on strict ansi (default=no)],,
414
              enable_ansi=no)
415

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

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

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

437

438
# If possible, warn if C99isms are used
439 440 441
GIMP_DETECT_CFLAGS(extra_warnings, '-Wdeclaration-after-statement')
CFLAGS="$CFLAGS $extra_warnings"

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

452 453 454
GIMP_DETECT_CFLAGS(extra_warnings, '-Wstrict-prototypes')
CFLAGS="$CFLAGS $extra_warnings"

455 456 457
GIMP_DETECT_CFLAGS(extra_warnings, '-Wmissing-declarations')
CFLAGS="$CFLAGS $extra_warnings"

458 459 460 461 462
GIMP_DETECT_CFLAGS(extra_warnings, '-Winit-self')
CFLAGS="$CFLAGS $extra_warnings"

GIMP_DETECT_CFLAGS(extra_warnings, '-Wpointer-arith')
CFLAGS="$CFLAGS $extra_warnings"
463 464 465

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

467 468 469
GIMP_DETECT_CFLAGS(extra_warnings, '-Wmissing-format-attribute')
CFLAGS="$CFLAGS $extra_warnings"

470 471 472
GIMP_DETECT_CFLAGS(extra_warnings, '-Wformat-security')
CFLAGS="$CFLAGS $extra_warnings"

473 474 475 476 477 478
GIMP_DETECT_CFLAGS(extra_warnings, '-Wlogical-op')
CFLAGS="$CFLAGS $extra_warnings"

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

Mukund Sivaraman's avatar
Mukund Sivaraman committed
479 480 481
GIMP_DETECT_CFLAGS(extra_warnings, '-fno-common')
CFLAGS="$CFLAGS $extra_warnings"

482 483 484
GIMP_DETECT_CFLAGS(extra_warnings, '-fdiagnostics-show-option')
CFLAGS="$CFLAGS $extra_warnings"

485 486 487 488 489 490
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.
491 492 493 494
# 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"
495

496 497 498 499 500 501 502 503
# 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"


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

539

540 541 542 543
AC_HEADER_STDC
AC_HEADER_SYS_WAIT
AC_HEADER_TIME

544
AC_CHECK_HEADERS(execinfo.h sys/param.h sys/time.h sys/times.h sys/wait.h unistd.h)
545
AC_CHECK_FUNCS(backtrace, , AC_CHECK_LIB(execinfo, backtrace))
546 547 548 549 550 551

AC_TYPE_PID_T
AC_FUNC_VPRINTF

AC_FUNC_ALLOCA

552
# check some more funcs
Sven Neumann's avatar
Sven Neumann committed
553
AC_CHECK_FUNCS(fsync)
554
AC_CHECK_FUNCS(difftime mmap)
555

Sven Neumann's avatar
Sven Neumann committed
556

557 558
AM_BINRELOC

559

560 561
# _NL_MEASUREMENT_MEASUREMENT is an enum and not a define
AC_MSG_CHECKING([for _NL_MEASUREMENT_MEASUREMENT])
562 563
AC_LINK_IFELSE(
  [AC_LANG_PROGRAM(
564 565 566 567
    [[#include <langinfo.h>]],
    [[char c = *((unsigned char *)  nl_langinfo(_NL_MEASUREMENT_MEASUREMENT));]])],
  [nl_ok=yes],
  [nl_ok=no])
568 569 570 571 572 573 574
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


575 576 577
######################
# Internationalisation
######################
578

579
IT_PROG_INTLTOOL(intltool_required_version)
580
AM_GLIB_GNU_GETTEXT
581

582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612
# 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
613

Sven Neumann's avatar
Sven Neumann committed
614 615 616 617
###########
# iso-codes
###########

618 619 620 621 622
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])
Sven Neumann's avatar
Sven Neumann committed
623
  ISO_CODES_PREFIX=`$PKG_CONFIG --variable=prefix iso-codes`
624 625 626 627 628 629 630 631 632
  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)


633 634 635
###############################
# Checks for required libraries
###############################
636

637 638 639 640 641 642
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], [
643
  AC_MSG_NOTICE([Eeeeeeeeeeeeeeeeeeeeek! Missing dep: $1])
644
  required_deps="$required_deps
645
  - Error: missing dependency $1"
646 647 648 649 650 651 652 653 654 655
  m4_foreach([more], [$2], [
  required_deps="$required_deps
      *** more"])])

PKG_CHECK_MODULES(BABL, [babl >= babl_required_version],,
                  [add_deps_error([babl >= babl_required_version])])
PKG_CHECK_MODULES(GEGL, gegl-0.3 >= gegl_required_version,,
                  [add_deps_error([gegl-0.3 >= gegl_required_version])])
PKG_CHECK_MODULES(ATK, atk >= atk_required_version,,
                  [add_deps_error([atk >= atk_required_version])])
656

657
AM_PATH_GLIB_2_0(glib_required_version, :,
658 659 660
                 [add_deps_error([glib >= glib_required_version],
                                 [Test for GLIB failed])],
                 gobject)
Sven Neumann's avatar
Sven Neumann committed
661

662 663
PKG_CHECK_MODULES(GMODULE_NO_EXPORT, gmodule-no-export-2.0,,
                  [add_deps_error([gmodule-no-export-2.0])])
664

665 666
PKG_CHECK_MODULES(GIO, gio-2.0,,
                  [add_deps_error([gio-2.0])])
667

668
if test "x$os_win32" = "xyes"; then
669 670
  PKG_CHECK_MODULES(GIO_WINDOWS, gio-windows-2.0,,
                    [add_deps_error([gio-windows-2.0])])
671
else
672 673
  PKG_CHECK_MODULES(GIO_UNIX, gio-unix-2.0,,
                    [add_deps_error([gio-unix-2.0])])
674 675
fi

676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702
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

703 704
AC_PATH_PROG(GLIB_COMPILE_RESOURCES, glib-compile-resources, no)
if test "x$GLIB_COMPILE_RESOURCES" = xno; then
705 706
  add_deps_error([glib-compile-resources],
                 [Could not find glib-compile-resources in your PATH.])
707 708
fi

709 710
AC_PATH_PROG(GDBUS_CODEGEN, gdbus-codegen, no)
if test "x$GDBUS_CODEGEN" = xno; then
711
  add_deps_error([gdbus-codegen], [Could not find gdbus-codegen in your PATH.])
712 713
fi

714 715 716
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
717
else
718
  have_glib_2_43=no
719
fi
720
AC_MSG_RESULT($have_glib_2_43)
721

722 723
AC_PATH_PROG(GEGL, gegl, no)
if test "x$GEGL" = xno; then
724
  add_deps_error([gegl], [Could not find gegl in your PATH.])
725 726
fi

727

728
# Check for bind_textdomain_codeset, including -lintl if GLib brings it in.
729 730
gimp_save_LIBS=$LIBS
LIBS="$LIBS $GLIB_LIBS"
731
AC_CHECK_FUNCS(bind_textdomain_codeset,,
732 733
  add_deps_error([bind_textdomain_codeset()],
                 [Check for bind_textdomain_codeset() failed! This is required.]))
734 735 736 737 738
LIBS=$gimp_save_LIBS


AC_PATH_XTRA

739
AM_PATH_GTK_2_0(gtk_required_version, :,
740 741
  add_deps_error([gtk+-2.0 >= gtk_required_version],
                 [Test for GTK+ failed.]))
Elliot Lee's avatar
Elliot Lee committed
742

743 744
AC_PATH_PROG(GTK_UPDATE_ICON_CACHE, gtk-update-icon-cache, no)
if test "x$GTK_UPDATE_ICON_CACHE" = xno; then
745 746
  add_deps_error([gtk-update-icon-cache],
                 [Could not find gtk-update-icon-cache in your PATH.])
747 748
fi

749 750 751 752 753
# GTK+ 2.26.0 will never be released, we keep the check around anyway
# because we will need it again after the switch to GTK+ 3.x
AC_MSG_CHECKING([if GTK+ is version 2.26.0 or newer (bogus placeholder check)])
if $PKG_CONFIG --atleast-version=2.26.0 gtk+-2.0; then
  have_gtk_2_26=yes
754
else
755
  have_gtk_2_26=no
756
fi
757
AC_MSG_RESULT($have_gtk_2_26)
758

759 760 761 762 763
# Windows platform have a few bugs with GTK+ < 2.24.32.
# In particular: broken shortcuts on non-latin locales.
# Also SVG icons will be broken, hence --enable-vector-icons cannot be used.
# Display a warning when necessary.
# See bugs 769550 and 781020.
764 765
have_recommended_gtk=""
if test "x$platform_win32" = "xyes"; then
766
    PKG_CHECK_MODULES(RECOMMENDED_WIN32_GTK, gtk+-2.0 >= gtk_win32_recommended_version,
767 768 769 770 771 772
                      have_recommended_gtk="yes", have_recommended_gtk="no")

    if test "x$have_recommended_gtk" = xno; then
        have_recommended_gtk="
WARNING: Your GTK+ version is `$PKG_CONFIG --modversion gtk+-2.0`.
         The recommended GTK+ version under Windows is $GTK_WIN32_RECOMMENDED_VERSION or over.
773 774
         If you continue without updating GTK+, shortcuts won't work with
         non-latin locales, and vector icons will be disabled."
775 776 777 778 779
    else
        have_recommended_gtk=""
    fi
fi

780 781
PKG_CHECK_MODULES(GDK_PIXBUF, gdk-pixbuf-2.0 >= gdk_pixbuf_required_version,,
                  [add_deps_error([gdk-pixbuf-2.0 >= gdk_pixbuf_required_version])])
782

783
AC_PATH_PROG(GDK_PIXBUF_CSOURCE, gdk-pixbuf-csource, no)
784
if test "x$GDK_PIXBUF_CSOURCE" = xno; then
785 786
  add_deps_error([gdk-pixbuf-csource],
                 [Could not find gdk-pixbuf-csource in your PATH.])
787 788
fi

789 790
PKG_CHECK_MODULES(CAIRO, cairo >= cairo_required_version,,
                  [add_deps_error([cairo >= cairo_required_version])])
791

792
PKG_CHECK_MODULES(PANGOCAIRO,
793 794 795
                  [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.])])
796

Martin Nordholts's avatar
Martin Nordholts committed
797
gimp_save_CFLAGS=$CFLAGS
798 799
CFLAGS="$PANGOCAIRO_CFLAGS $CFLAGS"

800 801
PKG_CHECK_MODULES(FONTCONFIG, fontconfig >= fontconfig_required_version,,
                 [add_deps_error([fontconfig >= fontconfig_required_version])])
802

803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820
# Windows platform had a few bugs fixed in earlier fontconfig.
# Display a warning when compiling with a flawed fontconfig.
# See bugs 708110 and 703331.
have_recommended_fontconfig=""
if test "x$platform_win32" = "xyes"; then
    PKG_CHECK_MODULES(RECOMMENDED_WIN32_FONTCONFIG, fontconfig >= fontconfig_win32_recommended_version,
                      have_recommended_fontconfig="yes", have_recommended_fontconfig="no")

    if test "x$have_recommended_fontconfig" = xno; then
        have_recommended_fontconfig="
WARNING: Your fontconfig version is `$PKG_CONFIG --modversion fontconfig`.
         The recommended fontconfig version under Windows is $FONTCONFIG_WIN32_RECOMMENDED_VERSION or over.
         If you continue without updating fontconfig, your build may have partially broken font processing."
    else
        have_recommended_fontconfig=""
    fi
fi

821 822 823
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
824
else
825
  have_pango_1_32=no
826
fi
827
AC_MSG_RESULT($have_pango_1_32)
828

Sven Neumann's avatar
Sven Neumann committed
829
CFLAGS="$PANGOCAIRO_CFLAGS $CFLAGS"
830 831

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

856

857 858
AC_PATH_PROG(FREETYPE_CONFIG, freetype-config, no)
if test "x$FREETYPE_CONFIG" != "xno" ; then
859
  AC_MSG_CHECKING([for freetype libraries])
860 861 862 863 864
  FREETYPE_LIBS=`$FREETYPE_CONFIG --libs`
  AC_MSG_RESULT($FREETYPE_LIBS)
fi
AC_SUBST(FREETYPE_LIBS)

865 866
PKG_CHECK_MODULES(HARFBUZZ, harfbuzz >= harfbuzz_required_version,,
                 [add_deps_error([harfbuzz >= harfbuzz_required_version])])
867

868 869
PKG_CHECK_MODULES(GEXIV2, gexiv2 >= gexiv2_required_version,,
                 [add_deps_error([gexiv2 >= gexiv2_required_version])])
870

871 872 873 874
#####################
# Check for Dr. Mingw
#####################

875
enable_drmingw="no"
876 877 878
if test "x$platform_win32" = "xyes"; then
   # Check for Dr. Mingw
   AC_CHECK_LIB(exchndl, ExcHndlSetLogFileNameA,
879 880
                [
                 AC_DEFINE(HAVE_EXCHNDL, 1, [Define to 1 when Dr. MingW is available])
881
                 LIBS="-lexchndl $LIBS"
882 883 884 885
                 enable_drmingw="yes"
                ],
                [enable_drmingw="no (ExcHndl library missing)"]
               )
886 887 888
fi
AM_CONDITIONAL(HAVE_EXCHNDL, test "x$ac_cv_lib_exchndl_ExcHndlSetLogFileNameA" = "xyes")

889 890 891
##########################################
# Check for some special functions we need
##########################################
Elliot Lee's avatar
Elliot Lee committed
892

David Neary's avatar
ted  
David Neary committed
893 894
AC_CHECK_HEADERS(math.h ieeefp.h)

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

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

938 939 940
LIBS=$gimp_save_LIBS


941
# check for rint
942 943 944 945 946 947
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)])])


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

AX_GCC_FUNC_ATTRIBUTE(destructor)

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

gimp_save_LIBS=$LIBS
LIBS=""

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

SOCKET_LIBS="$LIBS"
LIBS=$gimp_save_LIBS

AC_SUBST(SOCKET_LIBS)

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

1006

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

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

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

1023
  AC_MSG_CHECKING(whether we can compile MMX code)
1024

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

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

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

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

      AC_MSG_CHECKING(whether we can compile SSE code)

1039 1040
      CFLAGS="$CFLAGS $sse_flag"

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

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

1057 1058 1059 1060
  CFLAGS="$mmx_save_CFLAGS"

  AC_SUBST(MMX_EXTRA_CFLAGS)
  AC_SUBST(SSE_EXTRA_CFLAGS)
1061
fi
1062

1063 1064

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

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

if test "x$enable_altivec" = xyes; then
Manish Singh's avatar
Manish Singh committed
1073

1074
  GIMP_DETECT_CFLAGS(altivec_flag, '-faltivec' '-maltivec -mabi=altivec')
Manish Singh's avatar
Manish Singh committed
1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087

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

1090
  AC_MSG_CHECKING(whether we can compile AltiVec code)
1091

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

1110 1111 1112 1113 1114 1115 1116
    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
Manish Singh's avatar
Manish Singh committed
1117 1118

  enable_altivec="$can_use_altivec"
1119
fi
1120

1121

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

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

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

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

1145 1146 1147 1148

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

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

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

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

  if test "$ac_cv_func_mmap" = "yes" &&
1211 1212
     test "$ac_cv_header_sys_mman_h" = "yes" &&
     test "$have_shm_open" = "yes"; then
1213 1214 1215
    AC_DEFINE(USE_POSIX_SHM, 1, [Define to 1 to use POSIX shared memory])
  else
    shmtype=none
1216