configure.ac 80.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], [7])
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.31])
m4_define([gegl_required_version], [0.3.21])
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])
70
m4_define([gexiv2_required_version], [0.10.6])
71
m4_define([libmypaint_required_version], [1.3.0])
72
m4_define([lcms_required_version], [2.8])
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
m4_define([webp_required_version], [0.6.0])
80

81 82 83 84
# 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])

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

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

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

95 96 97 98 99
# 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])])

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

135

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

# The symbol GIMP_UNSTABLE is defined above for substitution in
# Makefiles and conditionally defined here as a preprocessor symbol
# and automake conditional.
199
if test "x$GIMP_UNSTABLE" = "xyes"; then
200
  AC_DEFINE(GIMP_UNSTABLE, 1,
201
            [Define to 1 if this is an unstable version of GIMP])
202
fi
203 204
AM_CONDITIONAL(GIMP_UNSTABLE, test "x$GIMP_UNSTABLE" = "xyes")

205 206

# libtool versioning
207
m4_define([lt_current], [m4_eval(100 * gimp_minor_version + gimp_micro_version - gimp_interface_age)])
208 209 210 211 212
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)
213 214
AC_SUBST(LT_CURRENT_MINUS_AGE)

215

216
# gettext i18n support
217 218 219 220
GETTEXT_PACKAGE=gimp20
AC_SUBST(GETTEXT_PACKAGE)
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE",
                   [The prefix for our gettext translation domains.])
221

222 223 224 225 226
# work around intltool-update issues during 'make distcheck'
AS_IF([test "x$0" != "x./configure"], [
        AC_SUBST([INTLTOOL_UPDATE], [/bin/true])
])

227 228
# Determine a C compiler to use
AC_PROG_CC
229
AX_PROG_CC_FOR_BUILD
230 231 232 233 234
# 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
235
AM_PROG_CC_C_O
Manish Singh's avatar
Manish Singh committed
236

237 238 239
# Determine a C++ compiler to use
AC_PROG_CXX

240
# Initialize libtool
241 242
LT_PREREQ([2.2])
LT_INIT([disable-static win32-dll])
Elliot Lee's avatar
Elliot Lee committed
243

244
AM_PROG_AS
Elliot Lee's avatar
Elliot Lee committed
245

246
# Initialize maintainer mode
247
AM_MAINTAINER_MODE([enable])
248

249 250 251 252
# Check for pkg-config
PKG_PROG_PKG_CONFIG(0.16)


253 254 255 256 257 258 259 260
#########################
# Check host architecture
#########################

AC_CANONICAL_HOST

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

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


292 293 294
#################
# Check for Win32
#################
295

296 297 298
AC_MSG_CHECKING([if compiling for Win32])
case "$host_os" in
  mingw* | cygwin*)
299 300 301 302 303 304 305 306 307
    platform_win32=yes
    ;;
  *)
    platform_win32=no
    ;;
esac
AC_MSG_RESULT([$platform_win32])
AM_CONDITIONAL(PLATFORM_WIN32, test "$platform_win32" = "yes")

308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328
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
329
AC_SUBST(WIN32_LARGE_ADDRESS_AWARE)
330 331
AC_SUBST(PATHSEP)
AM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes")
332
AM_CONDITIONAL(OS_UNIX, test "$os_win32" != "yes")
333 334 335

if test "$os_win32" = "yes"; then
  AC_CHECK_PROG(ms_librarian, lib.exe, yes, no)
Manish Singh's avatar
Manish Singh committed
336
  AC_CHECK_TOOL(WINDRES, windres, :)
337 338
else
  WINDRES=":"
339
fi
Manish Singh's avatar
Manish Singh committed
340

341
AM_CONDITIONAL(MS_LIB_AVAILABLE, test "x$ms_librarian" = xyes)
342
AM_CONDITIONAL(HAVE_WINDRES, test "x$WINDRES" != "x:")
Manish Singh's avatar
Manish Singh committed
343 344

AC_SUBST(WINDRES)
345

346

347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365
####################
# 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)


366 367 368 369
###############
# Generic stuff
###############

370
# Checks for programs.
371 372
AC_PROG_INSTALL
AC_PROG_MAKE_SET
373
AC_PROG_LN_S
374

375
# Large file support for the swap file
376
AC_SYS_LARGEFILE
377

378
AC_MSG_CHECKING([whether to turn on debugging])
379
AC_ARG_ENABLE(debug,
380
              [  --enable-debug          turn on debugging (default=no)],
381 382 383
              if eval "test x$enable_debug = xyes"; then
                DEBUGFLAG="-g"
              fi)
384

385
if test -n "$DEBUGFLAG"; then
386
  AC_MSG_RESULT([yes])
387
  CFLAGS="$DEBUGFLAG $CFLAGS"
388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403
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])
404
fi
405

406
AC_ARG_ENABLE(ansi,
407
              [  --enable-ansi           turn on strict ansi (default=no)],,
408
              enable_ansi=no)
409

410
changequote(,)dnl
411 412 413 414 415
if eval "test x$GCC = xyes"; then
  case " $CFLAGS " in
  *[\ \	]-Wall[\ \	]*) ;;
  *) CFLAGS="$CFLAGS -Wall" ;;
  esac
Elliot Lee's avatar
Elliot Lee committed
416

417 418 419 420 421
  if test "x$enable_ansi" = "xyes"; then
    case " $CFLAGS " in
    *[\ \	]-ansi[\ \	]*) ;;
    *) CFLAGS="$CFLAGS -ansi" ;;
    esac
422

423 424 425 426
    case " $CFLAGS " in
    *[\ \	]-pedantic[\ \	]*) ;;
    *) CFLAGS="$CFLAGS -pedantic" ;;
    esac
Elliot Lee's avatar
Elliot Lee committed
427 428
  fi
fi
429
changequote([,])dnl
Elliot Lee's avatar
Elliot Lee committed
430

431

432
# If possible, warn if C99isms are used
433 434 435
GIMP_DETECT_CFLAGS(extra_warnings, '-Wdeclaration-after-statement')
CFLAGS="$CFLAGS $extra_warnings"

436
GIMP_DETECT_CFLAGS(extra_warnings, '-Wmissing-prototypes')
437 438 439 440 441
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.
442
#
443 444
GIMP_DETECT_CFLAGS(extra_warnings, '-Werror=missing-prototypes')
CFLAGS="$CFLAGS $extra_warnings"
445

446 447 448
GIMP_DETECT_CFLAGS(extra_warnings, '-Wstrict-prototypes')
CFLAGS="$CFLAGS $extra_warnings"

449 450 451
GIMP_DETECT_CFLAGS(extra_warnings, '-Wmissing-declarations')
CFLAGS="$CFLAGS $extra_warnings"

452 453 454 455 456
GIMP_DETECT_CFLAGS(extra_warnings, '-Winit-self')
CFLAGS="$CFLAGS $extra_warnings"

GIMP_DETECT_CFLAGS(extra_warnings, '-Wpointer-arith')
CFLAGS="$CFLAGS $extra_warnings"
457 458 459

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

461 462 463
GIMP_DETECT_CFLAGS(extra_warnings, '-Wmissing-format-attribute')
CFLAGS="$CFLAGS $extra_warnings"

464 465 466
GIMP_DETECT_CFLAGS(extra_warnings, '-Wformat-security')
CFLAGS="$CFLAGS $extra_warnings"

467 468 469 470 471 472
GIMP_DETECT_CFLAGS(extra_warnings, '-Wlogical-op')
CFLAGS="$CFLAGS $extra_warnings"

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

473 474 475
GIMP_DETECT_CFLAGS(extra_warnings, '-fno-common')
CFLAGS="$CFLAGS $extra_warnings"

476 477 478
GIMP_DETECT_CFLAGS(extra_warnings, '-fdiagnostics-show-option')
CFLAGS="$CFLAGS $extra_warnings"

479 480 481 482 483 484
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.
485 486 487 488
# 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"
489

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


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

533 534 535 536 537 538 539 540 541
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
542 543 544 545 546 547 548 549 550 551 552 553 554 555 556
  # 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
557
fi
558
AC_SUBST(CC_VERSION)
559

560 561 562 563
AC_HEADER_STDC
AC_HEADER_SYS_WAIT
AC_HEADER_TIME

564
AC_CHECK_HEADERS(execinfo.h sys/param.h sys/time.h sys/times.h sys/wait.h unistd.h)
565
AC_CHECK_FUNCS(backtrace, , AC_CHECK_LIB(execinfo, backtrace))
566 567 568 569 570 571

AC_TYPE_PID_T
AC_FUNC_VPRINTF

AC_FUNC_ALLOCA

572
# check some more funcs
Sven Neumann's avatar
Sven Neumann committed
573
AC_CHECK_FUNCS(fsync)
574
AC_CHECK_FUNCS(difftime mmap)
575

Sven Neumann's avatar
Sven Neumann committed
576

577 578
AM_BINRELOC

579

580 581
# _NL_MEASUREMENT_MEASUREMENT is an enum and not a define
AC_MSG_CHECKING([for _NL_MEASUREMENT_MEASUREMENT])
582 583
AC_LINK_IFELSE(
  [AC_LANG_PROGRAM(
584 585 586 587
    [[#include <langinfo.h>]],
    [[char c = *((unsigned char *)  nl_langinfo(_NL_MEASUREMENT_MEASUREMENT));]])],
  [nl_ok=yes],
  [nl_ok=no])
588 589 590 591 592 593 594
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


595 596 597
######################
# Internationalisation
######################
598

599
IT_PROG_INTLTOOL(intltool_required_version)
600
AM_GLIB_GNU_GETTEXT
601

602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632
# 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
633

Sven Neumann's avatar
Sven Neumann committed
634 635 636 637
###########
# iso-codes
###########

638 639 640 641 642
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])
643
  ISO_CODES_PREFIX=`$PKG_CONFIG --variable=prefix iso-codes`
644 645 646 647 648 649 650 651 652
  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)


653 654 655
###############################
# Checks for required libraries
###############################
656

657 658 659 660 661 662
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], [
663
  AC_MSG_NOTICE([Eeeeeeeeeeeeeeeeeeeeek! Missing dep: $1])
664
  required_deps="$required_deps
665
  - Error: missing dependency $1"
666 667 668 669 670 671 672 673 674 675
  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])])
676

677
AM_PATH_GLIB_2_0(glib_required_version, :,
678 679 680
                 [add_deps_error([glib >= glib_required_version],
                                 [Test for GLIB failed])],
                 gobject)
681

682 683
PKG_CHECK_MODULES(GMODULE_NO_EXPORT, gmodule-no-export-2.0,,
                  [add_deps_error([gmodule-no-export-2.0])])
684

685 686
PKG_CHECK_MODULES(GIO, gio-2.0,,
                  [add_deps_error([gio-2.0])])
687

688
if test "x$os_win32" = "xyes"; then
689 690
  PKG_CHECK_MODULES(GIO_WINDOWS, gio-windows-2.0,,
                    [add_deps_error([gio-windows-2.0])])
691
else
692 693
  PKG_CHECK_MODULES(GIO_UNIX, gio-unix-2.0,,
                    [add_deps_error([gio-unix-2.0])])
694 695
fi

696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722
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

723 724
AC_PATH_PROG(GLIB_COMPILE_RESOURCES, glib-compile-resources, no)
if test "x$GLIB_COMPILE_RESOURCES" = xno; then
725 726
  add_deps_error([glib-compile-resources],
                 [Could not find glib-compile-resources in your PATH.])
727 728
fi

729 730
AC_PATH_PROG(GDBUS_CODEGEN, gdbus-codegen, no)
if test "x$GDBUS_CODEGEN" = xno; then
731
  add_deps_error([gdbus-codegen], [Could not find gdbus-codegen in your PATH.])
732 733
fi

734 735 736
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
737
else
738
  have_glib_2_43=no
739
fi
740
AC_MSG_RESULT($have_glib_2_43)
741

742 743
AC_PATH_PROG(GEGL, gegl, no)
if test "x$GEGL" = xno; then
744
  add_deps_error([gegl], [Could not find gegl in your PATH.])
745 746
fi

747

748
# Check for bind_textdomain_codeset, including -lintl if GLib brings it in.
749 750
gimp_save_LIBS=$LIBS
LIBS="$LIBS $GLIB_LIBS"
751
AC_CHECK_FUNCS(bind_textdomain_codeset,,
752 753
  add_deps_error([bind_textdomain_codeset()],
                 [Check for bind_textdomain_codeset() failed! This is required.]))
754 755 756 757 758
LIBS=$gimp_save_LIBS


AC_PATH_XTRA

759
AM_PATH_GTK_2_0(gtk_required_version, :,
760 761
  add_deps_error([gtk+-2.0 >= gtk_required_version],
                 [Test for GTK+ failed.]))
Elliot Lee's avatar
Elliot Lee committed
762

763 764
AC_PATH_PROG(GTK_UPDATE_ICON_CACHE, gtk-update-icon-cache, no)
if test "x$GTK_UPDATE_ICON_CACHE" = xno; then
765 766
  add_deps_error([gtk-update-icon-cache],
                 [Could not find gtk-update-icon-cache in your PATH.])
767 768
fi

769 770 771 772 773
# 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
774
else
775
  have_gtk_2_26=no
776
fi
777
AC_MSG_RESULT($have_gtk_2_26)
778

779 780 781 782 783
# 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.
784 785
have_recommended_gtk=""
if test "x$platform_win32" = "xyes"; then
786
    PKG_CHECK_MODULES(RECOMMENDED_WIN32_GTK, gtk+-2.0 >= gtk_win32_recommended_version,
787 788 789 790 791 792
                      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.
793 794
         If you continue without updating GTK+, shortcuts won't work with
         non-latin locales, and vector icons will be disabled."
795 796 797 798 799
    else
        have_recommended_gtk=""
    fi
fi

800 801
PKG_CHECK_MODULES(GDK_PIXBUF, gdk-pixbuf-2.0 >= gdk_pixbuf_required_version,,
                  [add_deps_error([gdk-pixbuf-2.0 >= gdk_pixbuf_required_version])])
802

803
AC_PATH_PROG(GDK_PIXBUF_CSOURCE, gdk-pixbuf-csource, no)
804
if test "x$GDK_PIXBUF_CSOURCE" = xno; then
805 806
  add_deps_error([gdk-pixbuf-csource],
                 [Could not find gdk-pixbuf-csource in your PATH.])
807 808
fi

809 810
PKG_CHECK_MODULES(CAIRO, cairo >= cairo_required_version,,
                  [add_deps_error([cairo >= cairo_required_version])])
811

812
PKG_CHECK_MODULES(PANGOCAIRO,
813 814 815
                  [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.])])
816

Martin Nordholts's avatar
Martin Nordholts committed
817
gimp_save_CFLAGS=$CFLAGS
818 819
CFLAGS="$PANGOCAIRO_CFLAGS $CFLAGS"

820 821
PKG_CHECK_MODULES(FONTCONFIG, fontconfig >= fontconfig_required_version,,
                 [add_deps_error([fontconfig >= fontconfig_required_version])])
822

823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840
# 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

841 842 843
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
844
else
845
  have_pango_1_32=no
846
fi
847
AC_MSG_RESULT($have_pango_1_32)
848

849
CFLAGS="$PANGOCAIRO_CFLAGS $CFLAGS"
850 851

AC_MSG_CHECKING([if Pango is built with a recent fontconfig])
852 853 854 855 856 857
AC_COMPILE_IFELSE(
  [AC_LANG_PROGRAM(
    [[#include <fontconfig/fontconfig.h>]],
    [[FcObjectSet *os; os = FcObjectSetBuild (FC_FAMILY, FC_WIDTH);]])],
  [fontconfig_ok=yes],
  [fontconfig_ok=no])
858 859 860 861 862 863 864
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
865
*** Pango library is using an older version. This old version is probably in
866
*** /usr/X11R6. Look at the above output, and note that the result for
867
*** FONTCONFIG_CFLAGS is not in the result for PANGOCAIRO_CFLAGS, and that
868 869 870 871 872 873 874
*** 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
875

876

877 878
AC_PATH_PROG(FREETYPE_CONFIG, freetype-config, no)
if test "x$FREETYPE_CONFIG" != "xno" ; then
879
  AC_MSG_CHECKING([for freetype libraries])
880 881 882 883 884
  FREETYPE_LIBS=`$FREETYPE_CONFIG --libs`
  AC_MSG_RESULT($FREETYPE_LIBS)
fi
AC_SUBST(FREETYPE_LIBS)

885 886
PKG_CHECK_MODULES(HARFBUZZ, harfbuzz >= harfbuzz_required_version,,
                 [add_deps_error([harfbuzz >= harfbuzz_required_version])])
887

888 889
PKG_CHECK_MODULES(GEXIV2, gexiv2 >= gexiv2_required_version,,
                 [add_deps_error([gexiv2 >= gexiv2_required_version])])
890

891 892 893 894
#####################
# Check for Dr. Mingw
#####################

895
enable_drmingw="no"
896 897 898
if test "x$platform_win32" = "xyes"; then
   # Check for Dr. Mingw
   AC_CHECK_LIB(exchndl, ExcHndlSetLogFileNameA,
899 900
                [
                 AC_DEFINE(HAVE_EXCHNDL, 1, [Define to 1 when Dr. MingW is available])
901
                 LIBS="-lexchndl $LIBS"
902 903 904 905
                 enable_drmingw="yes"
                ],
                [enable_drmingw="no (ExcHndl library missing)"]
               )
906 907 908
fi
AM_CONDITIONAL(HAVE_EXCHNDL, test "x$ac_cv_lib_exchndl_ExcHndlSetLogFileNameA" = "xyes")

909 910 911
##########################################
# Check for some special functions we need
##########################################
Elliot Lee's avatar
Elliot Lee committed
912

David Neary's avatar
David Neary committed
913 914
AC_CHECK_HEADERS(math.h ieeefp.h)

915
# DU4 native cc currently needs -std1 for ANSI mode (instead of K&R)
Manish Singh's avatar
Manish Singh committed
916 917 918
AC_MSG_CHECKING([for extra flags to get ANSI library prototypes])
gimp_save_LIBS=$LIBS
LIBS="$LIBS -lm"
919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935
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()])
936

937
# Check for finite or isfinite
938 939
AC_CHECK_FUNCS(finite, , [
  AC_MSG_CHECKING(for finite in <math.h>)
940 941 942 943 944 945 946 947 948 949 950 951 952 953 954
  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)])])])
955 956 957
AC_SUBST(HAVE_FINITE)
AC_SUBST(HAVE_ISFINITE)

958 959 960
LIBS=$gimp_save_LIBS


961
# check for rint
962 963 964 965 966 967
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)])])


968 969 970 971 972 973
##############################
# Check for attributes we need
##############################

AX_GCC_FUNC_ATTRIBUTE(destructor)

974 975 976
#####################################################################
# Check for extra libs needed for getaddrinfo, getnameinfo and socket
#####################################################################
977 978 979 980

gimp_save_LIBS=$LIBS
LIBS=""

981
AC_CHECK_FUNCS(getaddrinfo, , AC_CHECK_LIB(nsl, getaddrinfo))
982
AC_CHECK_FUNCS(getnameinfo, , AC_CHECK_LIB(nsl, getnameinfo))
983 984 985 986 987 988 989
AC_CHECK_LIB(socket, socket)

SOCKET_LIBS="$LIBS"
LIBS=$gimp_save_LIBS

AC_SUBST(SOCKET_LIBS)

990 991 992 993 994 995 996 997 998 999 1000
###################################
# 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)
1001
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <emmintrin.h>]],[[__m128i one = _mm_set1_epi32 (1);]])],
1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015
  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)
1016
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <smmintrin.h>]],[[__v4sf a, b, c; c = _mm_blend_ps(a, b, 0x08);]])],
1017 1018 1019 1020 1021 1022 1023 1024 1025
  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"

1026

1027 1028 1029
########################
# Check for MMX assembly
########################
1030

1031 1032 1033 1034 1035 1036
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)],,
1037
  enable_sse=$enable_mmx)
1038 1039

if test "x$enable_mmx" = xyes; then
1040 1041
  GIMP_DETECT_CFLAGS(MMX_EXTRA_CFLAGS, '-mmmx')
  SSE_EXTRA_CFLAGS=
1042

1043
  AC_MSG_CHECKING(whether we can compile MMX code)
1044

1045 1046
  mmx_save_CFLAGS="$CFLAGS"
  CFLAGS="$mmx_save_CFLAGS $MMX_EXTRA_CFLAGS"
1047

1048
  AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[asm ("movq 0, %mm0");]])],
1049

1050 1051 1052
    AC_DEFINE(USE_MMX, 1, [Define to 1 if MMX assembly is available.])
    AC_MSG_RESULT(yes)

1053
    if test "x$enable_sse" = xyes; then
1054 1055
      GIMP_DETECT_CFLAGS(sse_flag, '-msse')
      SSE_EXTRA_CFLAGS="$MMX_EXTRA_CFLAGS $sse_flag"
1056 1057 1058

      AC_MSG_CHECKING(whether we can compile SSE code)

1059 1060
      CFLAGS="$CFLAGS $sse_flag"

1061
      AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[asm ("movntps %xmm0, 0");]])],
1062 1063
        AC_DEFINE(USE_SSE, 1, [Define to 1 if SSE assembly is available.])
        AC_MSG_RESULT(yes)
1064
      ,
1065 1066 1067
        enable_sse=no
        AC_MSG_RESULT(no)
        AC_MSG_WARN([The assembler does not support the SSE command set.])
1068
      )
1069

1070
    fi
1071
  ,
1072 1073
    enable_mmx=no
    AC_MSG_RESULT(no)
1074
    AC_MSG_WARN([The assembler does not support the MMX command set.])
1075
  )
1076

1077 1078 1079 1080
  CFLAGS="$mmx_save_CFLAGS"

  AC_SUBST(MMX_EXTRA_CFLAGS)
  AC_SUBST(SSE_EXTRA_CFLAGS)
1081
fi
1082

1083 1084

############################
1085
# Check for AltiVec assembly
1086 1087 1088
############################

AC_ARG_ENABLE(altivec,
1089
  [  --enable-altivec        enable AltiVec support (default=auto)],,
1090 1091 1092
  enable_altivec=$have_ppc)

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

1094
  GIMP_DETECT_CFLAGS(altivec_flag, '-faltivec' '-maltivec -mabi=altivec')
1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107

  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
1108
  AC_SUBST(ALTIVEC_EXTRA_CFLAGS)
1109

1110
  AC_MSG_CHECKING(whether we can compile AltiVec code)
1111

1112
  can_use_altivec=no
1113
  if test -z "$ALTIVEC_EXTRA_CFLAGS"; then
1114
    AC_MSG_RESULT(no)
Manish Singh's avatar
Manish Singh committed
1115
    AC_MSG_WARN([The compiler does not support the AltiVec command set.])
1116
  else
1117 1118
    case "$host_os" in
      darwin*)
1119 1120 1121 1122 1123
        can_use_altivec=yes
        AC_DEFINE(HAVE_ALTIVEC_SYSCTL, 1,
         [Define to 1 if the altivec runtime test should use a sysctl.])
        ;;
      *)
1124
        AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[asm ("vand %v0, %v0, %v0");]])],
1125 1126 1127 1128
          can_use_altivec=yes, can_use_altivec=no)
        ;;
    esac
    AC_MSG_RESULT($can_use_altivec)
1129

1130 1131 1132 1133 1134 1135 1136
    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
1137 1138

  enable_altivec="$can_use_altivec"
1139
fi
1140

1141

1142 1143 1144
###################################
# Checks for shared memory handling
###################################
1145

1146
# MacOS X has broken SysV shm
1147 1148
case "$host_os" in
  darwin* | rhapsody* | machten*)
1149
    shmdefault=posix
1150 1151 1152 1153 1154 1155 1156
    ;;
  *)
    shmdefault=sysv
    ;;
esac

shmtype=auto
1157
AC_ARG_WITH(shm, [  --with-shm=none|sysv|posix|auto    shared memory transport type (default=auto)], shmtype=$with_shm)
1158 1159

case $shmtype in
1160
  none|sysv|posix) ;;
1161
  auto) shmtype=$shmdefault ;;
1162
  *) AC_MSG_ERROR([Invalid shared memory transport type: use none, sysv, posix, or auto.]);;
1163 1164
esac

1165 1166 1167 1168

if test "x$platform_win32" = "xyes"; then
  shmtype=win32
elif test "x$shmtype" = "xsysv"; then
1169 1170
  AC_CHECK_HEADER(sys/ipc.h,
    [AC_DEFINE(HAVE_IPC_H, 1,
1171
               [Define to 1 if you have the <sys/ipc.h> header file.])],
1172 1173 1174 1175 1176
    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)
1177

1178 1179
  if test "$ac_cv_header_sys_shm_h" = "yes"; then
    AC_MSG_CHECKING(whether shmctl IPC_RMID allowes subsequent attaches)
1180 1181
    AC_RUN_IFELSE(
      [AC_LANG_SOURCE([[
Elliot Lee's avatar
Elliot Lee committed
1182 1183 1184 1185 1186 1187 1188
	#include <sys/types.h>
	#include <sys/ipc.h>
	#include <sys/shm.h>
	int main()
	{
	  int id;
	  char *shmaddr;
1189
	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
Elliot Lee's avatar
Elliot Lee committed
1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202
	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);
	}
1203 1204 1205 1206 1207 1208
      ]])],
      [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)])
1209 1210 1211 1212 1213 1214

    AC_DEFINE(USE_SYSV_SHM, 1, [Define to 1 to use SYSV shared memory])
  else
    shmtype=none
  fi
elif test "x$shmtype" = "xposix"; then
1215 1216 1217 1218 1219 1220
  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
1221
    AC_CHECK_LIB(rt, shm_open, RT_LIBS="-lrt" have_shm_open=yes)
1222 1223
  fi
  AC_SUBST(RT_LIBS)
1224 1225 1226

  AC_CHECK_HEADER(sys/mman.h,
    [AC_DEFINE(HAVE_MMAN_H, 1,
1227
               [Define to 1 if you have the <sys/mman.h> header file.])],
1228 1229 1230
    no_sys_mman=yes)

  if test "$ac_cv_func_mmap" = "yes" &&
1231 1232
     test "$ac_cv_header_sys_mman_h" = "yes" &&
     test "$have_shm_open" = "yes"; then
1233 1234 1235
    AC_DEFINE(USE_POSIX_SHM, 1, [Define to 1 to use POSIX shared memory])
  else
    shmtype=none
1236
  fi
Elliot Lee's avatar
Elliot Lee committed
1237 1238
fi

1239 1240
AC_MSG_CHECKING(for shared memory transport type)
AC_MSG_RESULT($shmtype)
1241

1242

1243 1244 1245 1246 1247 1248
########################
# Define a symbol prefix
########################

AC_MSG_CHECKING([whether symbols are prefixed])

1249 1250
case "$host_os" in
  mingw*)
1251 1252 1253 1254
    case "$host_cpu" in 
	  x86_64) SYMPREFIX='' ;;
	  *) SYMPREFIX='_' ;;
	esac
1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271
    ;;
  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)


1272 1273 1274
############################
# Check for select and fdset
############################
Elliot Lee's avatar
Elliot Lee committed
1275

1276
if test "x$os_win32" != xyes; then
1277
  AC_MSG_CHECKING([fd_set and sys/select])
1278 1279 1280 1281 1282 1283
  AC_COMPILE_IFELSE(
    [AC_LANG_PROGRAM(
      [[#include <sys/types.h>]],
      [[fd_set readMask, writeMask;]])],
    [gimp_ok=yes],
    [gimp_ok=no])
1284
  if test "x$gimp_ok" = xno; then
1285
      AC_EGREP_HEADER(fd_mask, sys/select.h, gimp_ok=yes)
1286
      if test "x$gimp_ok" = xyes; then
1287 1288 1289 1290 1291
	  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)
1292
  if test "x$gimp_ok" = xno; then
1293 1294 1295
      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
1296 1297
fi

1298

1299
#############################
1300
# Threads and multi processor
1301
#############################
1302

1303
AC_ARG_ENABLE(mp, [  --disable-mp            disable support for multiple processors])
1304

1305
if test "x$enable_mp" != "xno"; then
1306 1307
  AC_DEFINE(ENABLE_MP, 1,
	    [Define to 1 to enable support for multiple processors.])
Sven Neumann's avatar
Sven Neumann committed
1308 1309
fi

1310

1311 1312 1313
################################
# Some plug-ins are X11 specific
################################
Sven Neumann's avatar
Sven Neumann committed
1314

1315
# Check if building for GTK+-X11
Sven Neumann's avatar
Sven Neumann committed
1316
gdk_target=`$PKG_CONFIG --variable=target gtk+-2.0`
1317

1318 1319
have_libxmu="no (building for $gdk_target)"

Sven Neumann's avatar
Sven Neumann committed
1320
if test "$gdk_target" = x11; then
1321

1322
   # doc-shooter is X11 specific
1323 1324
   DOC_SHOOTER=doc-shooter

1325
   # screenshot plug-in needs to link to X11 explicitly
1326
   SCREENSHOT_LIBS="$X_LIBS -lX11"
1327

1328 1329 1330 1331 1332
   gimp_save_CFLAGS="$CFLAGS"
   gimp_save_LDFLAGS="$LDFLAGS"
   CFLAGS="$CFLAGS $GTK_CFLAGS"
   LDFLAGS="$LDFLAGS $X_LIBS"

1333
   # Test for Xmu
1334
   if test -z "$XMU_LIBS"; then
Sven Neumann's avatar
Sven Neumann committed
1335
      AC_CHECK_LIB(Xmu, XmuClientWindow,
1336
        [AC_CHECK_HEADERS(X11/Xmu/WinUtil.h,
1337
	  have_libxmu=yes
1338 1339
          XMU_LIBS="$X_LIBS $X_PRE_LIBS -lX11 -lXmu -lXt"
          SCREENSHOT_LIBS="$XMU_LIBS",
1340 1341
	  [have_libxmu="no (XMU header file not found)"],[#include <gdk/gdkx.h>])],
	[have_libxmu="no (XMU library not found)"], -lXt -lX11)
1342
   fi
1343

1344
   # Check for shaped window extension
1345 1346
   AC_CHECK_LIB(Xext, XShapeGetRectangles,
     [AC_CHECK_HEADERS(X11/extensions/shape.h,
1347
        SCREENSHOT_LIBS="$SCREENSHOT_LIBS -lXext",,[#include <gdk/gdkx.h>])],,
1348 1349 1350 1351
     -lX11 -lXext)

   CFLAGS="$gimp_save_CFLAGS"
   LDFLAGS="$gimp_save_LDFLAGS"
1352

1353
   # check for the XFixes extension
1354 1355 1356
   PKG_CHECK_MODULES(XFIXES, xfixes,
      AC_DEFINE(HAVE_XFIXES, 1,
                [Define to 1 to if the XFIXES X extension is available])
1357
      SCREENSHOT_LIBS="$SCREENSHOT_LIBS $XFIXES_LIBS",
1358
      true)
1359
fi
Sven Neumann's avatar
Sven Neumann committed
1360

1361 1362
AC_SUBST(XMU_LIBS)
AC_SUBST(SCREENSHOT_LIBS)
1363

1364
AC_SUBST(DOC_SHOOTER)
1365

1366

1367
GIMP_COMMAND='gimp-gimp_app_version'
1368

1369 1370
AC_SUBST(GIMP_COMMAND)

1371

1372 1373 1374 1375 1376 1377
############
# MIME types
############

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


1381 1382 1383 1384
###################
# Check for libtiff
###################

1385
libtiff_error=
1386
if test -z "$TIFF_LIBS"; then
1387 1388 1389
  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',
1390
      [libtiff_error="TIFF header files not found"])],
1391
    [AC_CHECK_LIB(tiff, TIFFWriteScanline,
Sven Neumann's avatar
Sven Neumann committed
1392
      [AC_CHECK_HEADER(tiffio.h,
1393
        FILE_TIFF_LOAD='file-tiff-load$(EXEEXT)'; FILE_TIFF_SAVE='file-tiff-save$(EXEEXT)'; TIFF_LIBS='-ltiff -ljpeg -lz',
1394
	[libtiff_error="TIFF header files not found"])],
1395
      [AC_CHECK_LIB(tiff34, TIFFFlushData,
Sven Neumann's avatar
Sven Neumann committed
1396
	[AC_CHECK_HEADER(tiffio.h,
1397
          FILE_TIFF_LOAD='file-tiff-load$(EXEEXT)'; FILE_TIFF_SAVE='file-tiff-save$(EXEEXT)'; TIFF_LIBS='-ltiff34 -ljpeg -lz',
1398 1399
	  [libtiff_error="TIFF header files not found"])],
      [libtiff_error="TIFF library not found"], -ljpeg -lz -lm)], -ljpeg -lz -lm)], -lm)
1400
fi