zookeeper-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (ZOOKEEPER-2756) Add CMake build system for better cross-platform support
Date Mon, 15 May 2017 22:31:04 GMT

    [ https://issues.apache.org/jira/browse/ZOOKEEPER-2756?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16011438#comment-16011438
] 

ASF GitHub Bot commented on ZOOKEEPER-2756:
-------------------------------------------

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 <andrew@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.

----


> Add CMake build system for better cross-platform support
> --------------------------------------------------------
>
>                 Key: ZOOKEEPER-2756
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2756
>             Project: ZooKeeper
>          Issue Type: Improvement
>          Components: build, c client
>    Affects Versions: 3.5.2
>         Environment: Windows and Linux
>            Reporter: Andrew Schwartzmeyer
>            Assignee: Andrew Schwartzmeyer
>              Labels: build, windows
>         Attachments: ZOOKEEPER-2756.patch
>
>
> The C bindings primary build system is Autotools. This obviously does not work for Windows,
and so the original port to Windows simply added a Visual Studio solution to the project,
splitting the build system. As new versions of Visual Studio have come along, new (probably
auto-converted) solutions have come along (see zookeeper.sln vs zookeeper-vs2013.sln). When
Mesos started being ported to Windows, a Visual Studio 2015 solution was needed, and the previous
developer created yet another solution, and setup Mesos' build to patch ZooKeeper and add
the 2015 solution. Now Visual Studio 2017 was released, and in the process of moving Mesos
ahead, I realized that I would either have to make *yet another* converted solution for ZooKeeper.
So instead I tackled the root problem, and ported the Autotools build to CMake, which is a
meta-build system which generates files for the in-use platform (whether it be Linux or Solaris
or MacOS or Windows).
> NOTE: I already have this patch, and will submit it. It has a couple TODOs, and some
other things in it that were necessary for Mesos that may need to be pulled into separate
patches.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Mime
View raw message