GitHub user andschwa opened a pull request: https://github.com/apache/zookeeper/pull/255
ZOOKEEPER-2756: Add CMake build system for better cross-platform support ZOOKEEPER-2756: Add CMake build system for better cross-platform support This notably lacks Solaris and libtool support. Almost everything else from Autotools has been ported, including header/function/library checks, and all targets (zookeeper, hashtable, cli, load_gen, and tests). Both Linux and Windows are supported. The primary work involved (other than the writing of `CMakeLists.txt`) was transitioning the hand-written `winconfig.h` to an auto-generated `config.h` file, and guarding code with `#ifdef HAVE_FEATURE`. The `cmake_config.h.in` template was modeled after the Autotools config file so that the feature guards share the same names. While `load_gen.c` looks at first glance as if it were ported to Windows, it never actually was, so the erroneous `#include "win32port.h"` was removed, and the target is not built on Windows. There are existent warnings which this patch did not attempt to fix, save a few easy ones (set but unused `rc` variable). Fix DLL_EXPORT and USE_STATIC_LIB redefinition. Some changes to `winconfig.h` necessary to build with Visual Studio 2015 (and 2017) were included; these originally came from a patch embedded inside the Mesos build process. You can merge this pull request into a Git repository by running: $ git pull https://github.com/andschwa/zookeeper ZOOKEEPER-2756 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/zookeeper/pull/255.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #255 ---- commit 932ca61b3f7d3112b5368872a4bfec7523484ee2 Author: Andrew Schwartzmeyer <and...@schwartzmeyer.com> Date: 2017-04-10T23:12:40Z ZOOKEEPER-2756: Add CMake build system for better cross-platform support This notably lacks Solaris and libtool support. Almost everything else from Autotools has been ported, including header/function/library checks, and all targets (zookeeper, hashtable, cli, load_gen, and tests). Both Linux and Windows are supported. The primary work involved (other than the writing of `CMakeLists.txt`) was transitioning the hand-written `winconfig.h` to an auto-generated `config.h` file, and guarding code with `#ifdef HAVE_FEATURE`. The `cmake_config.h.in` template was modeled after the Autotools config file so that the feature guards share the same names. While `load_gen.c` looks at first glance as if it were ported to Windows, it never actually was, so the erroneous `#include "win32port.h"` was removed, and the target is not built on Windows. There are existent warnings which this patch did not attempt to fix, save a few easy ones (set but unused `rc` variable). Fix DLL_EXPORT and USE_STATIC_LIB redefinition. Some changes to `winconfig.h` necessary to build with Visual Studio 2015 (and 2017) were included; these originally came from a patch embedded inside the Mesos build process. ---- --- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastruct...@apache.org or file a JIRA ticket with INFRA. ---