Skip to content

Commit 16109e3

Browse files
author
Lionel Untereiner
authored
Merge pull request #361 from cgogn/develop
Develop
2 parents 1f4f499 + 3661cd0 commit 16109e3

File tree

1,090 files changed

+11705
-331068
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,090 files changed

+11705
-331068
lines changed

.travis.yml

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
language: cpp
2+
3+
matrix:
4+
include:
5+
- os: linux
6+
sudo: required
7+
dist: trusty
8+
- os: osx
9+
osx_image: xcode10
10+
11+
addons:
12+
apt:
13+
sources:
14+
- ubuntu-toolchain-r-test
15+
- sourceline: "ppa:beineri/opt-qt58-trusty"
16+
- sourceline: "ppa:corentinjabot/cmake-backport" #cmake 3.7.2
17+
# for cmake 3.12 use ppa:dluxen/cmake-backports
18+
- sourceline: "ppa:nschloe/eigen-backports" #eigen 3.3.2
19+
packages:
20+
- gcc-5
21+
- g++-5
22+
- libglu1-mesa-dev
23+
- qt58base
24+
- cmake
25+
- libeigen3-dev
26+
- libtinyxml2-dev/trusty-backports
27+
homebrew:
28+
packages:
29+
- qt5
30+
- eigen
31+
- tinyxml2
32+
33+
script:
34+
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
35+
source /opt/qt58/bin/qt58-env.sh ;
36+
fi
37+
38+
branches:
39+
only:
40+
- develop
41+
42+
script:
43+
- mkdir build
44+
- cd build
45+
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
46+
cmake ..
47+
-DCMAKE_CXX_COMPILER=g++-5
48+
-DCMAKE_C_COMPILER=gcc-5
49+
-DCGOGN_BUILD_TESTS:BOOL=ON
50+
-DCGOGN_BUILD_EXAMPLES:BOOL=ON ;
51+
fi
52+
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
53+
cmake ..
54+
-DCMAKE_PREFIX_PATH:PATH=$(brew --prefix qt)
55+
-DCGOGN_BUILD_TESTS:BOOL=ON
56+
-DCGOGN_BUILD_EXAMPLES:BOOL=ON ;
57+
fi
58+
- make -j2
59+
- make test
60+
- sudo make install

CMakeLists.txt

Lines changed: 55 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
1+
cmake_minimum_required(VERSION 3.7.2 FATAL_ERROR)
22

33
set(CGOGN_VERSION_MAJOR 2)
44
set(CGOGN_VERSION_MINOR 0)
@@ -7,41 +7,49 @@ set(CGOGN_VERSION_PATCH 0)
77
project(CGoGN
88
VERSION ${CGOGN_VERSION_MAJOR}.${CGOGN_VERSION_MINOR}.${CGOGN_VERSION_PATCH}
99
LANGUAGES CXX C
10-
)
10+
)
1111

1212
foreach(p
13-
CMP0048 # version
14-
CMP0054 # CMake 3.1
15-
)
16-
if(POLICY ${p})
17-
cmake_policy(SET ${p} NEW)
18-
endif()
13+
CMP0048 # version
14+
CMP0054 # CMake 3.1
15+
)
16+
if(POLICY ${p})
17+
cmake_policy(SET ${p} NEW)
18+
endif()
1919
endforeach()
2020

21-
enable_testing()
22-
2321
#### Default build type
2422
if(NOT CMAKE_BUILD_TYPE)
2523
set(CMAKE_BUILD_TYPE "Release")
2624
endif()
2725

2826
#### CGoGN PATH
29-
set(CGOGN_PATH "${CMAKE_CURRENT_SOURCE_DIR}")
27+
set(CGOGN_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
3028

3129
#### Here are located the FindPackages that we need
3230
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules")
3331
list(APPEND CMAKE_PREFIX_PATH "${CMAKE_BINARY_DIR}")
3432

3533
#### Compile Options
36-
include(cmake/CompilerOptions.cmake)
34+
include(GNUInstallDirs)
35+
36+
include(cmake/utilities.cmake)
37+
include(cmake/CheckSIMDFeatures.cmake)
3738
include(cmake/GenerateCppcheck.cmake)
3839
include(cmake/EnableCoverageReport.cmake)
3940

40-
#### Build configuration
41-
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
42-
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
43-
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
44-
set(CGOGN_SOURCE_DIR ${CGOGN_PATH})
41+
if(NOT CMAKE_RUNTIME_OUTPUT_DIRECTORY)
42+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY
43+
${CMAKE_CURRENT_BINARY_DIR}/stage/${CMAKE_INSTALL_BINDIR})
44+
endif()
45+
if(NOT CMAKE_LIBRARY_OUTPUT_DIRECTORY)
46+
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY
47+
${CMAKE_CURRENT_BINARY_DIR}/stage/${CMAKE_INSTALL_LIBDIR})
48+
endif()
49+
if(NOT CMAKE_ARCHIVE_OUTPUT_DIRECTORY)
50+
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY
51+
${CMAKE_CURRENT_BINARY_DIR}/stage/${CMAKE_INSTALL_LIBDIR})
52+
endif()
4553

4654
### External Templates
4755
option(CGOGN_EXTERNAL_TEMPLATES "Use external templates to reduce compile time" OFF)
@@ -52,13 +60,19 @@ if (NOT MSVC)
5260
set_property(CACHE CGOGN_CPP_STD PROPERTY STRINGS "11" "14" "17") # drop down list with cmake-gui
5361
endif(NOT MSVC)
5462

63+
64+
if (CGOGN_CPP_STD STREQUAL "11")
65+
set(CMAKE_CXX_STANDARD 11)
66+
elseif(CGOGN_CPP_STD STREQUAL "14")
67+
set(CMAKE_CXX_STANDARD 14)
68+
else(CGOGN_CPP_STD STREQUAL "11")
69+
set(CMAKE_CXX_STANDARD 17)
70+
endif(CGOGN_CPP_STD STREQUAL "11")
71+
5572
#### ThirdParty options
56-
set(CGOGN_THIRDPARTY_DIR ${CGOGN_PATH}/thirdparty)
57-
option(CGOGN_PROVIDE_EIGEN "Use the version of eigen that is packaged with CGoGN." ON)
58-
option(CGOGN_PROVIDE_TINYXML2 "Use the version of tinyxml2 that is packaged with CGoGN." ON)
73+
set(CGOGN_THIRDPARTY_DIR ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty)
5974
option(CGOGN_BUILD_TESTS "Build cgogn unit tests using google test framework." OFF)
6075
option(CGOGN_BUILD_EXAMPLES "Build some example apps." OFF)
61-
option(CGOGN_BUILD_BENCHS "Build the benchmarks using google benchmark framework." OFF)
6276
option(CGOGN_USE_OPENMP "Activate openMP directives." OFF)
6377
option(CGOGN_USE_SIMD "Enable SIMD instructions (sse,avx...)" ON)
6478
option(CGOGN_ENABLE_LTO "Enable link-time optimizations (only with gcc)" ON)
@@ -68,7 +82,7 @@ if (NOT MSVC)
6882
option(CGOGN_USE_GLIBCXX_DEBUG_PEDANTIC "Use an extremely picky debug version of STL." OFF)
6983
option(CGOGN_USE_PARALLEL_GLIBCXX "Highly experimental : compiles using the parallel mode." OFF)
7084
if (${CGOGN_USE_GLIBCXX_DEBUG_PEDANTIC})
71-
set(CGOGN_USE_GLIBCXX_DEBUG "ON")
85+
set(CGOGN_USE_GLIBCXX_DEBUG "ON")
7286
endif(${CGOGN_USE_GLIBCXX_DEBUG_PEDANTIC})
7387
option(CGOGN_USE_CXX11_ABI "use the CXX11 ABI." ON)
7488
endif(NOT MSVC)
@@ -102,7 +116,7 @@ if(UNIX)
102116
set(CMAKE_INSTALL_RPATH "../lib:../../lib")
103117

104118
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
105-
set(CMAKE_MACOSX_RPATH ON)
119+
set(CMAKE_MACOSX_RPATH ON)
106120
endif()
107121
endif(UNIX)
108122

@@ -111,21 +125,12 @@ deduce_build_type()
111125

112126
if(${CGOGN_USE_OPENMP})
113127
find_package(OpenMP)
114-
if(${OPENMP_FOUND})
115-
add_flags(CMAKE_C_FLAGS ${OpenMP_C_FLAGS})
116-
add_flags(CMAKE_CXX_FLAGS ${OpenMP_CXX_FLAGS})
117-
else()
118-
if ((${CMAKE_CXX_COMPILER_ID} MATCHES "Clang") AND (NOT (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "3.7")))
119-
add_flags(CMAKE_C_FLAGS "-fopenmp")
120-
add_flags(CMAKE_CXX_FLAGS "-fopenmp")
121-
endif()
122-
endif()
123128
endif()
124129

125130
if(CGOGN_BUILD_TESTS)
126131
if(NOT gtest_inited)
127-
set(gtest_inited ON CACHE INTERNAL "" FORCE)
128-
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
132+
set(gtest_inited ON CACHE INTERNAL "" FORCE)
133+
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
129134
endif()
130135
endif(CGOGN_BUILD_TESTS)
131136

@@ -135,27 +140,37 @@ test_big_endian(CGOGN_TEST_BIG_ENDIAN)
135140

136141
#### Link time optimisation
137142
if (CGOGN_ENABLE_LTO AND ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU") AND (NOT "${CMAKE_BUILD_TYPE}" STREQUAL "Debug"))
138-
add_flags(CMAKE_CXX_FLAGS_RELEASE -flto)
139143
find_program(GCC_AR gcc-ar)
140144
if (GCC_AR)
141-
set(CMAKE_AR ${GCC_AR})
145+
set(CMAKE_AR ${GCC_AR})
142146
endif()
143147
find_program(GCC_RANLIB gcc-ranlib)
144148
if (GCC_RANLIB)
145-
set(CMAKE_RANLIB ${GCC_RANLIB})
149+
set(CMAKE_RANLIB ${GCC_RANLIB})
146150
endif()
147151
endif()
148152

149153
include(GenerateExportHeader)
150154
include(CMakePackageConfigHelpers)
151-
152155
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
153156

154157

155-
subdirlist(CGOGN_CONFIGURED_MODULES ${CGOGN_SOURCE_DIR}/cgogn)
158+
if(CGOGN_BUILD_TESTS)
159+
include(cmake/googletest.cmake)
160+
fetch_googletest(
161+
${PROJECT_SOURCE_DIR}/cmake
162+
${PROJECT_BINARY_DIR}/googletest
163+
)
164+
enable_testing()
165+
endif()
166+
167+
168+
set(CGOGN_SYSTEM_MODULE_PATH ${CGOGN_SOURCE_DIR}/cgogn)
156169

157170
add_subdirectory(${CGOGN_THIRDPARTY_DIR})
158171

172+
cgogn_list_subdirectory(CGOGN_CONFIGURED_MODULES ${CGOGN_SYSTEM_MODULE_PATH})
173+
159174
foreach(subdir ${CGOGN_CONFIGURED_MODULES})
160175
option( CGOGN_MODULE_${subdir} "Enable CGOGN component ${subdir}" ON)
161176
if(CGOGN_MODULE_${subdir})
@@ -184,21 +199,4 @@ foreach(subdir ${CGOGN_CONFIGURED_MODULES})
184199
endif()
185200
endforeach()
186201

187-
if(${CGOGN_BUILD_BENCHS})
188-
add_subdirectory(benchmarks)
189-
endif(${CGOGN_BUILD_BENCHS})
190-
191-
192-
## TODO a mettre dans un fichier cmake particulier
193-
194-
# --- coverage ---
195-
ENABLE_COVERAGE_REPORT(TARGETS ${CGOGN_SOURCE_DIR})
196-
197-
# --- CPPCheck ---
198-
GENERATE_CPPCHECK( SOURCES ${CGOGN_SOURCE_DIR}
199-
ENABLE_IDS all
200-
INCLUDES ${CGOGN_SOURCE_DIR}
201-
PLATFORM_FLAGS "-UNDEBUG -UWIN32 -U__func__ -U__FUNCTION__ -U__GNUG__ -U__clang__ -U_MSC_VER"
202-
SYSTEM_INCLUDE_WARNING_SUPPRESSION
203-
INLINE_SUPPRESSION
204-
HTML_REPORT)
202+
unset(CGOGN_SYSTEM_MODULE_PATH)

appveyor.yml

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
#---------------------------------#
2+
# general configuration #
3+
#---------------------------------#
4+
5+
# version format
6+
version: 1.0.{build}
7+
8+
branches:
9+
only:
10+
- develop
11+
- test_attributes
12+
13+
skip_commits:
14+
message: /\[skip ci\]|\[ci skip\]|\[skip appveyor\]|\[ci appveyor\]/
15+
files:
16+
- .travis*
17+
- data/
18+
- '*.md'
19+
20+
clone_folder: c:\projects\myproject
21+
22+
# fetch repository as zip archive
23+
shallow_clone: true
24+
25+
image:
26+
- Visual Studio 2015
27+
- Visual Studio 2017
28+
29+
configuration:
30+
- Release
31+
- Debug
32+
33+
environment:
34+
CMAKE_TOOLCHAIN_FILE: -DCMAKE_TOOLCHAIN_FILE="C:\tools\vcpkg\scripts\buildsystems\vcpkg.cmake"
35+
matrix:
36+
- arch: x64
37+
38+
build:
39+
parallel: true
40+
verbosity: minimal
41+
42+
# skip unsupported combinations
43+
init:
44+
- echo %arch%
45+
- echo %APPVEYOR_BUILD_WORKER_IMAGE%
46+
- if "%arch%"=="x64" (set TARGET_PLATFORM= Win64)
47+
- if "%APPVEYOR_BUILD_WORKER_IMAGE%"=="Visual Studio 2017" (set GENERATOR="Visual Studio 15 2017%TARGET_PLATFORM%" && set QT_DIR="C:\Qt\5.10.1\msvc2017_64\lib\cmake\Qt5")
48+
- if "%APPVEYOR_BUILD_WORKER_IMAGE%"=="Visual Studio 2015" (set GENERATOR="Visual Studio 14 2015%TARGET_PLATFORM%" && set QT_DIR="C:\Qt\5.10.1\msvc2015_64\lib\cmake\Qt5")
49+
- if "%APPVEYOR_BUILD_WORKER_IMAGE%"=="Visual Studio 2013" (set GENERATOR="Visual Studio 12 2013%TARGET_PLATFORM%" && set QT_DIR="C:\Qt\5.8\msvc2013_64\lib\cmake\Qt5")
50+
- echo %GENERATOR%
51+
- echo %QT_DIR%
52+
53+
install:
54+
- vcpkg remove --outdated --recurse
55+
- vcpkg install --recurse
56+
zlib
57+
eigen3
58+
tinyxml2
59+
--triplet %arch%-windows
60+
61+
build_script:
62+
- md build
63+
- cd build
64+
- cmake --version
65+
- cmake -Wno-dev -Wno-deprecated -G %GENERATOR% .. -DCMAKE_SUPPRESS_REGENERATION=1 %CMAKE_TOOLCHAIN_FILE% -DQt5_DIR=%QT_DIR% -DCGOGN_BUILD_TESTS=ON -DCGOGN_BUILD_EXAMPLES=ON
66+
- cmake --build . --config "%CONFIGURATION%" -- /verbosity:minimal
67+
- cmake --build . --config "%CONFIGURATION%" --target RUN_TESTS -- /verbosity:minimal
68+
- cmake --build . --config "%CONFIGURATION%" --target INSTALL -- /verbosity:minimal

benchmarks/CMakeLists.txt

Lines changed: 0 additions & 9 deletions
This file was deleted.

benchmarks/attributes/CMakeLists.txt

Lines changed: 0 additions & 16 deletions
This file was deleted.

0 commit comments

Comments
 (0)