-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
/
configure.ac
713 lines (630 loc) · 23.9 KB
/
configure.ac
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
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
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
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
703
704
705
706
707
708
709
710
711
712
713
# Process this file with autoconf to produce a configure script
AC_PREREQ([2.69])
AC_INIT([xrdp], [0.10.80], [[email protected]])
AC_DEFINE([VERSION_YEAR], 2024, [Copyright year])
AC_CONFIG_HEADERS(config_ac.h:config_ac-h.in)
AM_INIT_AUTOMAKE([1.7.2 foreign])
AC_CONFIG_MACRO_DIR([m4])
AC_USE_SYSTEM_EXTENSIONS
AC_PROG_CC
AC_PROG_CXX
LT_INIT
PKG_PROG_PKG_CONFIG
if test "x$PKG_CONFIG" = "x"; then
AC_MSG_ERROR([please install pkg-config])
fi
AC_CONFIG_SUBDIRS([libpainter librfxcodec])
# Use silent rules by default if supported by Automake
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
case $host_os in
*linux*)
linux=yes
;;
*kfreebsd*)
linux=yes # only used in instfiles/ so that’s ok for us for now
;;
*freebsd*)
freebsd=yes
;;
*netbsd*)
netbsd=yes
;;
*openbsd*)
openbsd=yes
;;
*darwin*)
macos=yes
;;
esac
AM_CONDITIONAL(LINUX, [test "x$linux" = xyes])
AM_CONDITIONAL(FREEBSD, [test "x$freebsd" = xyes])
AM_CONDITIONAL(OPENBSD, [test "x$openbsd" = xyes])
AM_CONDITIONAL(NETBSD, [test "x$netbsd" = xyes])
AM_CONDITIONAL(MACOS, [test "x$macos" = xyes])
AC_CHECK_SIZEOF([int])
AC_CHECK_SIZEOF([long])
AC_CHECK_SIZEOF([void *])
# runstatedir not available for autoconf <= 2.69
if test "x$runstatedir" = "x" ; then
runstatedir='${localstatedir}/run'
fi
AC_ARG_WITH([socketdir],
[AS_HELP_STRING([--with-socketdir=DIR],
[Use directory for UNIX sockets for XRDP sessions (default: RUNSTATEDIR/xrdp)])],
[], [with_socketdir="$runstatedir/xrdp"])
AC_SUBST([socketdir], [$with_socketdir])
AC_ARG_WITH([systemdsystemunitdir],
AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files, no to disable]),
[], [
if test "x$linux" = xyes; then
with_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)
fi
])
if test "x$with_systemdsystemunitdir" != xno; then
AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])
fi
AM_CONDITIONAL(HAVE_SYSTEMD, [test -n "$with_systemdsystemunitdir" -a "x$with_systemdsystemunitdir" != xno ])
AC_ARG_ENABLE(tests,
AS_HELP_STRING([--enable-tests],
[Ensure dependencies for the tests are installed]),
[ensure_tests_deps=yes], [])
AC_ARG_ENABLE(pam, AS_HELP_STRING([--enable-pam],
[Build PAM support (default: yes)]),
[], [enable_pam=yes])
AM_CONDITIONAL(SESMAN_NOPAM, [test x$enable_pam != xyes])
AC_ARG_ENABLE(vsock, AS_HELP_STRING([--enable-vsock],
[Build AF_VSOCK support (default: no)]),
[], [enable_vsock=no])
AC_ARG_ENABLE(ipv6, AS_HELP_STRING([--enable-ipv6],
[Build IPv6 support (default: no, experimental)]),
[], [enable_ipv6=no])
AC_ARG_ENABLE(ipv6only, AS_HELP_STRING([--enable-ipv6only],
[Build IPv6-only (default: no)]),
[], [enable_ipv6only=no])
AC_ARG_ENABLE(kerberos, AS_HELP_STRING([--enable-kerberos],
[Build kerberos support (prefer --enable-pam if available) (default: no)]),
[], [enable_kerberos=no])
AC_ARG_ENABLE(bsd, AS_HELP_STRING([--enable-bsd],
[Build BSD auth support (default: no)]),
[bsd=true], [bsd=false])
AM_CONDITIONAL(SESMAN_BSD, [test x$bsd = xtrue])
AM_CONDITIONAL(SESMAN_KERBEROS, [test x$enable_kerberos = xyes])
AC_ARG_ENABLE(pamuserpass, AS_HELP_STRING([--enable-pamuserpass],
[Build PAM userpass support (default: no)]),
[], [enable_pamuserpass=no])
AM_CONDITIONAL(SESMAN_PAMUSERPASS, [test x$enable_pamuserpass = xyes])
AC_ARG_ENABLE(pam-config, AS_HELP_STRING([--enable-pam-config=CONF],
[Select PAM config to install: arch, debian, redhat, suse, freebsd, macos, unix
(default: autodetect)]))
# Development options. devel_all is first as this provides a default for
# the others
AC_ARG_ENABLE(devel_all, AS_HELP_STRING([--enable-devel-all],
[Enable all development options (default: no)]),
[devel_all=$enableval], [devel_all=no])
AC_ARG_ENABLE(devel_debug, AS_HELP_STRING([--enable-devel-debug],
[Build exes with no optimisation and debugging symbols (default: no)]),
[devel_debug=$enableval], [devel_debug=$devel_all])
AM_CONDITIONAL(DEVEL_DEBUG, [test x$devel_debug = xyes ])
AC_ARG_ENABLE(devel_logging, AS_HELP_STRING([--enable-devel-logging],
[Enable development logging (default: no)]),
[devel_logging=$enableval], [devel_logging=$devel_all])
AC_ARG_ENABLE(devel_streamcheck, AS_HELP_STRING([--enable-devel-streamcheck],
[Add range-check/abort to stream primitives (default: no)]),
[devel_streamcheck=$enableval], [devel_streamcheck=$devel_all])
AC_ARG_ENABLE(neutrinordp, AS_HELP_STRING([--enable-neutrinordp],
[Build neutrinordp module (default: no)]),
[], [enable_neutrinordp=no])
AM_CONDITIONAL(XRDP_NEUTRINORDP, [test x$enable_neutrinordp = xyes])
AC_ARG_ENABLE(ulalaca, AS_HELP_STRING([--enable-ulalaca],
[Build ulalaca module (experimental) (default: no)]),
[], [enable_ulalaca=no])
AM_CONDITIONAL(XRDP_ULALACA, [test x$enable_ulalaca = xyes])
AC_ARG_ENABLE(jpeg, AS_HELP_STRING([--enable-jpeg],
[Build jpeg module (default: no)]),
[], [enable_jpeg=no])
AM_CONDITIONAL(XRDP_JPEG, [test x$enable_jpeg = xyes])
AC_ARG_ENABLE(tjpeg, AS_HELP_STRING([--enable-tjpeg],
[Build turbo jpeg module (default: no)]),
[], [enable_tjpeg=no])
AM_CONDITIONAL(XRDP_TJPEG, [test x$enable_tjpeg = xyes])
AC_ARG_ENABLE(fuse, AS_HELP_STRING([--enable-fuse],
[Build fuse(clipboard file / drive redir) (default: no)]),
[], [enable_fuse=no])
AM_CONDITIONAL(XRDP_FUSE, [test x$enable_fuse = xyes])
AC_ARG_ENABLE(xrdpvr, AS_HELP_STRING([--enable-xrdpvr],
[Build xrdpvr module (default: no)]),
[], [enable_xrdpvr=no])
AM_CONDITIONAL(XRDP_XRDPVR, [test x$enable_xrdpvr = xyes])
AC_ARG_ENABLE(fdkaac, AS_HELP_STRING([--enable-fdkaac],
[Build aac(audio codec) (default: no)]),
[], [enable_fdkaac=no])
AM_CONDITIONAL(XRDP_FDK_AAC, [test x$enable_fdkaac = xyes])
AC_ARG_ENABLE(opus, AS_HELP_STRING([--enable-opus],
[Build opus(audio codec) (default: no)]),
[], [enable_opus=no])
AM_CONDITIONAL(XRDP_OPUS, [test x$enable_opus = xyes])
AC_ARG_ENABLE(mp3lame, AS_HELP_STRING([--enable-mp3lame],
[Build lame mp3(audio codec) (default: no)]),
[], [enable_mp3lame=no])
AM_CONDITIONAL(XRDP_MP3LAME, [test x$enable_mp3lame = xyes])
AC_ARG_ENABLE(ibus, AS_HELP_STRING([--enable-ibus],
[Allow unicode input via IBus) (default: no)]),
[], [enable_ibus=no])
AM_CONDITIONAL(XRDP_IBUS, [test x$enable_ibus = xyes])
AC_ARG_ENABLE(pixman, AS_HELP_STRING([--enable-pixman],
[Use pixman library (default: no)]),
[], [enable_pixman=no])
AM_CONDITIONAL(XRDP_PIXMAN, [test x$enable_pixman = xyes])
AC_ARG_ENABLE(x264, AS_HELP_STRING([--enable-x264],
[Use x264 library (default: no)]),
[], [enable_x264=no])
AM_CONDITIONAL(XRDP_X264, [test x$enable_x264 = xyes])
AC_ARG_ENABLE(painter, AS_HELP_STRING([--disable-painter],
[Do not use included painter library (default: no)]),
[], [enable_painter=yes])
AM_CONDITIONAL(XRDP_PAINTER, [test x$enable_painter = xyes])
AC_ARG_ENABLE(rfxcodec, AS_HELP_STRING([--disable-rfxcodec],
[Do not use included librfxcodec library (default: no)]),
[], [enable_rfxcodec=yes])
AM_CONDITIONAL(XRDP_RFXCODEC, [test x$enable_rfxcodec = xyes])
AC_ARG_ENABLE(rdpsndaudin, AS_HELP_STRING([--enable-rdpsndaudin],
[Use rdpsnd audio in (default: no)]),
[], [enable_rdpsndaudin=no])
AM_CONDITIONAL(XRDP_RDPSNDAUDIN, [test x$enable_rdpsndaudin = xyes])
AC_ARG_ENABLE(utmp, AS_HELP_STRING([--enable-utmp],
[Update utmp (default: no)]),
[], [enable_utmp=no])
AM_CONDITIONAL(XRDP_UTMP, [test x$enable_utmp = xyes])
AC_ARG_WITH(imlib2, AS_HELP_STRING([--with-imlib2=ARG], [imlib2 library to use for non-BMP backgrounds (ARG=yes/no/<abs-path>)]),,)
AC_ARG_WITH(freetype2, AS_HELP_STRING([--with-freetype2=ARG], [freetype2 library to use for rendering fonts (ARG=yes/no/<abs-path>)]),,)
# Obsolete options
AC_ARG_ENABLE(xrdpdebug, AS_HELP_STRING([--enable-xrdpdebug],
[This option is no longer supported - use --enable-devel-all]))
if test "x$enable_xrdpdebug" != x; then
AC_MSG_ERROR([--enable-xrdpdebug must be replaced with one or more --enable-devel-* options])
fi
# configure compiler options and CFLAGS
AX_GCC_FUNC_ATTRIBUTE([format])
AX_TYPE_SOCKLEN_T
AX_CFLAGS_WARN_ALL
AX_APPEND_COMPILE_FLAGS([-Wwrite-strings])
AX_APPEND_COMPILE_FLAGS([-Wmissing-prototypes], ,[-Werror])
AM_COND_IF([LINUX],
[AX_APPEND_COMPILE_FLAGS([-Werror])]) # bsd has warnings that have not been fixed yet
AM_COND_IF([DEVEL_DEBUG],
[AX_APPEND_COMPILE_FLAGS([-g -O0])],
[AX_APPEND_COMPILE_FLAGS([-O2])])
# Function setusercontext() is in BSD -lutil but N/A on Solaris or GNU systems
AC_SEARCH_LIBS([setusercontext], [util])
# Define HAVE_XXXXX macros for some system functions
AC_CHECK_FUNCS([setusercontext getgrouplist clearenv])
# The type used by getgrouplist() is the same type used by getgroups()
AC_TYPE_GETGROUPS
# Don't fail without working nasm if rfxcodec is not enabled
if test "x$enable_rfxcodec" != xyes; then
with_simd=no
export with_simd
fi
# Check if -ldl is needed to use dlopen()
DLOPEN_LIBS=
AC_CHECK_FUNC(dlopen, [],
[AC_CHECK_LIB(dl, dlopen, [DLOPEN_LIBS=-ldl])])
AC_SUBST(DLOPEN_LIBS)
# checking for openssl
PKG_CHECK_MODULES([OPENSSL], [openssl >= 0.9.8], [],
[AC_MSG_ERROR([please install libssl-dev or openssl-devel])])
# look for openssl binary
OPENSSL_BIN=`$PKG_CONFIG --variable=exec_prefix openssl`/bin
AC_PATH_PROGS([OPENSSL], [openssl], [:], [$OPENSSL_BIN:$PATH])
# checking for PAM variation
# Linux-PAM is used in Linux systems
# OpenPAM is used by FreeBSD, NetBSD, DragonFly BSD and OS X
# OpenBSD uses BSD Authentication rather than both PAMs
AC_CHECK_HEADER([security/_pam_types.h],
[AC_DEFINE([HAVE__PAM_TYPES_H], 1, [Using Linux-PAM], [])])
AC_CHECK_HEADER([security/pam_constants.h],
[AC_DEFINE([HAVE_PAM_CONSTANTS_H], 1, [Using OpenPAM], [])])
# Find imlib2
case "$with_imlib2" in
'' | no) AC_MSG_NOTICE([imlib2 will not be supported])
use_imlib2=no
;;
yes)
PKG_CHECK_MODULES([IMLIB2], [imlib2 >= 1.4.5],
[use_imlib2=yes],
[AC_MSG_ERROR([please install libimlib2-dev or imlib2-devel])])
;;
/*) AC_MSG_CHECKING([for imlib2 in $with_imlib2])
if test -d $with_imlib2/lib; then
IMLIB2_LIBS="-L$with_imlib2/lib -lImlib2"
elif test -d $with_imlib2/lib64; then
IMLIB2_LIBS="-L$with_imlib2/lib64 -lImlib2"
else
AC_MSG_RESULT([no])
AC_MSG_ERROR([Can't find libImlib2 in $with_imlib2])
fi
if test -f $with_imlib2/include/Imlib2.h; then
IMLIB2_CFLAGS="-I $with_imlib2/include"
else
AC_MSG_RESULT([no])
AC_MSG_ERROR([Can't find $with_imlib2/include/Imlib2.h])
fi
AC_MSG_RESULT([yes])
AC_SUBST([IMLIB2_LIBS])
AC_SUBST([IMLIB2_CFLAGS])
use_imlib2=yes
;;
*) AC_MSG_ERROR([--with-imlib2 needs yes/no or absolute path])
esac
if test x$use_imlib2 = xyes; then
AC_DEFINE([USE_IMLIB2],1, [Compile with imlib2 support])
fi
# Find freetype2
#
# The modversion used by pkgcheck does not correspond to the
# freetype2 release. See docs/VERSIONS.TXT in the freetype2
# source for a table of correspondences. If you change one
# of the below defines, change both.
m4_define([FT2_REQUIRED_VERSION], [2_8_0])
m4_define([FT2_REQUIRED_MODVERSION], [20.0.14])
case "$with_freetype2" in
'' | no) AC_MSG_NOTICE([freetype2 will not be supported])
use_freetype2=no
;;
yes)
PKG_CHECK_MODULES([FREETYPE2], [freetype2 >= FT2_REQUIRED_MODVERSION],
[use_freetype2=yes],
[AC_MSG_ERROR([please install version FT2_REQUIRED_VERSION or later of libfreetype6-dev or freetype-devel])])
;;
/*) AC_MSG_CHECKING([for freetype2 in $with_freetype2])
if test -d $with_freetype2/lib; then
FREETYPE2_LIBS="-L$with_freetype2/lib -llibfreetype"
elif test -d $with_freetype2/lib64; then
FREETYPE2_LIBS="-L$with_freetype2/lib64 -llibfreetype"
else
AC_MSG_RESULT([no])
AC_MSG_ERROR([Can't find libfreetype in $with_freetype2])
fi
if test -f $with_freetype2/include/freetype2/ft2build.h; then
FREETYPE2_CFLAGS="-I $with_freetype2/include/freetype2"
else
AC_MSG_RESULT([no])
AC_MSG_ERROR([Can't find $with_freetype2/include/freetype2/ft2build.h])
fi
AC_MSG_RESULT([yes])
AC_SUBST([FREETYPE2_LIBS])
AC_SUBST([FREETYPE2_CFLAGS])
use_freetype2=yes
;;
*) AC_MSG_ERROR([--with-freetype2 needs yes/no or absolute path])
esac
AM_CONDITIONAL([USE_FREETYPE2], [test "x$use_freetype2" = xyes])
# Check only one auth mechanism is specified, and give it a name
auth_cnt=0
auth_mech="Builtin"
AUTHMOD_OBJ=verify_user.lo
AUTHMOD_LIB=-lcrypt
if test x$enable_pam = xyes
then
auth_cnt=`expr $auth_cnt + 1`
auth_mech="PAM"
AUTHMOD_OBJ=verify_user_pam.lo
AUTHMOD_LIB=-lpam
fi
if test x$bsd = xtrue
then
auth_cnt=`expr $auth_cnt + 1`
auth_mech="BSD"
AUTHMOD_OBJ=verify_user_bsd.lo
AUTHMOD_LIB=
fi
if test x$enable_kerberos = xyes
then
auth_cnt=`expr $auth_cnt + 1`
auth_mech="Kerberos"
AUTHMOD_OBJ=verify_user_kerberos.lo
AUTHMOD_LIB=-lkrb5
fi
if test x$enable_pamuserpass = xyes
then
auth_cnt=`expr $auth_cnt + 1`
auth_mech="PAM userpass"
AUTHMOD_OBJ=verify_user_pam_userpass.lo
AUTHMOD_LIB="-lpam -lpam_userpass"
fi
if test $auth_cnt -gt 1
then
AC_MSG_ERROR([--enable-pam, --enable-bsd, --enable-pamuserpass and --enable-kerberos are mutually exclusive])
fi
AC_SUBST([AUTHMOD_OBJ])
AC_SUBST([AUTHMOD_LIB])
# checking if pam should be autodetected.
if test "x$enable_pam" = "xyes"
then
if test -z "$enable_bsd"
then
AC_CHECK_HEADER([security/pam_appl.h], [],
[AC_MSG_ERROR([please install libpam0g-dev or pam-devel])])
fi
if test "x$enable_pam_config" = "x"; then
PAM_RULES="auto"
else
pam_config_file="$srcdir/instfiles/pam.d/xrdp-sesman.$enable_pam_config"
if test -f "$pam_config_file"; then
PAM_RULES="$enable_pam_config"
else
AC_MSG_ERROR([PAM file "$pam_config_file" is not available])
fi
fi
fi
AC_SUBST(PAM_RULES)
# Add define for development options to config_ac.h
AC_DEFINE([CONFIG_AC_H],1, [Allow sources to check config_ac.h is included])
if test x$devel_logging = xyes
then
AC_DEFINE([USE_DEVEL_LOGGING],1,[Enable development logging])
fi
if test x$devel_streamcheck = xyes
then
AC_DEFINE([USE_DEVEL_STREAMCHECK],1,[Enable development stream checking])
fi
if test "x$enable_vsock" = "xyes"
then
enable_vsock=yes
if test "x$freebsd" = "xyes"
then
# Determine if we have AF_HYPERV defined (FreeBSD 13+)
AC_CHECK_DECL([AF_HYPERV], [AC_DEFINE([XRDP_ENABLE_VSOCK], 1, [Enable AF_HYPERV])], [], [#include <sys/socket.h>])
else
AC_CHECK_HEADERS([linux/socket.h linux/vm_sockets.h],
[AC_DEFINE([XRDP_ENABLE_VSOCK], 1, [Enable AF_VSOCK])],
[],
[#include <sys/socket.h>])
fi
fi
if test "x$enable_ipv6only" = "xyes"
then
enable_ipv6=yes
AC_DEFINE([XRDP_ENABLE_IPV6ONLY],1,[Enable IPv6 only])
fi
if test "x$enable_ipv6" = "xyes"
then
AC_DEFINE([XRDP_ENABLE_IPV6],1,[Enable IPv6])
fi
AS_IF( [test "x$enable_neutrinordp" = "xyes"] , [PKG_CHECK_MODULES(FREERDP, freerdp >= 1.0.0)] )
# checking for libjpeg
if test "x$enable_jpeg" = "xyes"
then
AC_CHECK_HEADER([jpeglib.h], [],
[AC_MSG_ERROR([please install libjpeg-dev or libjpeg-devel])])
fi
# checking for fuse
if test "x$enable_fuse" = "xyes"
then
PKG_CHECK_MODULES([FUSE], [fuse3 >= 3.1.0], [],
[AC_MSG_ERROR([please install libfuse3-dev or fuse3-devel])])
fi
# checking for fdk aac
if test "x$enable_fdkaac" = "xyes"
then
PKG_CHECK_MODULES([FDKAAC], [fdk-aac >= 0.1.0], [],
[AC_MSG_ERROR([please install libfdk-aac-dev or fdk-aac-devel])])
fi
# checking for opus
if test "x$enable_opus" = "xyes"
then
AC_CHECK_HEADER([opus/opus.h], [],
[AC_MSG_ERROR([please install libopus-dev or opus-devel])])
fi
# checking for lame mp3
if test "x$enable_mp3lame" = "xyes"
then
AC_CHECK_HEADER([lame/lame.h], [],
[AC_MSG_ERROR([please install libmp3lame-dev or lamemp3-devel])])
fi
# checking for ibus includes
if test "x$enable_ibus" = "xyes"
then
PKG_CHECK_MODULES([IBUS], [ibus-1.0 >= 1.5], [],
[AC_MSG_ERROR([please install libibus-1.0-dev or ibus-devel])])
# ibus uses dbus which depends on glib
PKG_CHECK_MODULES([GLIB2], [glib-2.0 >= 2.56], [],
[AC_MSG_ERROR([please install libglib2.0-dev or glib2.0-devel])])
fi
AS_IF( [test "x$enable_pixman" = "xyes"] , [PKG_CHECK_MODULES(PIXMAN, pixman-1 >= 0.1.0)] )
AS_IF( [test "x$enable_x264" = "xyes"] , [PKG_CHECK_MODULES(XRDP_X264, x264 >= 0.3.0)] )
# checking for TurboJPEG
if test "x$enable_tjpeg" = "xyes"
then
if test ! -z "$TURBOJPEG_PATH"
then
# env var TURBOJPEG_PATH has been defined, use that
AC_CHECK_HEADER([$TURBOJPEG_PATH/include/turbojpeg.h], [],
[AC_MSG_ERROR([could not find TurboJPEG in dir specified by env variable TURBOJPEG_PATH ($TURBOJPEG_PATH)])])
AC_SUBST(TurboJpegIncDir, ["-I$TURBOJPEG_PATH/include"])
AC_SUBST(TurboJpegLibDir, ["-L$TURBOJPEG_PATH/lib -Wl,-rpath -Wl,$TURBOJPEG_PATH/lib"])
elif test -e /opt/libjpeg-turbo/lib64
then
# TurboJPEG has been installed to /opt on a 64 bit m/c
AC_SUBST(TurboJpegIncDir, ["-I/opt/libjpeg-turbo/include"])
AC_SUBST(TurboJpegLibDir, ["-L/opt/libjpeg-turbo/lib64 -Wl,-rpath -Wl,/opt/libjpeg-turbo/lib64"])
elif test -e /opt/libjpeg-turbo/lib32
then
# TurboJPEG has been installed to /opt on a 32 bit m/c
AC_SUBST(TurboJpegIncDir, ["-I/opt/libjpeg-turbo/include"])
AC_SUBST(TurboJpegLibDir, ["-L/opt/libjpeg-turbo/lib32 -Wl,-rpath -Wl,/opt/libjpeg-turbo/lib32"])
else
# check in default location
AC_CHECK_HEADER([/usr/include/turbojpeg.h], [],
[AC_MSG_ERROR([please install TurboJPEG ])])
AC_SUBST(TurboJpegIncDir, [""])
AC_SUBST(TurboJpegLibDir, [""])
fi
fi
AC_PATH_XTRA
if test "x$no_x" == "xyes"; then
AC_MSG_ERROR([please install libx11-dev or libX11-devel])
fi
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $X_CFLAGS"
# checking for Xfixes
AC_CHECK_HEADER([X11/extensions/Xfixes.h], [],
[AC_MSG_ERROR([please install libxfixes-dev or libXfixes-devel])],
[#include <X11/Xlib.h>])
# checking for Xrandr
AC_CHECK_HEADER([X11/extensions/Xrandr.h], [],
[AC_MSG_ERROR([please install libxrandr-dev or libXrandr-devel])],
[#include <X11/Xlib.h>])
# checking for XKB
AC_CHECK_HEADER([X11/extensions/XKBrules.h], [],
[AC_MSG_ERROR([please install libxkbfile-dev or libxkbfile-devel])],
[#include <X11/Xlib.h>
#include <X11/XKBlib.h>
#include <stdio.h>])
if test "x$enable_utmp" = "xyes"
then
AC_CHECK_HEADERS(utmp.h utmpx.h)
# Test for non-standard extensions in struct utmpx
AXRDP_CHECK_UTMPX_MEMBER_EXISTS([ut_host], [HAVE_UTMPX_UT_HOST])
AXRDP_CHECK_UTMPX_MEMBER_EXISTS([ut_exit], [HAVE_UTMPX_UT_EXIT])
fi
CFLAGS="$save_CFLAGS"
# perform unit tests if libcheck and libmocka found
perform_unit_tests=yes; # Assume packages will be found
if test "x$ensure_tests_deps" == "xyes"; then
PKG_CHECK_MODULES([CHECK], [check >= 0.10.0],
[],
[AC_MSG_ERROR([please install check, the unit test framework])])
# Check if cmocka is available - needed for unit testing
PKG_CHECK_MODULES([CMOCKA], [cmocka],
[],
[AC_MSG_ERROR([please install cmocka, the mocking framework])])
else
PKG_CHECK_MODULES([CHECK], [check >= 0.10.0],
[],
[perform_unit_tests=no])
PKG_CHECK_MODULES([CMOCKA], [cmocka],
[],
[perform_unit_tests=no])
fi
if test "x$perform_unit_tests" == "xyes"; then
AC_MSG_NOTICE([libcheck found, unit tests will be performed])
else
AC_MSG_NOTICE([libcheck not found, unit tests will be skipped])
fi
# -- end perform unit tests
AC_SUBST([moduledir], '${libdir}/xrdp')
AC_ARG_ENABLE([strict-locations],
[AS_HELP_STRING([--enable-strict-locations],
[Use standard Autoconf install directories unless overridden
(default: use /etc and /var)])],
[], [enable_strict_locations=no])
if test "x$enable_strict_locations" != "xyes"; then
sysconfdir="/etc";
localstatedir="/var";
fi
AC_ARG_WITH([pamconfdir],
[AS_HELP_STRING([--with-pamconfdir=DIR],
[Use directory for pam.d config (default: /etc/pam.d)])],
[], [with_pamconfdir="$sysconfdir/pam.d"])
AC_SUBST([pamconfdir], [$with_pamconfdir])
PKG_INSTALLDIR
AC_CHECK_HEADERS([sys/prctl.h uchar.h])
AC_CONFIG_FILES([
common/Makefile
docs/Makefile
docs/man/Makefile
fontutils/Makefile
genkeymap/Makefile
instfiles/default/Makefile
instfiles/init.d/Makefile
instfiles/Makefile
instfiles/pam.d/Makefile
instfiles/pulse/Makefile
instfiles/rc.d/Makefile
keygen/Makefile
waitforx/Makefile
libipm/Makefile
libxrdp/Makefile
Makefile
mc/Makefile
neutrinordp/Makefile
ulalaca/Makefile
pkgconfig/Makefile
pkgconfig/xrdp.pc
pkgconfig/xrdp-uninstalled.pc
sesman/libsesman/Makefile
sesman/chansrv/Makefile
sesman/Makefile
sesman/sesexec/Makefile
sesman/tools/Makefile
tests/Makefile
tests/common/Makefile
tests/libipm/Makefile
tests/libxrdp/Makefile
tests/memtest/Makefile
tests/xrdp/Makefile
tools/Makefile
tools/devel/Makefile
tools/devel/tcp_proxy/Makefile
tools/chkpriv/Makefile
vnc/Makefile
xrdpapi/Makefile
xrdp/Makefile
xrdpvr/Makefile
xup/Makefile
third_party/Makefile
third_party/tomlc99/Makefile
])
AC_REQUIRE_AUX_FILE([tap-driver.sh])
AC_OUTPUT
echo ""
echo "xrdp will be compiled with:"
echo ""
echo " mp3lame $enable_mp3lame"
echo " opus $enable_opus"
echo " fdkaac $enable_fdkaac"
echo " jpeg $enable_jpeg"
echo " turbo jpeg $enable_tjpeg"
echo " rfxcodec $enable_rfxcodec"
echo " x264 $enable_x264"
echo " painter $enable_painter"
echo " pixman $enable_pixman"
echo " fuse $enable_fuse"
echo " ipv6 $enable_ipv6"
echo " ipv6only $enable_ipv6only"
echo " vsock $enable_vsock"
echo " ibus $enable_ibus"
echo " auth mechanism $auth_mech"
echo " rdpsndaudin $enable_rdpsndaudin"
echo " utmp support $enable_utmp"
if test x$enable_utmp = xyes; then
echo " utmpx.ut_host $ac_cv_utmpx_has_ut_host"
echo " utmpx.ut_exit $ac_cv_utmpx_has_ut_exit"
fi
echo
echo " with imlib2 $use_imlib2"
echo " with freetype2 $use_freetype2"
echo
echo " development logging $devel_logging"
echo " development streamcheck $devel_streamcheck"
echo ""
echo " strict_locations $enable_strict_locations"
echo " prefix $prefix"
echo " exec_prefix $exec_prefix"
echo " libdir $libdir"
echo " bindir $bindir"
echo " sysconfdir $sysconfdir"
echo " pamconfdir $pamconfdir"
echo " localstatedir $localstatedir"
echo " runstatedir $runstatedir"
echo " socketdir $socketdir"
echo ""
echo " unit tests performable $perform_unit_tests"
echo ""
echo " CFLAGS = $CFLAGS"
echo " LDFLAGS = $LDFLAGS"
# xrdp_configure_options.h will be written to the build directory, not the source directory
echo '#define XRDP_CONFIGURE_OPTIONS \' > ./xrdp_configure_options.h
./config.status --config | xargs -n 1 | sed -e 's/^/" /' -e 's/$/\\n" \\/' >> ./xrdp_configure_options.h
echo '""' >> ./xrdp_configure_options.h