PKG_PROG_PKG_CONFIG does not exit if it fails to find pkg-config.
Continuing without pkg-config leads to misleading error messages when
checks for packages fail.
Since libpainter is going to become a subpackage, we can make librfxcodec
a subpackage as well.
With this change, librfxcodec is configured, built and linked to xrdp
automatically if enabled by "--enable-rfxcodec"
librfxcodec is packaged by "make dist" regardless of "--enable-rfxcodec"
librfxcodec/confgure is run unconditionally, it's needed for "make dist"
to work. But librfxcodec is only compiled if enabled.
The pixman library in not part of xrdp. If users see that "xrdp_pixman"
is not found, they might assume it is some xrdp specific library.
The Automake conditional is still XRDP_PIXMAN, but the pkg-config
variables become PIXMAN_LIBS and PIXMAN_CFLAGS.
The PKG_INSTALLDIR macro also enables --with-pkgconfigdir for easy
overrides.
PKG_INSTALLDIR is relatively new, it appeared in pkg-config 0.27. To
ensure we have a recent pkg.m4 copy, copy pkg.m4 to the m4 directory.
String literals are const in C++. Using this warnings moves us closer to
the stated goal of C++ compatibility, makes the code cleaner and lets
compilers optimize the code better.
Add m4/ax_append_compile_flags.m4 from Autoconf Archives for the
AX_APPEND_COMPILE_FLAGS macro and m4/ax_check_compile_flag.m4 as its
dependency.
Add Autoconf archive macros to check for -Wall and its dependencies.
Adjust m4/.gitignore to only ignore libtool macros.
Require Autoconf 2.65 for compatibility with Autoconf archive macros.
libdir is for shared and static libraries. Some xrdp libraries are loaded
dynamically from a non-standard directory, so they are used like modules.
Having separate libdir and moduledir would eventually allow to separate
dynamically loaded modules from shared libraries.
Automake 1.6.x cannot deal with conditional EXTRA_LIBS. Automake 1.7 and
1.7.1 cannot deal with line continuation in SUBDIRS.
It is important to have correct requirements to know what Automake
features can be used.
AC_CONFIG_MACRO_DIRS requires a very recent Automake, much newer than the
declared version 1.6 (even 1.11 doesn't work). AC_CONFIG_MACRO_DIR is
defined by Autoconf starting with version 2.58, so it's within the
currently declared constraints.
Use AC_PATH_XTRA to search for X11 in configure.ac. In Makefiles, add
X_CFLAGS to AM_CFLAGS for the source compilation. Add X_LIBS to LDFLAGS.
Add X_PRE_LIBS and X_EXTRA_LIBS to LDADD.
With this patch, X Windows system is correctly detected on Mac OS X.
Keeping separate files is more maintainable than merging them into a
single aclocal.m4 file. It is easier for users to understand where those
files come from.
Automake knows how to distribute files in the m4 directory.
To add flags to the compiler, CFLAGS, CPPFLAGS or LDFLAGS can be used on
the configure command line.
The need to add flags depends on the location of the headers and
libraries of the dependencies, which is orthogonal to the directory where
xrdp will be installed.
The implementation in configure.ac has a stray closing bracket, making
GOT_PREFIX true even if --prefix is not passed.
The implementation is inconsistent - the only affected makefiles are for
xrdp and libxrdp.
Changing rpath manually is wrong in most cases. Libtool should be able to
set rpath correctly on its own.
Using $(prefix)/lib ignores the libdir setting. For many 64-bit systems,
/usr/lib is used for 32-bit libraries. Adding 32-bit libraries to the
rpath slows down 64-bit executables, as the dynamic loader searches for
libraries in a wrong directory.
There is no way to disable GOT_PREFIX if --prefix has to be passed.
Fedora RPM patches configure.ac and needs to rerun autoconf and automake
after that.
OpenPAM is used in FreeBSD, NetBSD, DragonFly BSD and Mac OS X.
On the Linux system, Linux-PAM is used. Detect PAM during configure
and use which the system has.
Fix the use of AC_ARG_ENABLE() so that --disable-foo configure options
are respected.
The third and fourth arguments of AC_ARG_ENABLE are respectively
ACTION-IF-GIVEN and ACTION-IF-NOT-GIVEN. The former is executed if
either --enable-foo or --disable-foo is specified on command line, the
latter if neither is. Additionally, the specified value is stored in
$enable_foo variable.
Therefore, the common practice is to provide null ACTION-IF-GIVEN
(and use the value of $enable_foo), and to set a default for $enable_foo
in ACTION-IF-NOT-GIVEN. The commit does that, and adjusts the further
conditionals to test $enable_foo properly.