Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

clang 7.0 support - individual warning levels #100

Merged
merged 110 commits into from
Feb 4, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
110 commits
Select commit Hold shift + click to select a range
2421d75
disable warnings
gabyx Jan 20, 2018
638c0ad
warnings -Wall off
gabyx Jan 21, 2018
2b98560
correct install path for libraries -> lib instead of bin
gabyx Jan 21, 2018
adf2463
typos
gabyx Jan 21, 2018
eb2df6d
Merge branch 'correct-cmake-install' into disable-warnings
gabyx Jan 21, 2018
ef43f83
fix rpath on mac os, such that when linking with this library using c…
gabyx Jan 21, 2018
60c7257
Merge branch 'fix-cmake-rpath-macos' into disable-warnings
gabyx Jan 21, 2018
839f13f
remove uneeded settings to fix the problem
gabyx Jan 21, 2018
9848f3b
Merge branch 'fix-cmake-rpath-macos' into disable-warnings
gabyx Jan 21, 2018
60951cf
merged the good parts from warchant
gabyx Jan 21, 2018
4cff144
Merge branch 'fix-cmake-rpath-macos' into disable-warnings
gabyx Jan 21, 2018
e1999ea
merged the good parts from warchant, restored some default behaviour
gabyx Jan 21, 2018
5f295e0
Merge branch 'fix-cmake-rpath-macos' into disable-warnings
gabyx Jan 21, 2018
ee4f284
rpath and install_names fixed, on windows libraries go next to binari…
gabyx Jan 21, 2018
fc10657
Merge branch 'fix-cmake-rpath-macos' into disable-warnings
gabyx Jan 21, 2018
c181f4e
fix, typo
gabyx Jan 21, 2018
9ba6b0d
Merge branch 'fix-cmake-rpath-macos' into disable-warnings
gabyx Jan 21, 2018
4579a90
corrected rpath settings
gabyx Jan 22, 2018
4a22690
Merge branch 'fix-cmake-rpath-macos' into disable-warnings
gabyx Jan 22, 2018
64105cd
permissions fix
gabyx Jan 22, 2018
a6661d7
default prefix fix
gabyx Jan 22, 2018
e3c1dc2
travis cmake update
gabyx Jan 22, 2018
0d60942
Merge branch 'fix-cmake-rpath-macos' into disable-warnings
gabyx Jan 23, 2018
5b65744
Merge remote-tracking branch 'upstream/master'
gabyx Jan 23, 2018
c4990f8
Merge branch 'master' into fix-cmake-rpath-macos
gabyx Jan 23, 2018
86e190f
Merge branch 'master' into disable-warnings
gabyx Jan 23, 2018
d577f8a
individual warning levels
gabyx Jan 23, 2018
77124c2
gitignore
gabyx Jan 23, 2018
45979e8
cmake fixes
gabyx Jan 23, 2018
2d68e5d
warning levels for benchmarks/unit_tests decreased
gabyx Jan 23, 2018
28de4a7
cmake fixes
gabyx Jan 23, 2018
f975fff
cmake fixes, rpath for benchmarks
gabyx Jan 23, 2018
b78ef29
cmake fixes, typo
gabyx Jan 23, 2018
f52ec93
Merge branch 'fix-cmake-rpath-macos' into disable-warnings
gabyx Jan 23, 2018
78a9b78
only from clang 5.0 -> noexcept-type
gabyx Jan 23, 2018
73f2899
added support for c++17 compilers
acki-m Jan 23, 2018
26e3f6c
fixed VS2013 build
acki-m Jan 24, 2018
02c7f37
removed several FORCE_INLINE marks, due to errors reported from MSVC
acki-m Jan 24, 2018
e0079ac
made code compile also with c++11 flag
acki-m Jan 24, 2018
b389a01
added clang 5.0.0 for linux travis builds
acki-m Jan 24, 2018
5e91693
fixed compile error for < c++17 compilers
acki-m Jan 24, 2018
27441b7
Review changes
gabyx Jan 24, 2018
87d0784
Review changes
gabyx Jan 24, 2018
f45e587
Review changes, everything into bin directory on windows..., fix for …
gabyx Jan 24, 2018
2049bc8
renaming, better read out GNUInstallDirs, set them, and use only the …
gabyx Jan 24, 2018
14781a0
Debug postfix
gabyx Jan 24, 2018
fc95f8e
Installation dir correction, make it explicit, set it in the config, …
gabyx Jan 24, 2018
d34f713
Review changes
gabyx Jan 24, 2018
764c0c7
typos
gabyx Jan 24, 2018
b86b099
Merge branch 'fix-cmake-rpath-macos' into disable-warnings
gabyx Jan 24, 2018
afd5818
one newline
gabyx Jan 24, 2018
9dae7a3
fixed compile error under linux, because of adjusted compiler version…
acki-m Jan 24, 2018
a1593e9
Merge remote-tracking branch 'upstream/master'
gabyx Jan 25, 2018
c03abbc
Merge branch 'master' into disable-warnings
gabyx Jan 25, 2018
6ed9c1e
Merge branch 'master' into feature-add-cpp17-compiler-support
acki-m Jan 25, 2018
7d0d8be
added missing EOL
acki-m Jan 25, 2018
b385191
small changes
gabyx Jan 25, 2018
4f9dc93
Merge remote-tracking branch 'acki-m/feature-add-cpp17-compiler-suppo…
gabyx Jan 25, 2018
b42102e
Compiles with clang7.0 (everything!)
gabyx Jan 25, 2018
8fc6067
Merge branch 'disable-warnings-merge' into disable-warnings
gabyx Jan 25, 2018
d7f3d57
fixed detection of clang noexcept function signature
acki-m Jan 27, 2018
6d9f8fe
fixed warning unused variable
acki-m Jan 27, 2018
dac092a
replaced the manual setting of the compiler flags and instead let cma…
acki-m Jan 29, 2018
ba1b782
used newest cmake release (3.10.2) for compiling @ travis
acki-m Jan 29, 2018
33b1173
fixed visibility issue with gcc
acki-m Jan 30, 2018
2ff1db4
marked project as CXX
acki-m Jan 30, 2018
f8cfde9
added missing architecture x64 to valgrind build
acki-m Jan 30, 2018
aac425a
added CXX to all projects - to avoid looking for C compiler
acki-m Jan 30, 2018
c33b093
fixed cmake warning (unused C flags)
acki-m Jan 30, 2018
8e25084
added 'linux-libc-dev:i386'
acki-m Jan 30, 2018
0e9a0c1
typo in travis script
acki-m Jan 30, 2018
f524bc8
added libstdc++ version to linux/clang builds
acki-m Jan 30, 2018
adcb982
for testing purpose, move code on top
acki-m Jan 30, 2018
23f2a83
removed warnings because of unused variables
acki-m Jan 30, 2018
47c7aa2
Merge remote-tracking branch 'acki-m/feature-add-cpp17-compiler-suppo…
gabyx Jan 31, 2018
06c77f1
added cmake function to test for latest c++ standard (17)
acki-m Jan 31, 2018
dfb9e9c
fixed cmake typo
acki-m Jan 31, 2018
84946ab
merged, set_compiler_warnings used mine, because like this I can buil…
gabyx Jan 31, 2018
583b01c
fixed benchmark for rttr_cast
acki-m Jan 31, 2018
e831119
fixed warning in test_classes.h
acki-m Jan 31, 2018
06cc1d5
Merge remote-tracking branch 'acki-m/feature-add-cpp17-compiler-suppo…
gabyx Jan 31, 2018
067d206
travis, cmake
gabyx Jan 31, 2018
b8dc30f
fixed MSVC build, when flag /:stdc++17 is used
acki-m Jan 31, 2018
708e0fa
distinguish apple clang version number in certain cases
gabyx Feb 1, 2018
ec92f29
lets try with <string> include
gabyx Feb 1, 2018
f4a294d
from apple clang 9.0.0
gabyx Feb 1, 2018
5843fa8
removed c++17 compilation for visual studio (compiler bug)
acki-m Feb 1, 2018
41d1cb8
fixed error message for clang on MacOSX
acki-m Feb 2, 2018
082083c
fixed preprocessor error
acki-m Feb 2, 2018
67d9920
try to fix compile error for clang-900.0.39.2 on apple
acki-m Feb 2, 2018
10ce403
Merge remote-tracking branch 'acki-m/feature-add-cpp17-compiler-suppo…
gabyx Feb 2, 2018
1c23369
merge fix
gabyx Feb 2, 2018
7b0ce08
lets see if everything builds
gabyx Feb 2, 2018
e1dec1c
Build Benchmarks on Apple too
gabyx Feb 2, 2018
aee0e83
and gcc7 too
gabyx Feb 2, 2018
7e44625
boost for gcc7 on travis
gabyx Feb 3, 2018
4db1725
gitignore
gabyx Feb 3, 2018
5e5b9de
Review Changes
gabyx Feb 3, 2018
e58cb53
Set Compiler Warning Function
gabyx Feb 3, 2018
cf17045
Forgot some files
gabyx Feb 3, 2018
9d91021
Review changes
gabyx Feb 3, 2018
1702b1c
typo
gabyx Feb 3, 2018
89c6db7
typo
gabyx Feb 3, 2018
c5f938e
typo
gabyx Feb 3, 2018
b1448a0
now we have a new compiler wa also need to check all other #if
gabyx Feb 4, 2018
93bb4cc
Testing xcode 9.0 as well on travis
gabyx Feb 4, 2018
a709f4f
more additional: RTTR_COMPILER == RTTR_COMPILER_APPLECLANG
gabyx Feb 4, 2018
253cd53
travis test
gabyx Feb 4, 2018
40b2428
final commit (hopefully ;-)
gabyx Feb 4, 2018
d0e9083
ok, now final commit
gabyx Feb 4, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
165 changes: 74 additions & 91 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
####################################################################################

language: cpp
dist: trusty
sudo: false

env:
Expand All @@ -38,19 +39,20 @@ env:

matrix:
include:
# check code formatting

# check code formatting
- os: linux
compiler: gcc
env: NAME="check code formatting" COMPILER=g++-4.8 ARCH=x86_64 CHECK_FORMATTING=true UNIT_TESTS=false

env: NAME="check code formatting" CHECK_FORMATTING=true
# valgrind memory check
- os: linux
compiler: gcc
addons:
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['g++-4.8-multilib', 'linux-libc-dev:i386', 'libc6-dbg:i386', 'valgrind']
env: NAME="valgrind" COMPILER=g++-4.8 ARCH=x86 CONF=Debug VALGRIND=true UNIT_TESTS=true
packages: ['g++-4.9', 'valgrind', 'ninja-build']
env: NAME="valgrind" COMPILER=g++-4.9 ARCH=x64 CONF=Debug VALGRIND=true UNIT_TESTS=true

# check code coverage x86 => result https://coveralls.io/github/rttrorg/rttr
- os: linux
Expand Down Expand Up @@ -100,99 +102,124 @@ matrix:
addons:
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['g++-4.8-multilib', 'linux-libc-dev:i386']
env: COMPILER=g++-4.8 ARCH=x86 CONF=Release UNIT_TESTS=true
packages: ['g++-4.9-multilib', 'linux-libc-dev:i386', 'ninja-build']
env: NAME="g++-4.9 x86" COMPILER=g++-4.9 ARCH=x86 CONF=Release UNIT_TESTS=true

- os: linux
compiler: gcc
addons:
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['g++-4.8-multilib']
env: COMPILER=g++-4.8 ARCH=x86_64 CONF=Release UNIT_TESTS=true
packages: ['g++-4.9', 'ninja-build']
env: NAME="g++-4.9 x64" COMPILER=g++-4.9 ARCH=x86_64 CONF=Release UNIT_TESTS=true

- os: linux
compiler: gcc
addons:
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['g++-7']
env: COMPILER=g++-7 ARCH=x86_64 CONF=Release UNIT_TESTS=true
packages: ['g++-4.9', 'libboost-all-dev']
env: NAME="g++-4.9 x64 - Build benchmarks & examples" COMPILER=g++-4.9 ARCH=x86_64 CONF=Release UNIT_TESTS=false BUILD_EXAMPLES=true BUILD_BENCHMARKS=true

- os: linux
compiler: gcc
addons:
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['g++-4.8-multilib', 'libboost-all-dev']
env: COMPILER=g++-4.8 ARCH=x86_64 CONF=Release UNIT_TESTS=false BUILD_EXAMPLES=true BUILD_BENCHMARKS=true

packages: ['g++-5', 'ninja-build']
env: NAME="g++-5" COMPILER=g++-5 ARCH=x86_64 CONF=Release UNIT_TESTS=true
- os: linux
compiler: clang
compiler: gcc
addons:
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['g++-4.8-multilib', 'libboost-all-dev']
env: LLVM_VERSION=3.8.0 ARCH=x86_64 CONF=Release UNIT_TESTS=false BUILD_EXAMPLES=true BUILD_BENCHMARKS=true

packages: ['g++-6', 'ninja-build']
env: NAME="g++-6" COMPILER=g++-6 ARCH=x86_64 CONF=Release UNIT_TESTS=true

- os: linux
compiler: gcc
addons:
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['g++-7', 'libboost-all-dev', 'ninja-build']
env: NAME="g++-7" COMPILER=g++-7 ARCH=x86_64 CONF=Release UNIT_TESTS=true BUILD_BENCHMARKS=true

# Linux / CLang
# this config fails at the moment because of disabled APT on llvm
- os: linux
compiler: clang
addons:
apt:
sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.7']
packages: ['clang-3.7']
packages: ['libstdc++-5-dev', 'clang-3.7', 'ninja-build']
env: COMPILER=clang++-3.7 ARCH=x86_64 CONF=Release UNIT_TESTS=true
# end not workint clang config


- os: linux
compiler: clang
addons:
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['g++-4.8-multilib', 'linux-libc-dev:i386']
env: LLVM_VERSION=3.7.1 ARCH=x86 CONF=Release UNIT_TESTS=true

sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-4.0']
packages: ['libstdc++-6-dev', 'clang-4.0', 'libboost-all-dev', 'ninja-build']
env: NAME="clang++-4.0 - build benchmarks & examples" COMPILER=clang++-4.0 ARCH=x86_64 CONF=Release UNIT_TESTS=false BUILD_EXAMPLES=true BUILD_BENCHMARKS=true
- os: linux
compiler: clang
addons:
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['g++-4.8-multilib']
env: LLVM_VERSION=3.7.1 ARCH=x86_64 CONF=Release UNIT_TESTS=true
packages: ['libstdc++-5-dev', 'clang-3.8', 'ninja-build']
env: COMPILER=clang++-3.8 ARCH=x86_64 CONF=Release UNIT_TESTS=true

- os: linux
compiler: clang
addons:
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['g++-4.8-multilib', 'linux-libc-dev:i386']
env: LLVM_VERSION=3.8.0 ARCH=x86 CONF=Release UNIT_TESTS=true

packages: ['libstdc++-6-dev', 'clang-3.9', 'ninja-build']
env: COMPILER=clang++-3.9 ARCH=x86_64 CONF=Release UNIT_TESTS=true
- os: linux
compiler: clang
addons:
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['g++-4.8-multilib']
env: LLVM_VERSION=3.8.0 ARCH=x86_64 CONF=Release UNIT_TESTS=true

sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-4.0']
packages: ['libstdc++-6-dev', 'clang-4.0', 'ninja-build']
env: COMPILER=clang++-4.0 ARCH=x86_64 CONF=Release UNIT_TESTS=true

- os: linux
compiler: clang
addons:
apt:
sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-5.0']
packages: ['libstdc++-7-dev', 'clang-5.0',]
env: COMPILER=clang++-5.0 ARCH=x86_64 CONF=Release UNIT_TESTS=true

# OSX/Clang
- os: osx
osx_image: xcode7.3
osx_image: xcode9.2
compiler: clang
env: COMPILER=clang++ ARCH=x86 CONF=Release UNIT_TESTS=true
env: COMPILER=clang++ ARCH=x86 CONF=Release UNIT_TESTS=true BUILD_BENCHMARKS=true

- os: osx
osx_image: xcode7.3
osx_image: xcode9.2
compiler: clang
env: COMPILER=clang++ ARCH=x86_64 CONF=Release UNIT_TESTS=true
env: COMPILER=clang++ ARCH=x86_64 CONF=Release UNIT_TESTS=true

allow_failures:
- env: COMPILER=clang++-3.7 ARCH=x86_64 CONF=Release UNIT_TESTS=true
- env: COMPILER=g++-7 ARCH=x86_64 CONF=Release UNIT_TESTS=true
- os: osx
osx_image: xcode9
compiler: clang
env: COMPILER=clang++ ARCH=x86_64 CONF=Release UNIT_TESTS=true

- os: osx
osx_image: xcode8.3
compiler: clang
env: COMPILER=clang++ ARCH=x86 CONF=Release UNIT_TESTS=true

- os: osx
osx_image: xcode8.3
compiler: clang
env: COMPILER=clang++ ARCH=x86_64 CONF=Release UNIT_TESTS=true

before_install:
- export CIT_ROOT=`pwd`
- cd $CIT_ROOT
Expand All @@ -212,11 +239,11 @@ install:
#######################################################################################
- |
if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then
CMAKE_URL="http://www.cmake.org/files/v3.5/cmake-3.5.2-Linux-x86_64.tar.gz"
CMAKE_URL="http://www.cmake.org/files/v3.10/cmake-3.10.2-Linux-x86_64.tar.gz"
mkdir cmake && travis_retry wget --no-check-certificate --quiet -O - ${CMAKE_URL} | tar --strip-components=1 -xz -C cmake
export PATH=${DEPS_DIR}/cmake/bin:${PATH}
else
brew upgrade cmake || brew install cmake || brew link --overwrite cmake
brew upgrade cmake || brew install cmake ninja || brew link --overwrite cmake
fi
- cmake --version
#######################################################################################
Expand All @@ -235,69 +262,25 @@ install:
if [[ "${CHECK_FORMATTING}" == "true" ]]; then
sudo apt-get install vera++ -y
fi

#######################################################################################
# Install Clang
#######################################################################################
- |
if [[ "${LLVM_VERSION}" != "" ]]; then
CLANG_URL="http://llvm.org/releases/${LLVM_VERSION}/clang+llvm-${LLVM_VERSION}-x86_64-linux-gnu-ubuntu-14.04.tar.xz"
mkdir clang && travis_retry wget --quiet -O - ${CLANG_URL} | tar --strip-components=1 -xJ -C clang
export PATH=${DEPS_DIR}/clang/bin:${PATH}
ls ${DEPS_DIR}/clang/bin
export CXX=${DEPS_DIR}/clang/bin/clang++
export CC=${DEPS_DIR}/clang/bin/clang
fi

#######################################################################################
# Install libc++ and libc++abi (on Linux only; Xcode uses libc++ by default)
#######################################################################################
- |
if [[ "${LLVM_VERSION}" != "" && "${STDLIB}" != "libstdc++" ]]; then
if [[ "${LLVM_VERSION}" != "trunk" ]]; then
LLVM_URL="http://llvm.org/releases/${LLVM_VERSION}/llvm-${LLVM_VERSION}.src.tar.xz"
LIBCXX_URL="http://llvm.org/releases/${LLVM_VERSION}/libcxx-${LLVM_VERSION}.src.tar.xz"
LIBCXXABI_URL="http://llvm.org/releases/${LLVM_VERSION}/libcxxabi-${LLVM_VERSION}.src.tar.xz"
TAR_FLAGS="-xJ"
else
LLVM_URL="https://github.com/llvm-mirror/llvm/archive/master.tar.gz"
LIBCXX_URL="https://github.com/llvm-mirror/libcxx/archive/master.tar.gz"
LIBCXXABI_URL="https://github.com/llvm-mirror/libcxxabi/archive/master.tar.gz"
TAR_FLAGS="-xz"
fi
mkdir -p llvm llvm/build llvm/projects/libcxx llvm/projects/libcxxabi
travis_retry wget --quiet -O - ${LLVM_URL} | tar --strip-components=1 ${TAR_FLAGS} -C llvm
travis_retry wget --quiet -O - ${LIBCXX_URL} | tar --strip-components=1 ${TAR_FLAGS} -C llvm/projects/libcxx
travis_retry wget --quiet -O - ${LIBCXXABI_URL} | tar --strip-components=1 ${TAR_FLAGS} -C llvm/projects/libcxxabi
# clang-3.8.0 does not compile libc++.so.1.0 as 32 bit binary, the flag is for unknown reason not forwarded
# this will fix it
export CXX="${DEPS_DIR}/clang/bin/clang++ $CMAKE_ARCH_FLAGS"
(cd llvm/build && cmake .. -DCMAKE_INSTALL_PREFIX=${DEPS_DIR}/llvm/install -DCMAKE_CXX_FLAGS="$CMAKE_ARCH_FLAGS")
(cd llvm/build/projects/libcxx && make install -j2)
(cd llvm/build/projects/libcxxabi && make install -j2)
export CXXFLAGS="-isystem ${DEPS_DIR}/llvm/install/include/c++/v1"
export LDFLAGS="-L ${DEPS_DIR}/llvm/install/lib -l c++ -l c++abi"
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${DEPS_DIR}/llvm/install/lib"
fi

before_script:
- cd ${TRAVIS_BUILD_DIR}
- mkdir build
- if [[ "${LLVM_VERSION}" != "" ]]; then export CMAKE_ADDITIONAL_FLAGS=-stdlib=libc++; fi
- >
eval "ARCH_FLAGS=\${ARCH_FLAGS_${ARCH}}" ;
(cd build && cmake
-DCMAKE_CXX_COMPILER=${COMPILER}
-DCMAKE_C_COMPILER=${CC}
-DCMAKE_BUILD_TYPE=${CONF}
-DCMAKE_CXX_FLAGS="$ARCH_FLAGS $CMAKE_ADDITIONAL_FLAGS $GCOV_FLAGS"
-DCMAKE_C_FLAGS="$ARCH_FLAGS"
-DBUILD_WEBSITE_DOCU=$BUILD_DOCU
-DBUILD_EXAMPLES=$BUILD_EXAMPLES
-DBUILD_BENCHMARKS=$BUILD_BENCHMARKS
..)

script:
# show OS/compiler version
- uname -a
- $CXX --version
- |
if [[ "${CHECK_FORMATTING}" == "true" ]]; then
# F001: Source files should not use the '\r' (CR) character
Expand Down
57 changes: 26 additions & 31 deletions CMake/config.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -113,41 +113,17 @@ endif()

enable_rtti(BUILD_WITH_RTTI)

if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.7.0")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x -Wall -Werror")
message(STATUS "added flag -std=c++0x, -Wall, -Werror to g++")
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Werror")
message(STATUS "added flag -std=c++11, -Wall, -Werror to g++")
endif()
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "4.0.0")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -fvisibility-inlines-hidden")
endif()

if(MINGW)
set(GNU_STATIC_LINKER_FLAGS "-static-libgcc -static-libstdc++ -static")
else()
set(GNU_STATIC_LINKER_FLAGS "-static-libgcc -static-libstdc++")
endif()
endif()

if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Werror")
message(STATUS "added flag -std=c++11, -Wall, -Werror to g++")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -fvisibility-inlines-hidden")
message(WARNING "clang support is currently experimental")

set(CLANG_STATIC_LINKER_FLAGS "-stdlib=libc++ -static-libstdc++")
endif()
get_latest_supported_cxx(CXX_STANDARD)
set(MAX_CXX_STANDARD ${CXX_STANDARD})

if(MSVC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj /WX")
replaceCompilerOption("/W3" "/W4")
message(STATUS "added flag /bigobj, /W4 to MSVC compiler")
message(STATUS "Treats all compiler warnings as errors.")
if (${CXX_STANDARD} EQUAL 17 AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "19.12.25835.0")
set(MAX_CXX_STANDARD 14) # downgrade, because RTTR does not compile with this flag (template error)
endif()
endif()

message(STATUS "using C++: ${MAX_CXX_STANDARD}")

# RelWithDepInfo should have the same option like the Release build
# but of course with Debug informations
if(MSVC)
Expand All @@ -163,6 +139,25 @@ else()
message(WARNING "Please adjust CMAKE_CXX_FLAGS_RELWITHDEBINFO flags for this compiler!")
endif()

if(MSVC)
# we have to remove the default warning level,
# otherwise we get ugly compiler warnings, because of later replacing
# option /W3 with /W4 (which will be later added)
replace_compiler_option("/W3" " ")
if (BUILD_WITH_STATIC_RUNTIME_LIBS)
replace_compiler_option("/MD" " ")
endif()

elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
if(MINGW)
set(GNU_STATIC_LINKER_FLAGS "-static-libgcc -static-libstdc++ -static")
else()
set(GNU_STATIC_LINKER_FLAGS "-static-libgcc -static-libstdc++")
endif()
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
set(CLANG_STATIC_LINKER_FLAGS "-stdlib=libc++ -static-libstdc++")
endif()

include(CMakePackageConfigHelpers)
write_basic_package_version_file(
"${CMAKE_CURRENT_BINARY_DIR}/CMake/rttr-config-version.cmake"
Expand Down
Loading