Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[xeus] Add new port #5351

Merged
merged 5 commits into from Feb 22, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 4 additions & 0 deletions ports/xeus/CONTROL
@@ -0,0 +1,4 @@
Source: xeus
Version: 2019-02-13-1
Description: C++ implementation of the Jupyter kernel protocol
Build-Depends: cppzmq, cryptopp, libuuid (linux), nlohmann-json, xtl, zeromq
47 changes: 47 additions & 0 deletions ports/xeus/portfile.cmake
@@ -0,0 +1,47 @@
include(vcpkg_common_functions)

vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO QuantStack/xeus
REF f78c60c7ce28baecb2479f2b82e4e8d1a6c35188
SHA512 9d83f32f641bcad4ac96e263c465d46bdfa7d18d41f1e201309244c95587ce08ff2426f7cdd3a4399563d46064ed9bedd4d0babf4840f65e95c6a2c6f23ac9bb
HEAD_REF master
PATCHES
static-lib.patch
)

vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
PREFER_NINJA
OPTIONS
-DBUILD_EXAMPLES=OFF
-DBUILD_TESTS=OFF
-DDOWNLOAD_GTEST=OFF
-DXEUS_USE_SHARED_CRYPTOPP=OFF # `cryptopp` port currently only supports static linkage.
-DDISABLE_ARCH_NATIVE=OFF
)

vcpkg_install_cmake()

vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/${PORT})

file(REMOVE_RECURSE
${CURRENT_PACKAGES_DIR}/debug/include
${CURRENT_PACKAGES_DIR}/debug/share
)

if(VCPKG_LIBRARY_LINKAGE STREQUAL static)
vcpkg_replace_string(${CURRENT_PACKAGES_DIR}/include/xeus/xeus.hpp
"#ifdef XEUS_STATIC_LIB"
"#if 1 // #ifdef XEUS_STATIC_LIB"
)
endif()

# Handle copyright
configure_file(${SOURCE_PATH}/LICENSE ${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright COPYONLY)

# Install usage
file(COPY ${CMAKE_CURRENT_LIST_DIR}/usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT})

# CMake integration test
#vcpkg_test_cmake(PACKAGE_NAME ${PORT})
63 changes: 63 additions & 0 deletions ports/xeus/static-lib.patch
@@ -0,0 +1,63 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 26118eb..ccda00b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -141,7 +141,12 @@ set(XEUS_SOURCES
# Output
# ======

-add_library(xeus SHARED ${XEUS_SOURCES} ${XEUS_HEADERS})
+option(BUILD_SHARED_LIBS "Build shared instead of static libraries." ON)
+if (BUILD_SHARED_LIBS)
+ add_library(xeus SHARED ${XEUS_SOURCES} ${XEUS_HEADERS})
+else ()
+ add_library(xeus STATIC ${XEUS_SOURCES} ${XEUS_HEADERS})
+endif ()

if (APPLE)
set_target_properties(xeus PROPERTIES
@@ -166,9 +171,9 @@ target_link_libraries(xeus

OPTION(XEUS_USE_SHARED_CRYPTOPP "Used shared library for cryptopp" OFF)
if (XEUS_USE_SHARED_CRYPTOPP)
- target_link_libraries(xeus PRIVATE cryptopp-shared)
+ target_link_libraries(xeus PUBLIC cryptopp-shared)
else ()
- target_link_libraries(xeus PRIVATE cryptopp-static)
+ target_link_libraries(xeus PUBLIC cryptopp-static)
endif ()

if(NOT MSVC)
@@ -226,6 +231,10 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU"
message(STATUS "CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}")
endif()

+if (NOT BUILD_SHARED_LIBS)
+ target_compile_definitions(xeus PUBLIC XEUS_STATIC_LIB)
+endif ()
+
if(MSVC)
target_compile_definitions(xeus PUBLIC -DNOMINMAX)
target_compile_options(xeus PUBLIC /DGUID_WINDOWS /MP /bigobj)
diff --git a/include/xeus/xeus.hpp b/include/xeus/xeus.hpp
index 99e1d79..522bb78 100644
--- a/include/xeus/xeus.hpp
+++ b/include/xeus/xeus.hpp
@@ -10,10 +10,14 @@
#define XEUS_EXPORT_HPP

#ifdef _WIN32
- #ifdef XEUS_EXPORTS
- #define XEUS_API __declspec(dllexport)
+ #ifdef XEUS_STATIC_LIB
+ #define XEUS_API
#else
- #define XEUS_API __declspec(dllimport)
+ #ifdef XEUS_EXPORTS
+ #define XEUS_API __declspec(dllexport)
+ #else
+ #define XEUS_API __declspec(dllimport)
+ #endif
#endif
#else
#define XEUS_API
4 changes: 4 additions & 0 deletions ports/xeus/usage
@@ -0,0 +1,4 @@
The package xeus provides CMake targets:
myd7349 marked this conversation as resolved.
Show resolved Hide resolved

find_package(xeus CONFIG REQUIRED)
target_link_libraries(main PRIVATE xeus)