aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--CMakeLists.txt47
-rw-r--r--third_party/boost/CMakeLists.txt68
3 files changed, 69 insertions, 48 deletions
diff --git a/.gitignore b/.gitignore
index 6070b92d7..e9b5a07dc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,8 +18,6 @@ cmake-build-debug/
!/build
/build/*
-# Boost is downloaded and extracted to /third_party
-/third_party/boost*
# Ignored files #
*.obj
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f9f0aaed1..d1c0c13b6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -218,48 +218,6 @@ if (NOT TARGET libbacktrace)
endif()
endif()
-# Boost is downloaded if necessary
-
-# From https://www.boost.org/users/download/
-set(BOOST_VER 1.70.0)
-set(BOOST_HASH_TARGZ "882b48708d211a5f48e60b0124cf5863c1534cd544ecd0664bb534a4b5d506e9")
-set(BOOST_HASH_ZIP "48f379b2e90dd1084429aae87d6bdbde9670139fa7569ee856c8c86dd366039d")
-
-string(REPLACE "." "_" BOOST_VER_FNAME ${BOOST_VER})
-set(BOOST_THIRD_PARTY_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/boost_${BOOST_VER_FNAME})
-
-function(DownloadBoost)
- if (LINUX)
- set(BOOST_EXT "tar.gz")
- set(BOOST_HASH ${BOOST_HASH_TARGZ})
- else()
- set(BOOST_EXT "zip")
- set(BOOST_HASH ${BOOST_HASH_ZIP})
- endif()
-
- # Note: bintray.com has rate limiting, so use the sourceforge mirror
- # set(BOOST_URL https://dl.bintray.com/boostorg/release/${BOOST_VER}/source/boost_${BOOST_VER_FNAME}.${BOOST_EXT})
- set(BOOST_URL https://iweb.dl.sourceforge.net/project/boost/boost/${BOOST_VER}/boost_${BOOST_VER_FNAME}.${BOOST_EXT})
-
- if (NOT TARGET Boost::boost)
- if(NOT EXISTS ${BOOST_THIRD_PARTY_DIR})
- message(WARNING "
- third_party/boost is missing.
- Downloading and extracting boost:
- ")
-
- set(BOOST_ARCHIVE ${CMAKE_BINARY_DIR}/temp/boost_archive)
- message(STATUS "Downloading ${BOOST_URL} to ${BOOST_ARCHIVE}...")
- file(DOWNLOAD ${BOOST_URL} ${BOOST_ARCHIVE} EXPECTED_HASH SHA256=${BOOST_HASH})
- message(STATUS "Extracting ${BOOST_ARCHIVE} to ${BOOST_THIRD_PARTY_DIR}...")
- execute_process(
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/third_party
- COMMAND cmake -E tar xf ${BOOST_ARCHIVE}
- )
- endif()
- endif()
-endfunction()
-
if(SWIFTSHADER_GET_PVR)
if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/PowerVR_Examples/.git)
message(WARNING "
@@ -994,10 +952,7 @@ if(REACTOR_EMIT_DEBUG_INFO)
target_link_libraries(${Reactor} libbacktrace)
endif()
- # Download boost and use it
- DownloadBoost()
- set(BOOST_INCLUDEDIR ${BOOST_THIRD_PARTY_DIR})
- find_package(Boost REQUIRED)
+ add_subdirectory(third_party/boost)
target_link_libraries(${Reactor} Boost::boost)
endif(REACTOR_EMIT_DEBUG_INFO)
diff --git a/third_party/boost/CMakeLists.txt b/third_party/boost/CMakeLists.txt
new file mode 100644
index 000000000..c557781bc
--- /dev/null
+++ b/third_party/boost/CMakeLists.txt
@@ -0,0 +1,68 @@
+# Copyright 2020 The SwiftShader Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Boost is downloaded if necessary
+
+# From https://www.boost.org/users/download/
+set(BOOST_VER 1.70.0)
+set(BOOST_HASH_TARGZ "882b48708d211a5f48e60b0124cf5863c1534cd544ecd0664bb534a4b5d506e9")
+set(BOOST_HASH_ZIP "48f379b2e90dd1084429aae87d6bdbde9670139fa7569ee856c8c86dd366039d")
+
+string(REPLACE "." "_" BOOST_VER_FNAME ${BOOST_VER})
+set(BOOST_PARENT_DIR ${CMAKE_CURRENT_BINARY_DIR})
+set(BOOST_DIR ${BOOST_PARENT_DIR}/boost_${BOOST_VER_FNAME})
+
+function(DownloadBoost)
+ if (LINUX)
+ set(BOOST_EXT "tar.gz")
+ set(BOOST_HASH ${BOOST_HASH_TARGZ})
+ else()
+ set(BOOST_EXT "zip")
+ set(BOOST_HASH ${BOOST_HASH_ZIP})
+ endif()
+
+ # Note: bintray.com has rate limiting, so use the sourceforge mirror
+ # set(BOOST_URL https://dl.bintray.com/boostorg/release/${BOOST_VER}/source/boost_${BOOST_VER_FNAME}.${BOOST_EXT})
+ set(BOOST_URL https://iweb.dl.sourceforge.net/project/boost/boost/${BOOST_VER}/boost_${BOOST_VER_FNAME}.${BOOST_EXT})
+
+ if (NOT TARGET Boost::boost)
+ if(NOT EXISTS ${BOOST_DIR})
+ message(WARNING "
+ ${BOOST_DIR} is missing.
+ Downloading and extracting boost:
+ ")
+
+ set(BOOST_ARCHIVE ${CMAKE_BINARY_DIR}/temp/boost_archive)
+ message(STATUS "Downloading ${BOOST_URL} to ${BOOST_ARCHIVE}...")
+ file(DOWNLOAD ${BOOST_URL} ${BOOST_ARCHIVE} EXPECTED_HASH SHA256=${BOOST_HASH})
+ message(STATUS "Extracting ${BOOST_ARCHIVE} to ${BOOST_DIR}...")
+ execute_process(
+ WORKING_DIRECTORY ${BOOST_PARENT_DIR}
+ COMMAND cmake -E tar xf ${BOOST_ARCHIVE}
+ )
+ endif()
+ endif()
+endfunction()
+
+DownloadBoost()
+
+set(BOOST_INCLUDEDIR ${BOOST_DIR})
+find_package(Boost REQUIRED)
+
+# Expose Boost::boost target for parent project
+add_library(boost INTERFACE)
+target_link_libraries(boost INTERFACE
+ Boost::boost
+)
+add_library(Boost::boost ALIAS boost)