Setup conan and get boost dependency through it
This commit is contained in:
parent
b6cff8581d
commit
8376a554cc
@ -55,7 +55,14 @@ references:
|
||||
sudo chmod o-w /etc/apt/sources.list.d/clang.list
|
||||
|
||||
DEBIAN_FRONTEND=noninteractive sudo apt-get update -qq
|
||||
DEBIAN_FRONTEND=noninteractive sudo apt-get install -y git ccache $APT_COMPILER_PACKAGE cmake make libcurl4-openssl-dev libssl-dev libfuse-dev python
|
||||
DEBIAN_FRONTEND=noninteractive sudo apt-get install -y git ccache $APT_COMPILER_PACKAGE cmake make libcurl4-openssl-dev libssl-dev libfuse-dev
|
||||
|
||||
# install conan
|
||||
pyenv global 3.7.0
|
||||
python3 -m pip install -U pip
|
||||
python3 -m pip install conan
|
||||
source ~/.profile
|
||||
|
||||
# Use /dev/urandom when /dev/random is accessed to use less entropy
|
||||
sudo cp -a /dev/urandom /dev/random
|
||||
|
||||
@ -67,14 +74,25 @@ references:
|
||||
sudo ln -s /usr/bin/run-clang-tidy-8.py /usr/bin/run-clang-tidy.py
|
||||
fi
|
||||
|
||||
# Setup build cache
|
||||
sudo mkdir -p /build_cache/ccache
|
||||
sudo mkdir -p /build_cache/conan
|
||||
sudo chown -R circleci:circleci /build_cache
|
||||
|
||||
# Setup conan cache
|
||||
echo 'export CONAN_USER_HOME=/build_cache/conan' >> $BASH_ENV
|
||||
if [[ "${CXX}" == *"g++"* ]]; then
|
||||
# Conan uses old gcc ABI by default but we can only build with the cxx11 ABI.
|
||||
conan profile new default --detect
|
||||
conan profile update settings.compiler.libcxx=libstdc++11 default
|
||||
fi
|
||||
|
||||
# Setup ccache
|
||||
sudo ln -s /usr/bin/ccache /usr/local/bin/$CC
|
||||
sudo ln -s /usr/bin/ccache /usr/local/bin/$CXX
|
||||
sudo mkdir /ccache_data
|
||||
sudo chown circleci:circleci /ccache_data
|
||||
echo 'export CCACHE_COMPILERCHECK=content' >> $BASH_ENV
|
||||
echo 'export CCACHE_COMPRESS=1' >> $BASH_ENV
|
||||
echo 'export CCACHE_DIR=/ccache_data' >> $BASH_ENV
|
||||
echo 'export CCACHE_DIR=/build_cache/ccache' >> $BASH_ENV
|
||||
echo 'export CCACHE_SLOPPINESS=include_file_mtime' >> $BASH_ENV
|
||||
|
||||
sudo mkdir -p /tmp/aptcache
|
||||
@ -88,60 +106,20 @@ references:
|
||||
cmake --version
|
||||
/usr/local/bin/$CC --version
|
||||
/usr/local/bin/$CXX --version
|
||||
upgrade_boost_pre: &upgrade_boost_pre
|
||||
restore_cache:
|
||||
keys:
|
||||
# Find the most recent cache from any branch
|
||||
- v5_upgrade_boost_cache_{{ checksum "/tmp/_build_env_vars" }}_{{ arch }}
|
||||
upgrade_boost_post: &upgrade_boost_post
|
||||
save_cache:
|
||||
key: v5_upgrade_boost_cache_{{ checksum "/tmp/_build_env_vars" }}_{{ arch }}
|
||||
paths:
|
||||
- /tmp/boost_1_65_1
|
||||
upgrade_boost: &upgrade_boost
|
||||
run:
|
||||
name: Upgrade Boost
|
||||
command: |
|
||||
# Detect number of CPU cores
|
||||
export NUMCORES=`nproc`
|
||||
echo Using $NUMCORES cores
|
||||
# Download and prepare boost (only if not already present from cache)
|
||||
if [ ! -d "/tmp/boost_1_65_1" ]; then
|
||||
echo "Didn't find boost in cache. Downloading and building."
|
||||
wget -O /tmp/boost.tar.bz2 https://sourceforge.net/projects/boost/files/boost/1.65.1/boost_1_65_1.tar.bz2/download
|
||||
if [ $(sha512sum /tmp/boost.tar.bz2 | awk '{print $1;}') == "a9e6866d3bb3e7c198f442ff09f5322f58064dca79bc420f2f0168eb63964226dfbc4f034a5a5e5958281fdf7518a1b057c894fbda0b61fced59c1661bf30f1a" ]; then
|
||||
echo Correct sha512sum
|
||||
else
|
||||
echo Wrong sha512sum
|
||||
sha512sum boost.tar.bz2
|
||||
exit 1
|
||||
fi
|
||||
echo Extracting...
|
||||
tar -xf /tmp/boost.tar.bz2 -C /tmp
|
||||
rm -rf boost.tar.bz2
|
||||
cd /tmp/boost_1_65_1
|
||||
./bootstrap.sh --with-toolset=${BUILD_TOOLSET} --with-libraries=filesystem,thread,chrono,program_options
|
||||
cd ..
|
||||
else
|
||||
echo Found boost in cache. Use cache and build.
|
||||
fi
|
||||
# Compile and install boost (if cached, this should be fast)
|
||||
cd /tmp/boost_1_65_1
|
||||
sudo ./b2 toolset=${BUILD_TOOLSET} link=static cxxflags=-fPIC -d0 -j$NUMCORES install
|
||||
build_pre: &build_pre
|
||||
restore_cache:
|
||||
keys:
|
||||
# Find most recent cache from any revision on the same branch (cache keys are prefix matched)
|
||||
# CIRCLE_PR_NUMBER is only set if this is a pull request.
|
||||
- v4_build_cache_{{ checksum "/tmp/_build_env_vars" }}_{{ arch }}_{{ .Branch }}_{{ .Environment.CIRCLE_PR_NUMBER }}
|
||||
- v6_build_cache_{{ checksum "/tmp/_build_env_vars" }}_{{ arch }}_{{ .Branch }}_{{ .Environment.CIRCLE_PR_NUMBER }}
|
||||
# Fallback to less specific caches if the one above wasn't found
|
||||
- v4_build_cache_{{ checksum "/tmp/_build_env_vars" }}_{{ arch }}_{{ .Branch }}
|
||||
- v4_build_cache_{{ checksum "/tmp/_build_env_vars" }}_{{ arch }}
|
||||
- v6_build_cache_{{ checksum "/tmp/_build_env_vars" }}_{{ arch }}_{{ .Branch }}
|
||||
- v6_build_cache_{{ checksum "/tmp/_build_env_vars" }}_{{ arch }}
|
||||
build_post: &build_post
|
||||
save_cache:
|
||||
key: v4_build_cache_{{ checksum "/tmp/_build_env_vars" }}_{{ arch }}_{{ .Branch }}_{{ .Environment.CIRCLE_PR_NUMBER }}_{{ .Revision }}
|
||||
key: v6_build_cache_{{ checksum "/tmp/_build_env_vars" }}_{{ arch }}_{{ .Branch }}_{{ .Environment.CIRCLE_PR_NUMBER }}_{{ .Revision }}
|
||||
paths:
|
||||
- /ccache_data
|
||||
- /build_cache
|
||||
build: &build
|
||||
run:
|
||||
name: Build
|
||||
@ -164,6 +142,7 @@ references:
|
||||
# Build
|
||||
mkdir cmake
|
||||
cd cmake
|
||||
conan install .. -s build_type=${BUILD_TYPE} --build=missing
|
||||
cmake .. -DBUILD_TESTING=on -DCMAKE_BUILD_TYPE=${BUILD_TYPE} ${OPENMP_PARAMS} ${CMAKE_FLAGS}
|
||||
make -j$NUMCORES
|
||||
|
||||
@ -175,14 +154,14 @@ references:
|
||||
command: |
|
||||
if "${RUN_TESTS}"; then
|
||||
cd cmake
|
||||
./test/gitversion/gitversion-test ${GTEST_ARGS}
|
||||
./test/cpp-utils/cpp-utils-test ${GTEST_ARGS}
|
||||
if [ ! "$DISABLE_BROKEN_ASAN_TESTS" = true ] ; then ./test/fspp/fspp-test ${GTEST_ARGS} ; fi
|
||||
./test/parallelaccessstore/parallelaccessstore-test ${GTEST_ARGS}
|
||||
./test/blockstore/blockstore-test ${GTEST_ARGS}
|
||||
./test/blobstore/blobstore-test ${GTEST_ARGS}
|
||||
./test/cryfs/cryfs-test ${GTEST_ARGS}
|
||||
./test/cryfs-cli/cryfs-cli-test ${GTEST_ARGS}
|
||||
./bin/gitversion-test ${GTEST_ARGS}
|
||||
./bin/cpp-utils-test ${GTEST_ARGS}
|
||||
if [ ! "$DISABLE_BROKEN_ASAN_TESTS" = true ] ; then ./bin/fspp-test ${GTEST_ARGS} ; fi
|
||||
./bin/parallelaccessstore-test ${GTEST_ARGS}
|
||||
./bin/blockstore-test ${GTEST_ARGS}
|
||||
./bin/blobstore-test ${GTEST_ARGS}
|
||||
./bin/cryfs-test ${GTEST_ARGS}
|
||||
./bin/cryfs-cli-test ${GTEST_ARGS}
|
||||
fi
|
||||
job_definition: &job_definition
|
||||
<<: *container_config
|
||||
@ -191,9 +170,6 @@ references:
|
||||
- <<: *container_setup_pre
|
||||
- <<: *container_setup
|
||||
- <<: *container_setup_post
|
||||
- <<: *upgrade_boost_pre
|
||||
- <<: *upgrade_boost
|
||||
- <<: *upgrade_boost_post
|
||||
- checkout
|
||||
- <<: *build_pre
|
||||
- <<: *build
|
||||
@ -527,9 +503,6 @@ jobs:
|
||||
- <<: *container_setup_pre
|
||||
- <<: *container_setup
|
||||
- <<: *container_setup_post
|
||||
- <<: *upgrade_boost_pre
|
||||
- <<: *upgrade_boost
|
||||
- <<: *upgrade_boost_post
|
||||
- checkout
|
||||
- run:
|
||||
name: clang-tidy
|
||||
|
@ -32,19 +32,20 @@ cmake --version
|
||||
|
||||
# Build
|
||||
echo Build target: ${BUILD_TARGET}
|
||||
conan install .. -s build_type=${BUILD_TARGET} --build=missing
|
||||
cmake .. -DBUILD_TESTING=on -DCMAKE_BUILD_TYPE=${BUILD_TARGET}
|
||||
make -j$NUMCORES
|
||||
|
||||
ccache --show-stats
|
||||
|
||||
# Test
|
||||
./test/gitversion/gitversion-test
|
||||
./test/cpp-utils/cpp-utils-test
|
||||
./test/parallelaccessstore/parallelaccessstore-test
|
||||
./test/blockstore/blockstore-test
|
||||
./test/blobstore/blobstore-test
|
||||
./test/cryfs/cryfs-test
|
||||
./bin/gitversion-test
|
||||
./bin/cpp-utils-test
|
||||
./bin/parallelaccessstore-test
|
||||
./bin/blockstore-test
|
||||
./bin/blobstore-test
|
||||
./bin/cryfs-test
|
||||
|
||||
# TODO Also run once fixed
|
||||
# ./test/fspp/fspp-test
|
||||
# ./test/cryfs-cli/cryfs-cli-test
|
||||
# ./bin/fspp-test
|
||||
# ./bin/cryfs-cli-test
|
||||
|
@ -18,5 +18,7 @@ brew install libomp
|
||||
# By default, travis only fetches the newest 50 commits. We need more in case we're further from the last version tag, so the build doesn't fail because it can't generate the version number.
|
||||
git fetch --unshallow --tags
|
||||
|
||||
pip install conan
|
||||
|
||||
# Setup ccache
|
||||
brew install ccache
|
||||
|
@ -26,6 +26,20 @@ option(USE_CLANG_TIDY "build with clang-tidy checks enabled" OFF)
|
||||
option(USE_IWYU "build with iwyu checks enabled" OFF)
|
||||
option(CLANG_TIDY_WARNINGS_AS_ERRORS "treat clang-tidy warnings as errors" OFF)
|
||||
|
||||
set(CONAN_BUILD_INFO_FILE ${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
|
||||
|
||||
if(EXISTS ${CONAN_BUILD_INFO_FILE})
|
||||
include(${CONAN_BUILD_INFO_FILE})
|
||||
else()
|
||||
message(WARNING "The file ${CONAN_BUILD_INFO_FILE} doesn't exist, you have to run conan install first")
|
||||
endif()
|
||||
conan_basic_setup(TARGETS SKIP_STD)
|
||||
|
||||
if(CONAN_SETTINGS_COMPILER_LIBCXX STREQUAL "libstdc++")
|
||||
# TODO Test this warning works correctly and that the proposed solution in the warning message works.
|
||||
message(FATAL_ERROR "Conan is set up to build against libstdc++ (i.e. the legacy GCC ABI). We only support libstdc++11 (i.e. the new GCC ABI).\nPlease add the '-s compiler.libcxx=libstdc++11' argument when running 'conan install'.")
|
||||
endif()
|
||||
|
||||
if(USE_IWYU)
|
||||
# note: for iwyu, we need cmake 3.3
|
||||
cmake_minimum_required(VERSION 3.3 FATAL_ERROR)
|
||||
|
@ -7,7 +7,7 @@
|
||||
"inheritEnvironments": [ "msvc_x86" ],
|
||||
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
|
||||
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
|
||||
"cmakeCommandArgs": "-DBUILD_TESTING=on -DBOOST_ROOT=C:\\local\\boost_1_68_0 -DDOKAN_PATH=\"C:\\Program Files\\Dokan\\Dokan Library-1.2.2\"",
|
||||
"cmakeCommandArgs": "-DBUILD_TESTING=on -DDOKAN_PATH=\"C:\\Program Files\\Dokan\\Dokan Library-1.2.2\"",
|
||||
"buildCommandArgs": "-v",
|
||||
"ctestCommandArgs": ""
|
||||
},
|
||||
@ -18,7 +18,7 @@
|
||||
"inheritEnvironments": [ "msvc_x86" ],
|
||||
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
|
||||
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
|
||||
"cmakeCommandArgs": "-DBUILD_TESTING=on -DBOOST_ROOT=C:\\local\\boost_1_68_0 -DDOKAN_PATH=\"C:\\Program Files\\Dokan\\Dokan Library-1.2.2\"",
|
||||
"cmakeCommandArgs": "-DBUILD_TESTING=on -DDOKAN_PATH=\"C:\\Program Files\\Dokan\\Dokan Library-1.2.2\"",
|
||||
"buildCommandArgs": "-v",
|
||||
"ctestCommandArgs": ""
|
||||
},
|
||||
@ -29,7 +29,7 @@
|
||||
"inheritEnvironments": [ "msvc_x64_x64" ],
|
||||
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
|
||||
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
|
||||
"cmakeCommandArgs": "-DBUILD_TESTING=on -DBOOST_ROOT=C:\\local\\boost_1_68_0 -DDOKAN_PATH=\"C:\\Program Files\\Dokan\\Dokan Library-1.2.2\"",
|
||||
"cmakeCommandArgs": "-DBUILD_TESTING=on -DDOKAN_PATH=\"C:\\Program Files\\Dokan\\Dokan Library-1.2.2\"",
|
||||
"buildCommandArgs": "-v",
|
||||
"ctestCommandArgs": ""
|
||||
},
|
||||
@ -40,7 +40,7 @@
|
||||
"inheritEnvironments": [ "msvc_x64_x64" ],
|
||||
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
|
||||
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
|
||||
"cmakeCommandArgs": "-DBUILD_TESTING=on -DBOOST_ROOT=C:\\local\\boost_1_68_0 -DDOKAN_PATH=\"C:\\Program Files\\Dokan\\Dokan Library-1.2.2\"",
|
||||
"cmakeCommandArgs": "-DBUILD_TESTING=on -DDOKAN_PATH=\"C:\\Program Files\\Dokan\\Dokan Library-1.2.2\"",
|
||||
"buildCommandArgs": "-v",
|
||||
"ctestCommandArgs": ""
|
||||
}
|
||||
|
@ -1,3 +1,9 @@
|
||||
Version 0.11.0 (unreleased)
|
||||
---------------
|
||||
Build changes:
|
||||
* Switch to Conan package manager
|
||||
|
||||
|
||||
Version 0.10.2
|
||||
---------------
|
||||
Fixed bugs:
|
||||
|
36
README.md
36
README.md
@ -45,13 +45,8 @@ Requirements
|
||||
- Git (for getting the source code)
|
||||
- GCC version >= 6.5 or Clang >= 4.0
|
||||
- CMake version >= 3.1
|
||||
- Conan package manager
|
||||
- libcurl4 (including development headers)
|
||||
- Boost libraries version >= 1.65.1 (including development headers)
|
||||
- filesystem
|
||||
- system
|
||||
- chrono
|
||||
- program_options
|
||||
- thread
|
||||
- SSL development libraries (including development headers, e.g. libssl-dev)
|
||||
- libFUSE version >= 2.8.6 (including development headers), on Mac OS X instead install osxfuse from https://osxfuse.github.io/
|
||||
- Python >= 2.7
|
||||
@ -60,13 +55,16 @@ Requirements
|
||||
You can use the following commands to install these requirements
|
||||
|
||||
# Ubuntu
|
||||
$ sudo apt install git g++ cmake make libcurl4-openssl-dev libboost-filesystem-dev libboost-system-dev libboost-chrono-dev libboost-program-options-dev libboost-thread-dev libssl-dev libfuse-dev python
|
||||
$ sudo apt install git g++ cmake make libcurl4-openssl-dev libssl-dev libfuse-dev python
|
||||
$ sudo pip install conan
|
||||
|
||||
# Fedora
|
||||
sudo dnf install git gcc-c++ cmake make libcurl-devel boost-devel boost-static openssl-devel fuse-devel python
|
||||
sudo dnf install git gcc-c++ cmake make libcurl-devel openssl-devel fuse-devel python
|
||||
$ sudo pip install conan
|
||||
|
||||
# Macintosh
|
||||
brew install cmake boost openssl libomp
|
||||
$ brew install cmake openssl libomp
|
||||
$ sudo pip install conan
|
||||
|
||||
Build & Install
|
||||
---------------
|
||||
@ -79,6 +77,7 @@ Build & Install
|
||||
2. Build
|
||||
|
||||
$ mkdir cmake && cd cmake
|
||||
$ conan install .. --build=missing
|
||||
$ cmake ..
|
||||
$ make
|
||||
|
||||
@ -97,7 +96,6 @@ Building on Windows (experimental)
|
||||
Build with Visual Studio 2017 and pass in the following flags to CMake:
|
||||
|
||||
-DDOKAN_PATH=[dokan library location, e.g. "C:\Program Files\Dokan\DokanLibrary-1.2.1"]
|
||||
-DBOOST_ROOT=[path to root of boost installation]
|
||||
|
||||
If you set these variables correctly in the `CMakeSettings.json` file, you should be able to open the cryfs source folder with Visual Studio 2017.
|
||||
|
||||
@ -106,35 +104,25 @@ Troubleshooting
|
||||
|
||||
On most systems, CMake should find the libraries automatically. However, that doesn't always work.
|
||||
|
||||
1. **Boost headers not found**
|
||||
|
||||
Pass in the boost include path with
|
||||
|
||||
cmake .. -DBoost_INCLUDE_DIRS=/path/to/boost/headers
|
||||
|
||||
If you want to link boost dynamically (e.g. you don't have the static libraries), use the following:
|
||||
|
||||
cmake .. -DBoost_USE_STATIC_LIBS=off
|
||||
|
||||
2. **Fuse/Osxfuse library not found**
|
||||
1. **Fuse/Osxfuse library not found**
|
||||
|
||||
Pass in the library path with
|
||||
|
||||
cmake .. -DFUSE_LIB_PATH=/path/to/fuse/or/osxfuse
|
||||
|
||||
3. **Fuse/Osxfuse headers not found**
|
||||
2. **Fuse/Osxfuse headers not found**
|
||||
|
||||
Pass in the include path with
|
||||
|
||||
cmake .. -DCMAKE_CXX_FLAGS="-I/path/to/fuse/or/osxfuse/headers"
|
||||
|
||||
4. **Openssl headers not found**
|
||||
3. **Openssl headers not found**
|
||||
|
||||
Pass in the include path with
|
||||
|
||||
cmake .. -DCMAKE_C_FLAGS="-I/path/to/openssl/include"
|
||||
|
||||
5. **OpenMP not found (osx)**
|
||||
4. **OpenMP not found (osx)**
|
||||
|
||||
Either build it without OpenMP
|
||||
|
||||
|
25
appveyor.yml
25
appveyor.yml
@ -26,23 +26,30 @@ init:
|
||||
|
||||
install:
|
||||
- choco install -y dokany --version 1.2.1.2000 --installargs INSTALLDEVFILES=1
|
||||
- pip install conan
|
||||
- conan --version
|
||||
- cmake --version
|
||||
- conan profile new default --detect
|
||||
# note: Conan misdetects our x86 CI platform as x64, fix that
|
||||
- if "%PLATFORM%"=="x86" ( conan profile update settings.arch=x86 default )
|
||||
- if "%PLATFORM%"=="x86" ( conan profile update settings.arch_build=x86 default )
|
||||
|
||||
build_script:
|
||||
- cmd: mkdir build
|
||||
- cmd: cd build
|
||||
# note: The cmake+ninja workflow requires us to set build type in both cmake commands ('cmake' and 'cmake --build'), otherwise the cryfs.exe will depend on debug versions of the visual studio c++ runtime (i.e. msvcp140d.dll)
|
||||
- cmd: cmake .. -G "Ninja" -DCMAKE_BUILD_TYPE=%CONFIGURATION% -DBUILD_TESTING=on -DBOOST_ROOT="C:/Libraries/boost_1_67_0" -DDOKAN_PATH="C:/Program Files/Dokan/DokanLibrary-1.2.1"
|
||||
- cmd: conan install .. -s build_type=%CONFIGURATION% --build=missing
|
||||
- cmd: cmake .. -G "Ninja" -DCMAKE_BUILD_TYPE=%CONFIGURATION% -DBUILD_TESTING=on -DDOKAN_PATH="C:/Program Files/Dokan/DokanLibrary-1.2.1"
|
||||
- cmd: cmake --build . --config %CONFIGURATION%
|
||||
- cmd: .\test\gitversion\gitversion-test.exe
|
||||
- cmd: .\bin\gitversion-test.exe
|
||||
# cpp-utils-test disables ThreadDebuggingTest_ThreadName.*_thenIsCorrect because the appveyor image is too old to support the API needed for that
|
||||
- cmd: .\test\cpp-utils\cpp-utils-test.exe --gtest_filter=-ThreadDebuggingTest_ThreadName.*_thenIsCorrect
|
||||
#- cmd: .\test\fspp\fspp-test.exe
|
||||
- cmd: .\test\parallelaccessstore\parallelaccessstore-test.exe
|
||||
- cmd: .\test\blockstore\blockstore-test.exe
|
||||
- cmd: .\test\blobstore\blobstore-test.exe
|
||||
- cmd: .\test\cryfs\cryfs-test.exe
|
||||
#- cmd: .\test\cryfs-cli\cryfs-cli-test.exe
|
||||
- cmd: .\bin\cpp-utils-test.exe --gtest_filter=-ThreadDebuggingTest_ThreadName.*_thenIsCorrect
|
||||
#- cmd: .\bin\fspp-test.exe
|
||||
- cmd: .\bin\parallelaccessstore-test.exe
|
||||
- cmd: .\bin\blockstore-test.exe
|
||||
- cmd: .\bin\blobstore-test.exe
|
||||
- cmd: .\bin\cryfs-test.exe
|
||||
#- cmd: .\bin\cryfs-cli-test.exe
|
||||
|
||||
- cmd: cpack -C %CONFIGURATION% --verbose -G WIX
|
||||
|
||||
|
@ -106,26 +106,8 @@ endfunction(target_enable_style_warnings)
|
||||
# target_add_boost(buildtarget system filesystem) # list all libraries to link against in the dependencies
|
||||
##################################################
|
||||
function(target_add_boost TARGET)
|
||||
# Load boost libraries
|
||||
if(NOT DEFINED Boost_USE_STATIC_LIBS OR Boost_USE_STATIC_LIBS)
|
||||
# Many supported systems don't have boost >= 1.65.1. Better link it statically.
|
||||
message(STATUS "Boost will be statically linked")
|
||||
set(Boost_USE_STATIC_LIBS ON)
|
||||
else(NOT DEFINED Boost_USE_STATIC_LIBS OR Boost_USE_STATIC_LIBS)
|
||||
message(STATUS "Boost will be dynamically linked")
|
||||
set(Boost_USE_STATIC_LIBS OFF)
|
||||
endif(NOT DEFINED Boost_USE_STATIC_LIBS OR Boost_USE_STATIC_LIBS)
|
||||
set(BOOST_THREAD_VERSION 4)
|
||||
find_package(Boost 1.65.1
|
||||
REQUIRED
|
||||
COMPONENTS ${ARGN})
|
||||
target_include_directories(${TARGET} SYSTEM PUBLIC ${Boost_INCLUDE_DIRS})
|
||||
target_link_libraries(${TARGET} PUBLIC ${Boost_LIBRARIES})
|
||||
target_link_libraries(${TARGET} PUBLIC CONAN_PKG::boost)
|
||||
target_compile_definitions(${TARGET} PUBLIC BOOST_THREAD_VERSION=4)
|
||||
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||
# Also link to rt, because boost thread needs that.
|
||||
target_link_libraries(${TARGET} PUBLIC rt)
|
||||
endif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||
endfunction(target_add_boost)
|
||||
|
||||
##################################################
|
||||
|
17
conanfile.py
Normal file
17
conanfile.py
Normal file
@ -0,0 +1,17 @@
|
||||
from conans import ConanFile, CMake
|
||||
|
||||
class CryFSConan(ConanFile):
|
||||
settings = "os", "compiler", "build_type", "arch"
|
||||
requires = [
|
||||
]
|
||||
generators = "cmake"
|
||||
default_options = {
|
||||
# Need to disable boost-math because that doesn't compile for some reason on CI
|
||||
"boost:without_math": True,
|
||||
}
|
||||
|
||||
def requirements(self):
|
||||
if self.settings.os == "Windows":
|
||||
self.requires("boost/1.69.0@conan/stable")
|
||||
else:
|
||||
self.requires("boost/1.65.1@conan/stable")
|
@ -12,6 +12,7 @@ export NUMCORES=`nproc` && if [ ! -n "$NUMCORES" ]; then export NUMCORES=`sysctl
|
||||
echo Using ${NUMCORES} cores
|
||||
|
||||
# Run cmake in current working directory, but on source that is in the same directory as this script file
|
||||
conan install .. --build=missing
|
||||
cmake -DBUILD_TESTING=on -DCMAKE_EXPORT_COMPILE_COMMANDS=ON "${0%/*}"
|
||||
|
||||
# Filter all third party code from the compilation database
|
||||
|
@ -11,6 +11,7 @@ add_library(${PROJECT_NAME} ${SOURCES})
|
||||
target_link_libraries(${PROJECT_NAME} PUBLIC cpp-utils cryfs fspp-fuse)
|
||||
target_enable_style_warnings(${PROJECT_NAME})
|
||||
target_activate_cpp14(${PROJECT_NAME})
|
||||
target_add_boost(${PROJECT_NAME} program_options)
|
||||
|
||||
add_executable(${PROJECT_NAME}_bin main_unmount.cpp)
|
||||
set_target_properties(${PROJECT_NAME}_bin PROPERTIES OUTPUT_NAME cryfs-unmount)
|
||||
|
@ -51,7 +51,7 @@ set(LIB_SOURCES
|
||||
|
||||
add_library(${PROJECT_NAME} STATIC ${LIB_SOURCES})
|
||||
target_link_libraries(${PROJECT_NAME} PUBLIC cpp-utils fspp-interface blockstore blobstore gitversion)
|
||||
target_add_boost(${PROJECT_NAME} program_options chrono) # TODO Check that dependent projects don't get boost added (use PRIVATE here)
|
||||
target_add_boost(${PROJECT_NAME} chrono) # TODO Check that dependent projects don't get boost added (use PRIVATE here)
|
||||
target_enable_style_warnings(${PROJECT_NAME})
|
||||
target_activate_cpp14(${PROJECT_NAME})
|
||||
|
||||
|
@ -39,6 +39,7 @@ elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||
set(CMAKE_FIND_FRAMEWORK LAST)
|
||||
find_library_with_path(FUSE "osxfuse" FUSE_LIB_PATH)
|
||||
target_link_libraries(${PROJECT_NAME} PUBLIC ${FUSE})
|
||||
target_include_directories(${PROJECT_NAME} PUBLIC /usr/local/include/osxfuse/)
|
||||
else() # Linux
|
||||
find_library_with_path(FUSE "fuse" FUSE_LIB_PATH)
|
||||
target_link_libraries(${PROJECT_NAME} PUBLIC ${FUSE})
|
||||
|
@ -3,14 +3,6 @@
|
||||
#define MESSMER_FSPP_FUSE_PARAMS_H_
|
||||
|
||||
#define FUSE_USE_VERSION 26
|
||||
#if defined(__linux__) || defined(__FreeBSD__)
|
||||
#include <fuse.h>
|
||||
#elif __APPLE__
|
||||
#include <osxfuse/fuse.h>
|
||||
#elif defined(_MSC_VER)
|
||||
#include <fuse.h> // Dokany fuse
|
||||
#else
|
||||
#error System not supported
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user