diff options
| -rw-r--r-- | ports/bde/CONTROL | 3 | ||||
| -rw-r--r-- | ports/bde/portfile.cmake | 141 |
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
+)
|
