From 6f17df962f9de1bc6fccda3abf69b92cb2866966 Mon Sep 17 00:00:00 2001 From: Oliver Hamlet Date: Thu, 14 Sep 2017 07:52:07 +0100 Subject: [PATCH] Fix building with Clang Don't actually build with it on Travis though, as it complicates building LOOT unnecessarily. --- .travis.yml | 2 +- CMakeLists.txt | 12 ++++++++---- src/api/error_categories.cpp | 2 ++ 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 885737c1..c6eab186 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,7 +20,7 @@ cache: install: - if [ "$CXX" = "g++" ]; then export CXX="g++-6" CC="gcc-6"; fi # Build Boost. - - wget https://raw.githubusercontent.com/WrinklyNinja/ci-scripts/1.4.0/install_boost.py + - wget https://raw.githubusercontent.com/WrinklyNinja/ci-scripts/1.5.0/install_boost.py - python install_boost.py --directory ~ --boost-version 1.64.0 -a 64 -t gcc-6 atomic chrono date_time filesystem iostreams locale log regex system thread # Install packages for generating documentation - pip install --user -r docs/requirements.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index c3fd54ce..eab7e184 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -56,7 +56,7 @@ find_package(Boost REQUIRED COMPONENTS atomic log log_setup regex locale thread ExternalProject_Add(GTest PREFIX "external" URL "https://github.com/google/googletest/archive/release-1.8.0.tar.gz" - CMAKE_ARGS -Dgtest_force_shared_crt=${MSVC_SHARED_RUNTIME} + CMAKE_ARGS -Dgtest_force_shared_crt=${MSVC_SHARED_RUNTIME} -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} INSTALL_COMMAND "") ExternalProject_Get_Property(GTest SOURCE_DIR BINARY_DIR) set (GTEST_INCLUDE_DIRS "${SOURCE_DIR}/googletest/include") @@ -85,7 +85,7 @@ ExternalProject_Add(libloadorder PREFIX "external" DEPENDS libespm URL "https://github.com/WrinklyNinja/libloadorder/archive/9.5.5.tar.gz" - CMAKE_ARGS -DBOOST_ROOT=${BOOST_ROOT} -DBOOST_LIBRARYDIR=${BOOST_LIBRARYDIR} -DMSVC_STATIC_RUNTIME=${MSVC_STATIC_RUNTIME} -DCMAKE_POSITION_INDEPENDENT_CODE=${CMAKE_POSITION_INDEPENDENT_CODE} + CMAKE_ARGS -DBOOST_ROOT=${BOOST_ROOT} -DBOOST_LIBRARYDIR=${BOOST_LIBRARYDIR} -DMSVC_STATIC_RUNTIME=${MSVC_STATIC_RUNTIME} -DCMAKE_POSITION_INDEPENDENT_CODE=${CMAKE_POSITION_INDEPENDENT_CODE} -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} BUILD_COMMAND ${CMAKE_COMMAND} --build . --target loadorder --config $(CONFIGURATION) INSTALL_COMMAND "") ExternalProject_Get_Property(libloadorder SOURCE_DIR BINARY_DIR) @@ -118,7 +118,7 @@ ExternalProject_Add(testing-plugins ExternalProject_Add(yaml-cpp PREFIX "external" URL "https://github.com/WrinklyNinja/yaml-cpp/archive/patched-for-loot.tar.gz" - CMAKE_ARGS -DMSVC_SHARED_RT=${MSVC_SHARED_RUNTIME} -DCMAKE_POSITION_INDEPENDENT_CODE=${CMAKE_POSITION_INDEPENDENT_CODE} + CMAKE_ARGS -DMSVC_SHARED_RT=${MSVC_SHARED_RUNTIME} -DCMAKE_POSITION_INDEPENDENT_CODE=${CMAKE_POSITION_INDEPENDENT_CODE} -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} BUILD_COMMAND ${CMAKE_COMMAND} --build . --target yaml-cpp --config $(CONFIGURATION) INSTALL_COMMAND "") ExternalProject_Get_Property(yaml-cpp SOURCE_DIR BINARY_DIR) @@ -268,7 +268,7 @@ IF (CMAKE_SYSTEM_NAME MATCHES "Windows") add_definitions (-DUNICODE -D_UNICODE -DLIBLO_STATIC) ENDIF () -IF (CMAKE_COMPILER_IS_GNUCXX) +IF (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") set (CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_RPATH};.") set (CMAKE_BUILD_WITH_INSTALL_RPATH ON) set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3 -std=c++14") @@ -280,6 +280,10 @@ IF (CMAKE_COMPILER_IS_GNUCXX) crypto rt pthread) + + IF (CMAKE_CXX_COMPILER_ID MATCHES "Clang") + set (LOOT_LIBS ${LOOT_LIBS} supc++) + ENDIF () ENDIF () IF (MSVC) diff --git a/src/api/error_categories.cpp b/src/api/error_categories.cpp index 3ea9c212..dd18377e 100644 --- a/src/api/error_categories.cpp +++ b/src/api/error_categories.cpp @@ -22,6 +22,8 @@ . */ +#include + #include "loot/exception/error_categories.h" namespace loot {