diff --git a/.travis.yml b/.travis.yml index 9074763..5bd591f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,18 +4,26 @@ language: cpp sudo: true +os: + - linux + - osx + compiler: - clang - gcc +matrix: + exclude: + - os: osx + compiler: gcc + branches: only: - master - travis before_script: - - sudo modprobe fuse - - cmake --version + - ./ci/setup.sh script: - ./ci/check.sh diff --git a/CMakeLists.txt b/CMakeLists.txt index ad1dd54..bceacec 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -97,7 +97,12 @@ check_cxx_source_compiles ("#include include (CheckFuncs) check_function_exists_glibc (lchmod HAVE_LCHMOD) check_function_exists_glibc (utimensat HAVE_UTIMENSAT) -check_function_exists_glibc (fdatasync HAVE_FDATASYNC) +if (APPLE) + message ("-- There is no usable FDATASYNC on Apple") + set(HAVE_FDATASYNC FALSE) +else() + check_function_exists_glibc (fdatasync HAVE_FDATASYNC) +endif (APPLE) set (CMAKE_THREAD_PREFER_PTHREAD) find_package (Threads REQUIRED) diff --git a/build.sh b/build.sh index 04604d7..87985de 100755 --- a/build.sh +++ b/build.sh @@ -7,7 +7,7 @@ if [[ ! -d build ]] then mkdir build cd build - cmake .. + cmake .. $* cd .. fi diff --git a/ci/check.sh b/ci/check.sh index 36367f9..5d5e9ca 100755 --- a/ci/check.sh +++ b/ci/check.sh @@ -1,12 +1,19 @@ #!/bin/bash -eu +cmake --version + +CFG="" +if [ "$TRAVIS_OS_NAME" = "osx" ]; then + CFG="-DENABLE_NLS=OFF -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl" +fi + if [[ ! -d build ]] then - mkdir build + mkdir build fi cd build -cmake .. +cmake .. ${CFG} make -j2 make test diff --git a/ci/setup.sh b/ci/setup.sh new file mode 100755 index 0000000..1482194 --- /dev/null +++ b/ci/setup.sh @@ -0,0 +1,10 @@ +#!/bin/bash -eu + +if [ "$TRAVIS_OS_NAME" == "linux" ]; then + sudo modprobe fuse +fi + +if [ "$TRAVIS_OS_NAME" == "osx" ]; then + brew cask install osxfuse +fi + diff --git a/encfs/FileNode.cpp b/encfs/FileNode.cpp index 4ae65a7..33fb132 100644 --- a/encfs/FileNode.cpp +++ b/encfs/FileNode.cpp @@ -258,7 +258,7 @@ int FileNode::sync(bool datasync) { int fh = io->open(O_RDONLY); if (fh >= 0) { int res = -EIO; -#ifdef linux +#if defined(HAVE_FDATASYNC) if (datasync) { res = fdatasync(fh); } else { diff --git a/encfs/FileUtils.cpp b/encfs/FileUtils.cpp index 3fb0c8c..444b2e8 100644 --- a/encfs/FileUtils.cpp +++ b/encfs/FileUtils.cpp @@ -1035,7 +1035,7 @@ RootPtr createV6Config(EncFS_Context *ctx, alg = findCipherAlgorithm("AES", keySize); // If case-insensitive system, opt for Block32 filename encoding -#if DEFAULT_CASE_INSENSITIVE +#if defined(DEFAULT_CASE_INSENSITIVE) nameIOIface = BlockNameIO::CurrentInterface(true); #else nameIOIface = BlockNameIO::CurrentInterface();