aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Hripko <yksirius@gmail.com>2018-05-31 18:43:22 +0100
committerRobert Schumacher <roschuma@microsoft.com>2018-05-31 10:43:22 -0700
commit1fa2673ab6f1d62dd0797497d2bf968bf8cd61aa (patch)
treedc0f8eb207b2172f673dc222251cdd70b300c377
parent6c8c96aad1af6b60ecbf714b8df70bea2330d383 (diff)
downloadvcpkg-1fa2673ab6f1d62dd0797497d2bf968bf8cd61aa.tar.gz
vcpkg-1fa2673ab6f1d62dd0797497d2bf968bf8cd61aa.zip
New package: bde (#3413)
* Add initial implementation for BDE port * Implement compatibility with *nix platforms * Pin down BDE version to 3.2.0.0 * Change the folder structure to reflect version * .pc files in dbg build point to correct incl. dirs * Remove the default header listing all variables
-rw-r--r--ports/bde/CONTROL3
-rw-r--r--ports/bde/portfile.cmake141
2 files changed, 144 insertions, 0 deletions
diff --git a/ports/bde/CONTROL b/ports/bde/CONTROL
new file mode 100644
index 000000000..129bf8349
--- /dev/null
+++ b/ports/bde/CONTROL
@@ -0,0 +1,3 @@
+Source: bde
+Version: 3.2.0.0
+Description: Basic Development Environment - a set of foundational C++ libraries used at Bloomberg.
diff --git a/ports/bde/portfile.cmake b/ports/bde/portfile.cmake
new file mode 100644
index 000000000..5c72156e1
--- /dev/null
+++ b/ports/bde/portfile.cmake
@@ -0,0 +1,141 @@
+include(vcpkg_common_functions)
+set(BDE_VERSION 3.2.0.0)
+set(BDE_TOOLS_VERSION 1.x)
+
+# Paths used in build
+set(SOURCE_PATH_DEBUG ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/bde-${BDE_VERSION})
+set(SOURCE_PATH_RELEASE ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/bde-${BDE_VERSION})
+
+# Acquire Python 2 and add it to PATH
+vcpkg_find_acquire_program(PYTHON2)
+get_filename_component(PYTHON2_EXE_PATH ${PYTHON2} DIRECTORY)
+
+# Acquire BDE Tools and add them to PATH
+vcpkg_from_github(
+ OUT_SOURCE_PATH TOOLS_PATH
+ REPO "bloomberg/bde-tools"
+ REF d4b1a7670829228f4ec81ecdccc598ce03ae8e80
+ SHA512 80af734c080adb225d5369157301ae0af18e02b1912351e34d23f5f2ba4e19f9ae2b5a367923f036330c9f9afd11a90cdf12680eb3e59b4297a312a1b713f17f
+ HEAD_REF master
+)
+message(STATUS "Configure bde-tools-v${BDE_TOOLS_VERSION}")
+if(VCPKG_CMAKE_SYSTEM_NAME)
+ set(ENV{PATH} "$ENV{PATH}:${PYTHON2_EXE_PATH}")
+ set(ENV{PATH} "$ENV{PATH}:${TOOLS_PATH}/bin")
+else()
+ set(ENV{PATH} "$ENV{PATH};${PYTHON2_EXE_PATH}")
+ set(ENV{PATH} "$ENV{PATH};${TOOLS_PATH}/bin")
+endif()
+
+# Acquire BDE sources
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO "bloomberg/bde"
+ REF 3720d132d0879f19b9084cca62ebc75f1f24e1a3
+ SHA512 234ebb71997f5b7d3951584235ead10f977689cef323ae1c198629a6b1995b1481d8a1515d827c46df10209bdc66e1f3cc7780dafee9ca0ff4172be47c460d78
+ HEAD_REF master
+)
+
+# Clean up previous builds
+file(REMOVE_RECURSE ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel
+ ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg)
+
+# Identify waf executable and calculate configure args
+if(VCPKG_CMAKE_SYSTEM_NAME)
+ set(WAF_COMMAND waf)
+else()
+ set(WAF_COMMAND waf.bat)
+endif()
+set(CONFIGURE_COMMON_ARGS --use-flat-include-dir)
+if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
+ set(CONFIGURE_COMMON_ARGS ${CONFIGURE_COMMON_ARGS} --abi-bits=32)
+elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
+ set(CONFIGURE_COMMON_ARGS ${CONFIGURE_COMMON_ARGS} --abi-bits=64)
+else()
+ message(FATAL_ERROR "Unsupported target architecture: ${VCPKG_TARGET_ARCHITECTURE}")
+endif()
+if(VCPKG_LIBRARY_LINKAGE STREQUAL static)
+ set(CONFIGURE_COMMON_ARGS ${CONFIGURE_COMMON_ARGS} --library-type=static)
+else()
+ message(FATAL_ERROR "Unsupported library linkage: ${VCPKG_LIBRARY_LINKAGE}")
+endif()
+if(NOT VCPKG_CMAKE_SYSTEM_NAME)
+ if(VCPKG_CRT_LINKAGE STREQUAL static)
+ set(CONFIGURE_COMMON_ARGS ${CONFIGURE_COMMON_ARGS} --msvc-runtime-type=static)
+ else()
+ set(CONFIGURE_COMMON_ARGS ${CONFIGURE_COMMON_ARGS} --msvc-runtime-type=dynamic)
+ endif()
+endif()
+
+# Configure debug
+message(STATUS "Configuring ${TARGET_TRIPLET}-dbg")
+vcpkg_execute_required_process(
+ COMMAND ${WAF_COMMAND} configure ${CONFIGURE_COMMON_ARGS}
+ --prefix=${CURRENT_PACKAGES_DIR}/debug --out=${SOURCE_PATH_DEBUG}
+ --build-type=debug
+ WORKING_DIRECTORY ${SOURCE_PATH}
+ LOGNAME configure-${TARGET_TRIPLET}--dbg
+)
+message(STATUS "Configuring ${TARGET_TRIPLET}-dbg done")
+
+# Build debug
+message(STATUS "Building ${TARGET_TRIPLET}-dbg")
+vcpkg_execute_required_process(
+ COMMAND ${WAF_COMMAND} build
+ WORKING_DIRECTORY ${SOURCE_PATH}
+ LOGNAME build-${TARGET_TRIPLET}--dbg
+)
+message(STATUS "Building ${TARGET_TRIPLET}-dbg done")
+
+# Install debug
+message(STATUS "Installing ${TARGET_TRIPLET}-dbg")
+vcpkg_execute_required_process(
+ COMMAND ${WAF_COMMAND} install
+ WORKING_DIRECTORY ${SOURCE_PATH}
+ LOGNAME install-${TARGET_TRIPLET}--dbg
+)
+# Include files should not be duplicated
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
+# pkg-config files should point to correct include directory
+file(GLOB PC_FILES "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/*.pc")
+foreach(PC_FILE_NAME ${PC_FILES})
+ file(READ "${PC_FILE_NAME}" _contents)
+ string(REPLACE "includedir=\${prefix}/include" "includedir=\${prefix}/../include" _contents "${_contents}")
+ file(WRITE "${PC_FILE_NAME}" "${_contents}")
+endforeach()
+message(STATUS "Installing ${TARGET_TRIPLET}-dbg done")
+
+# Configure release
+message(STATUS "Configuring ${TARGET_TRIPLET}-rel")
+vcpkg_execute_required_process(
+ COMMAND ${WAF_COMMAND} configure ${CONFIGURE_COMMON_ARGS}
+ --prefix=${CURRENT_PACKAGES_DIR} --out=${SOURCE_PATH_RELEASE}
+ --build-type=release
+ WORKING_DIRECTORY ${SOURCE_PATH}
+ LOGNAME configure-${TARGET_TRIPLET}--rel
+)
+message(STATUS "Configuring ${TARGET_TRIPLET}-rel done")
+
+# Build release
+message(STATUS "Building ${TARGET_TRIPLET}-rel")
+vcpkg_execute_required_process(
+ COMMAND ${WAF_COMMAND} build
+ WORKING_DIRECTORY ${SOURCE_PATH}
+ LOGNAME build-${TARGET_TRIPLET}--rel
+)
+message(STATUS "Building ${TARGET_TRIPLET}-rel done")
+
+# Install release
+message(STATUS "Installing ${TARGET_TRIPLET}-rel")
+vcpkg_execute_required_process(
+ COMMAND ${WAF_COMMAND} install
+ WORKING_DIRECTORY ${SOURCE_PATH}
+ LOGNAME install-${TARGET_TRIPLET}--rel
+)
+message(STATUS "Installing ${TARGET_TRIPLET}-rel done")
+
+# Handle copyright
+file(INSTALL ${SOURCE_PATH}/LICENSE
+ DESTINATION ${CURRENT_PACKAGES_DIR}/share/bde
+ RENAME copyright
+)