aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Schumacher <roschuma@microsoft.com>2018-08-28 23:19:08 -0700
committerRobert Schumacher <roschuma@microsoft.com>2018-09-04 09:04:18 -0700
commit6af7c99555a03235994bc6dfe495ad07369088c6 (patch)
treed0db9f0947ab34c23f22397802c9ec7e0e2e82ef
parente3956a98d079097eedaab2ed1ab5033136334248 (diff)
downloadvcpkg-6af7c99555a03235994bc6dfe495ad07369088c6.tar.gz
vcpkg-6af7c99555a03235994bc6dfe495ad07369088c6.zip
[tbb] Add support for Linux and OSX
[tbb] Fix installed cmake file. Add vcpkg_test_cmake() [tbb] Fix static non-windows builds [tbb] Fix find_package() on Windows
-rw-r--r--ports/tbb/CMakeLists.txt18
-rw-r--r--ports/tbb/CONTROL2
-rw-r--r--ports/tbb/portfile.cmake135
-rw-r--r--ports/tbb/usage4
4 files changed, 88 insertions, 71 deletions
diff --git a/ports/tbb/CMakeLists.txt b/ports/tbb/CMakeLists.txt
new file mode 100644
index 000000000..cc1dd3933
--- /dev/null
+++ b/ports/tbb/CMakeLists.txt
@@ -0,0 +1,18 @@
+project(tbb CXX)
+
+file(GLOB SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*)
+file(COPY ${SOURCES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/src)
+
+include(${CMAKE_CURRENT_BINARY_DIR}/src/cmake/TBBBuild.cmake REQUIRED)
+tbb_build(TBB_ROOT ${CMAKE_CURRENT_BINARY_DIR}/src MAKE_ARGS extra_inc=big_iron.inc)
+
+set(SUBDIR ${CMAKE_CURRENT_BINARY_DIR}/tbb_cmake_build/tbb_cmake_build_subdir)
+if(CMAKE_BUILD_TYPE STREQUAL "Release")
+ set(SUBDIR "${SUBDIR}_release")
+else()
+ set(SUBDIR "${SUBDIR}_debug")
+endif()
+
+file(GLOB OUTPUTS ${SUBDIR}/*.so.* ${SUBDIR}/*.so ${SUBDIR}/*.a ${SUBDIR}/*.dylib ${SUBDIR}/*.dylib.*)
+
+install(FILES ${OUTPUTS} DESTINATION lib)
diff --git a/ports/tbb/CONTROL b/ports/tbb/CONTROL
index e70178a80..e87106dc3 100644
--- a/ports/tbb/CONTROL
+++ b/ports/tbb/CONTROL
@@ -1,3 +1,3 @@
Source: tbb
-Version: 2018_U5
+Version: 2018_U5-4
Description: Intel's Threading Building Blocks.
diff --git a/ports/tbb/portfile.cmake b/ports/tbb/portfile.cmake
index 8a66fe2e3..ac47360f8 100644
--- a/ports/tbb/portfile.cmake
+++ b/ports/tbb/portfile.cmake
@@ -1,91 +1,86 @@
-if (VCPKG_LIBRARY_LINKAGE STREQUAL static)
- message(STATUS "Warning: Static building not supported yet. Building dynamic.")
- set(VCPKG_LIBRARY_LINKAGE dynamic)
-endif()
-if (VCPKG_CRT_LINKAGE STREQUAL static)
- message(FATAL_ERROR "TBB does not currently support static crt linkage")
+include(vcpkg_common_functions)
+
+if(NOT VCPKG_CMAKE_SYSTEM_NAME OR VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
+ vcpkg_check_linkage(ONLY_DYNAMIC_LIBRARY)
endif()
-include(vcpkg_common_functions)
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO 01org/tbb
REF 2018_U5
SHA512 3e8d20276ccb1b50099f96b6cf968e3d0ada53caea1fa836ecb8652f1dca236fbbbf2c783e64ea2f761f7f21725064d19b72d176e35e4dc29706b8a30965153b
- HEAD_REF tbb_2018)
+ HEAD_REF tbb_2018
+)
-if(TRIPLET_SYSTEM_ARCH STREQUAL x86)
- set(BUILD_ARCH Win32)
-else()
- set(BUILD_ARCH ${TRIPLET_SYSTEM_ARCH})
-endif()
+file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
-set(TBB_MSBUILD_PROJECT_DIR ${SOURCE_PATH}/build/vs2013)
+if(VCPKG_CMAKE_SYSTEM_NAME AND NOT VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
+ vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ PREFER_NINJA
+ )
-vcpkg_build_msbuild(PROJECT_PATH ${TBB_MSBUILD_PROJECT_DIR}/makefile.sln PLATFORM ${BUILD_ARCH})
+ vcpkg_install_cmake()
+
+ # Settings for TBBConfigForSource.cmake.in
+ set(TBB_LIB_EXT a)
+ set(TBB_LIB_PREFIX lib)
+else()
+ if (VCPKG_CRT_LINKAGE STREQUAL static)
+ set(RELEASE_CONFIGURATION Release-MT)
+ set(DEBUG_CONFIGURATION Debug-MT)
+ else()
+ set(RELEASE_CONFIGURATION Release)
+ set(DEBUG_CONFIGURATION Debug)
+ endif()
+
+ vcpkg_install_msbuild(
+ SOURCE_PATH ${SOURCE_PATH}
+ PROJECT_SUBPATH build/vs2013/makefile.sln
+ RELEASE_CONFIGURATION ${RELEASE_CONFIGURATION}
+ DEBUG_CONFIGURATION ${DEBUG_CONFIGURATION}
+ )
+ # Settings for TBBConfigForSource.cmake.in
+ set(TBB_LIB_EXT lib)
+ set(TBB_LIB_PREFIX)
+endif()
-# Installation
-message(STATUS "Installing")
file(COPY
${SOURCE_PATH}/include/tbb
${SOURCE_PATH}/include/serial
DESTINATION ${CURRENT_PACKAGES_DIR}/include)
-set(DEBUG_OUTPUT_PATH ${TBB_MSBUILD_PROJECT_DIR}/${BUILD_ARCH}/Debug)
-set(RELEASE_OUTPUT_PATH ${TBB_MSBUILD_PROJECT_DIR}/${BUILD_ARCH}/Release)
-
-file(COPY
- ${RELEASE_OUTPUT_PATH}/tbb.lib
- ${RELEASE_OUTPUT_PATH}/tbbmalloc.lib
- ${RELEASE_OUTPUT_PATH}/tbbmalloc_proxy.lib
- DESTINATION ${CURRENT_PACKAGES_DIR}/lib)
-file(COPY
- ${DEBUG_OUTPUT_PATH}/tbb_debug.lib
- ${DEBUG_OUTPUT_PATH}/tbbmalloc_debug.lib
- ${DEBUG_OUTPUT_PATH}/tbbmalloc_proxy_debug.lib
- DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib)
-
-file(COPY
- ${RELEASE_OUTPUT_PATH}/tbb.dll
- ${RELEASE_OUTPUT_PATH}/tbbmalloc.dll
- ${RELEASE_OUTPUT_PATH}/tbbmalloc_proxy.dll
- DESTINATION ${CURRENT_PACKAGES_DIR}/bin)
-file(COPY
- ${DEBUG_OUTPUT_PATH}/tbb_debug.dll
- ${DEBUG_OUTPUT_PATH}/tbbmalloc_debug.dll
- ${DEBUG_OUTPUT_PATH}/tbbmalloc_proxy_debug.dll
- DESTINATION ${CURRENT_PACKAGES_DIR}/debug/bin)
-
-vcpkg_copy_pdbs()
-
-include(${SOURCE_PATH}/cmake/TBBMakeConfig.cmake)
-tbb_make_config(TBB_ROOT ${CURRENT_PACKAGES_DIR}
- CONFIG_DIR TBB_CONFIG_DIR # is set to ${CURRENT_PACKAGES_DIR}/cmake
- SYSTEM_NAME "Windows"
- CONFIG_FOR_SOURCE
- TBB_RELEASE_DIR "\${_tbb_root}/bin"
- TBB_DEBUG_DIR "\${_tbb_root}/debug/bin")
-
-file(COPY ${TBB_CONFIG_DIR}/TBBConfig.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/tbb)
-file(COPY ${TBB_CONFIG_DIR}/TBBConfigVersion.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/tbb)
-file(REMOVE_RECURSE ${TBB_CONFIG_DIR})
+# Settings for TBBConfigForSource.cmake.in
+if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
+ set(TBB_DEFAULT_COMPONENTS tbb tbbmalloc)
+else()
+ set(TBB_DEFAULT_COMPONENTS tbb tbbmalloc tbbmalloc_proxy)
+endif()
+file(READ "${SOURCE_PATH}/include/tbb/tbb_stddef.h" _tbb_stddef)
+string(REGEX REPLACE ".*#define TBB_VERSION_MAJOR ([0-9]+).*" "\\1" _tbb_ver_major "${_tbb_stddef}")
+string(REGEX REPLACE ".*#define TBB_VERSION_MINOR ([0-9]+).*" "\\1" _tbb_ver_minor "${_tbb_stddef}")
+string(REGEX REPLACE ".*#define TBB_INTERFACE_VERSION ([0-9]+).*" "\\1" TBB_INTERFACE_VERSION "${_tbb_stddef}")
+set(TBB_VERSION "${_tbb_ver_major}.${_tbb_ver_minor}")
+set(TBB_RELEASE_DIR "\${_tbb_root}/lib")
+set(TBB_DEBUG_DIR "\${_tbb_root}/debug/lib")
-# make it work with our installation layout
-file(READ ${CURRENT_PACKAGES_DIR}/share/tbb/TBBConfig.cmake TBB_CONFIG_CMAKE)
-string(REPLACE
-"get_filename_component(_tbb_root \"\${_tbb_root}\" PATH)"
-"get_filename_component(_tbb_root \"\${_tbb_root}\" PATH)
-get_filename_component(_tbb_root \"\${_tbb_root}\" PATH)" TBB_CONFIG_CMAKE "${TBB_CONFIG_CMAKE}")
+configure_file(
+ ${SOURCE_PATH}/cmake/templates/TBBConfigForSource.cmake.in
+ ${CURRENT_PACKAGES_DIR}/share/tbb/TBBConfig.cmake
+ @ONLY
+)
+file(READ ${CURRENT_PACKAGES_DIR}/share/tbb/TBBConfig.cmake _contents)
string(REPLACE
-"\${_tbb_root}/bin/\${_tbb_component}.lib"
-"\${_tbb_root}/lib/\${_tbb_component}.lib" TBB_CONFIG_CMAKE "${TBB_CONFIG_CMAKE}")
-string(REPLACE
-"\${_tbb_root}/debug/bin/\${_tbb_component}_debug.lib"
-"\${_tbb_root}/debug/lib/\${_tbb_component}_debug.lib" TBB_CONFIG_CMAKE "${TBB_CONFIG_CMAKE}")
-file(WRITE ${CURRENT_PACKAGES_DIR}/share/tbb/TBBConfig.cmake "${TBB_CONFIG_CMAKE}")
-
-message(STATUS "Installing done")
+ "get_filename_component(_tbb_root \"\${_tbb_root}\" PATH)"
+ "get_filename_component(_tbb_root \"\${_tbb_root}\" PATH)\nget_filename_component(_tbb_root \"\${_tbb_root}\" PATH)"
+ _contents
+ "${_contents}"
+)
+string(REPLACE "SHARED IMPORTED)" "UNKNOWN IMPORTED)" _contents "${_contents}")
+file(WRITE ${CURRENT_PACKAGES_DIR}/share/tbb/TBBConfig.cmake "${_contents}")
# Handle copyright
-file(COPY ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/tbb)
+file(COPY ${SOURCE_PATH}/LICENSE ${CMAKE_CURRENT_LIST_DIR}/usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/tbb)
file(RENAME ${CURRENT_PACKAGES_DIR}/share/tbb/LICENSE ${CURRENT_PACKAGES_DIR}/share/tbb/copyright)
+
+vcpkg_test_cmake(PACKAGE_NAME TBB)
diff --git a/ports/tbb/usage b/ports/tbb/usage
new file mode 100644
index 000000000..ecea9834c
--- /dev/null
+++ b/ports/tbb/usage
@@ -0,0 +1,4 @@
+The package tbb provides CMake targets:
+
+ find_package(TBB CONFIG REQUIRED)
+ target_link_libraries(main PRIVATE TBB::tbb)