On 7 January 2012 16:15, Bruce Dubbs <bruce.dubbs@gmail.com> wrote:
Darrell Anderson wrote:

It might be a good idea to add a -DBUILD_AUTO flag that causes any
failing checks to simply disable the associated functionality as Autotools does. If you want to see this please file an enhancement
bug report.

I am noticing that -DBUILD_ALL does not encompass all features. In
several of my build scripts I have had to specify various options
because the default is for many features to be disabled.

There are two sets of parameters:  BUILD_XXX and WITH_YYY.  The BUILD_ALL parameter turns on all the BUILD_XXX parameters, but doesn't affect the WITH_YYY parameters.


If we enable all features by default, we end up with larger packages
sizes, but the advantage is things breaks faster. One of the
challenges I see in Trinity development is many developers do not
build all packages. When a person comes along who is interested in
building such a package, that person usually finds problems. If all
features were enabled by default, collectively we would discover
these problems much faster.

The defaults are not terribly important.  What I'd like to see is a WITH_ALL flag similar to BUILD_ALL.  I do like the idea of a BUILD_AUTO flag.   When a needed dependency is not found, a message like:

libtiff.so not found.  Disabling TIFF support.

Even better would be a summary of findings at the end of the cmake invocation.  For instance, openssh gives the following at the end of configure:

OpenSSH has been configured with the following options:
                    User binaries: /usr/bin
                  System binaries: /usr/sbin
              Configuration files: /etc/ssh
                  Askpass program: /usr/lib/openssh/ssh-askpass
                     Manual pages: /usr/share/man/manX
                         PID file: /var/run
 Privilege separation chroot path: /var/lib/sshd
           sshd default user PATH: /usr/bin:/bin:/usr/sbin:/sbin
                   Manpage format: doc
                      PAM support: no
                  OSF SIA support: no
                KerberosV support: no
                  SELinux support: no
                Smartcard support:
                    S/KEY support: no
             TCP Wrappers support: no
             MD5 password support: yes
                  libedit support: no
 Solaris process contract support: no
          Solaris project support: no
      IP address in $DISPLAY hack: no
          Translate v4 in v6 hack: yes
                 BSD Auth support: no
             Random number source: OpenSSL internal ONLY
            Privsep sandbox style: rlimit

             Host: x86_64-unknown-linux-gnu
         Compiler: gcc
   Compiler flags: -g -O2 -Wall -Wpointer-arith -Wuninitialized -Wsign-compare -Wformat-security -Wno-pointer-sign -Wno-unused-result -fno-strict-aliasing -fno-builtin-memset -fstack-protector-all
Preprocessor flags:
     Linker flags:  -fstack-protector-all
        Libraries: /usr/lib/libcrypto.a -ldl -ldl -lutil -lz -lnsl -lcrypt -lresolv

This tells the user exactly what is being built.  If the user wants something else, he has a basis to determine what is missing (or extra) and make the appropriate changes.

 -- Bruce

One thing with cmake that would be good is a list of options.

All should be disabled by default, like samelian says, but there should be the option to enable all dependencies (not just -DBUILD_ALL) and a way to see what options are available.

Agreed?

Calvin morrison