Skip to content

Commit 2a42843

Browse files
committed
Impose GNU standard installation directories and maintenance for Travis CI
1. Recovers work done by @loriab to impose GNU standard installation directories as described [here](http://www.gnu.org/prep/standards/html_node/Directory-Variables.html) 2. The GNU C++ extended diagnostic flags are always enabled in debug mode for GCC >= 4.9.0 3. Maintenance of Travis CI builds. In particular, use a Python virtualenv to install the Python dependencies of the build.
1 parent 9397026 commit 2a42843

28 files changed

+103
-110
lines changed

.travis.yml

Lines changed: 15 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ env:
1313
- CCACHE_COMPRESS=1
1414
- CCACHE_MAXSIZE=200M
1515
- CCACHE_CPP2=1
16-
- PYTHON_PACKAGES="pip pep8 cpp-coveralls"
1716
matrix:
1817
include:
1918
- os: linux
@@ -31,13 +30,9 @@ matrix:
3130
- clang-3.5
3231
- libboost1.55-all-dev
3332
- gfortran
33+
- python-virtualenv
3434
env: CXX_COMPILER='clang++-3.5' C_COMPILER='clang-3.5' Fortran_COMPILER='gfortran'
3535
BUILD_TYPE='release'
36-
- os: linux
37-
compiler: clang
38-
addons: *1
39-
env: CXX_COMPILER='clang++-3.5' C_COMPILER='clang-3.5' Fortran_COMPILER='gfortran'
40-
BUILD_TYPE='debug'
4136
- os: linux
4237
compiler: clang
4338
addons: &2
@@ -53,13 +48,9 @@ matrix:
5348
- clang-3.6
5449
- libboost1.55-all-dev
5550
- gfortran
51+
- python-virtualenv
5652
env: CXX_COMPILER='clang++-3.6' C_COMPILER='clang-3.6' Fortran_COMPILER='gfortran'
5753
BUILD_TYPE='release'
58-
- os: linux
59-
compiler: clang
60-
addons: *2
61-
env: CXX_COMPILER='clang++-3.6' C_COMPILER='clang-3.6' Fortran_COMPILER='gfortran'
62-
BUILD_TYPE='debug'
6354
- os: linux
6455
compiler: clang
6556
addons: &3
@@ -75,13 +66,9 @@ matrix:
7566
- clang-3.7
7667
- libboost1.55-all-dev
7768
- gfortran
69+
- python-virtualenv
7870
env: CXX_COMPILER='clang++-3.7' C_COMPILER='clang-3.7' Fortran_COMPILER='gfortran'
7971
BUILD_TYPE='release'
80-
- os: linux
81-
compiler: clang
82-
addons: *3
83-
env: CXX_COMPILER='clang++-3.7' C_COMPILER='clang-3.7' Fortran_COMPILER='gfortran'
84-
BUILD_TYPE='debug'
8572
- os: linux
8673
compiler: clang
8774
addons: &4
@@ -97,13 +84,9 @@ matrix:
9784
- clang-3.8
9885
- libboost1.55-all-dev
9986
- gfortran
87+
- python-virtualenv
10088
env: CXX_COMPILER='clang++-3.8' C_COMPILER='clang-3.8' Fortran_COMPILER='gfortran'
10189
BUILD_TYPE='release'
102-
- os: linux
103-
compiler: clang
104-
addons: *4
105-
env: CXX_COMPILER='clang++-3.8' C_COMPILER='clang-3.8' Fortran_COMPILER='gfortran'
106-
BUILD_TYPE='debug'
10790
- os: linux
10891
compiler: gcc
10992
addons: &5
@@ -119,13 +102,9 @@ matrix:
119102
- gcc-4.6
120103
- libboost1.55-all-dev
121104
- gfortran-4.6
105+
- python-virtualenv
122106
env: CXX_COMPILER='g++-4.6' C_COMPILER='gcc-4.6' Fortran_COMPILER='gfortran-4.6'
123107
BUILD_TYPE='release'
124-
- os: linux
125-
compiler: gcc
126-
addons: *5
127-
env: CXX_COMPILER='g++-4.6' C_COMPILER='gcc-4.6' Fortran_COMPILER='gfortran-4.6'
128-
BUILD_TYPE='debug'
129108
- os: linux
130109
compiler: gcc
131110
addons: &6
@@ -141,13 +120,9 @@ matrix:
141120
- gcc-4.7
142121
- libboost1.55-all-dev
143122
- gfortran-4.7
123+
- python-virtualenv
144124
env: CXX_COMPILER='g++-4.7' C_COMPILER='gcc-4.7' Fortran_COMPILER='gfortran-4.7'
145125
BUILD_TYPE='release'
146-
- os: linux
147-
compiler: gcc
148-
addons: *6
149-
env: CXX_COMPILER='g++-4.7' C_COMPILER='gcc-4.7' Fortran_COMPILER='gfortran-4.7'
150-
BUILD_TYPE='debug'
151126
- os: linux
152127
compiler: gcc
153128
addons: &7
@@ -163,13 +138,9 @@ matrix:
163138
- gcc-4.8
164139
- libboost1.55-all-dev
165140
- gfortran-4.8
141+
- python-virtualenv
166142
env: CXX_COMPILER='g++-4.8' C_COMPILER='gcc-4.8' Fortran_COMPILER='gfortran-4.8'
167143
BUILD_TYPE='release'
168-
- os: linux
169-
compiler: gcc
170-
addons: *7
171-
env: CXX_COMPILER='g++-4.8' C_COMPILER='gcc-4.8' Fortran_COMPILER='gfortran-4.8'
172-
BUILD_TYPE='debug'
173144
- os: linux
174145
compiler: gcc
175146
addons: &8
@@ -185,13 +156,9 @@ matrix:
185156
- gcc-4.9
186157
- libboost1.55-all-dev
187158
- gfortran-4.9
159+
- python-virtualenv
188160
env: CXX_COMPILER='g++-4.9' C_COMPILER='gcc-4.9' Fortran_COMPILER='gfortran-4.9'
189161
BUILD_TYPE='release'
190-
- os: linux
191-
compiler: gcc
192-
addons: *8
193-
env: CXX_COMPILER='g++-4.9' C_COMPILER='gcc-4.9' Fortran_COMPILER='gfortran-4.9'
194-
BUILD_TYPE='debug'
195162
- os: linux
196163
compiler: gcc
197164
addons: &9
@@ -207,42 +174,29 @@ matrix:
207174
- gcc-5
208175
- libboost1.55-all-dev
209176
- gfortran-5
177+
- python-virtualenv
210178
env: CXX_COMPILER='g++-5' C_COMPILER='gcc-5' Fortran_COMPILER='gfortran-5' BUILD_TYPE='release'
211-
- os: linux
212-
compiler: gcc
213-
addons: *9
214-
env: CXX_COMPILER='g++-5' C_COMPILER='gcc-5' Fortran_COMPILER='gfortran-5' BUILD_TYPE='debug'
215-
- os: osx
216-
osx_image: xcode7
217-
compiler: clang
218-
env: CXX_COMPILER='clang++' C_COMPILER='clang' Fortran_COMPILER='gfortran' BUILD_TYPE='debug'
219179
- os: osx
220180
osx_image: xcode7
221181
compiler: clang
222182
env: CXX_COMPILER='clang++' C_COMPILER='clang' Fortran_COMPILER='gfortran' BUILD_TYPE='release'
223-
- os: osx
224-
osx_image: xcode7
225-
compiler: gcc
226-
env: CXX_COMPILER='g++-5' C_COMPILER='gcc-5' Fortran_COMPILER='gfortran' BUILD_TYPE='debug'
227183
- os: osx
228184
osx_image: xcode7
229185
compiler: gcc
230186
env: CXX_COMPILER='g++-5' C_COMPILER='gcc-5' Fortran_COMPILER='gfortran' BUILD_TYPE='release'
231187
- os: linux
232188
compiler: gcc
233189
addons: *9
234-
env: CXX_COMPILER='g++-5' C_COMPILER='gcc-5' Fortran_COMPILER='gfortran-5' BUILD_TYPE='debug'
190+
env: CXX_COMPILER='g++-5' C_COMPILER='gcc-5' Fortran_COMPILER='gfortran-5' BUILD_TYPE='release'
235191
COVERAGE=true
236192
install:
237-
- DEPS_DIR="${TRAVIS_BUILD_DIR}/deps"
238-
- mkdir -p ${DEPS_DIR} && cd ${DEPS_DIR}
239193
- |
240-
if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then
241-
pip install --upgrade ${PYTHON_PACKAGES} --user `whoami`
242-
elif [[ "${TRAVIS_OS_NAME}" == "osx" ]]; then
243-
brew install cmake boost python gcc
244-
pip install --upgrade ${PYTHON_PACKAGES}
194+
if [[ "${TRAVIS_OS_NAME}" == "osx" ]]; then
195+
brew install cmake boost python gcc pyenv-virtualenv
245196
fi
197+
virtualenv venv
198+
source venv/bin/activate
199+
pip install --upgrade -r .travis_requirements.txt
246200
before_script:
247201
- cd ${TRAVIS_BUILD_DIR}
248202
- export CXX=${CXX_COMPILER}

.travis_requirements.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
pep8
2+
cpp-coveralls
3+
pyyaml

CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ include(Fortran_C)
2828
include(CXXFlags)
2929
include(CFlags)
3030
include(FortranFlags)
31+
include(GNUdirs)
3132
include(autocmake_ccache)
3233
include(rpath)
3334
include(windows)
@@ -48,6 +49,7 @@ include(libtaylor)
4849
include(zlib)
4950
include(autogenerated)
5051
include(documentation)
52+
include(export)
5153
include(api)
5254
include(autocmake_src)
5355
include(test)

cmake/autocmake.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ modules:
1717
- 'custom/compilers/FortranFlags.cmake'
1818
- plugins:
1919
- source:
20+
- 'custom/GNUdirs.cmake'
2021
- '%(url_root)modules/ccache.cmake'
2122
- 'custom/rpath.cmake'
2223
- 'custom/windows.cmake'
@@ -43,6 +44,7 @@ modules:
4344
- 'custom/zlib.cmake'
4445
- 'custom/autogenerated.cmake'
4546
- 'custom/documentation.cmake'
47+
- 'custom/export.cmake'
4648
- 'custom/api.cmake'
4749
- src:
4850
- source: '%(url_root)modules/src.cmake'

cmake/custom/GNUdirs.cmake

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#.rst:
2+
#
3+
# Enables manipulation of install directories.
4+
#
5+
# Variables modified::
6+
#
7+
# CMAKE_INSTALL_BINDIR
8+
# CMAKE_INSTALL_LIBDIR
9+
# CMAKE_INSTALL_INCLUDEDIR
10+
# CMAKE_INSTALL_DATADIR
11+
#
12+
# autocmake.yml configuration::
13+
#
14+
# ?
15+
16+
if("${${CMAKE_INSTALL_LIBDIR}}" STREQUAL "" OR NOT DEFINED ${CMAKE_INSTALL_LIBDIR})
17+
set(${CMAKE_INSTALL_LIBDIR} lib CACHE STRING "Directory to which libraries are installed" FORCE)
18+
endif()
19+
20+
include(GNUInstallDirs)

cmake/custom/api.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
include_directories(${PROJECT_SOURCE_DIR}/api)
22

3-
install(FILES ${PROJECT_SOURCE_DIR}/api/pcmsolver.h DESTINATION include)
4-
install(FILES ${PROJECT_SOURCE_DIR}/api/PCMInput.h DESTINATION include)
3+
install(FILES ${PROJECT_SOURCE_DIR}/api/pcmsolver.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME})
4+
install(FILES ${PROJECT_SOURCE_DIR}/api/PCMInput.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME})
55

66
if(ENABLE_FORTRAN_API)
77
add_definitions(-DENABLE_FORTRAN_API)

cmake/custom/autogenerated.cmake

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,34 +14,37 @@ add_custom_target(generate-config-hpp ALL DEPENDS ${PROJECT_BINARY_DIR}/include/
1414
if(BUILD_CUSTOM_BOOST)
1515
add_dependencies(generate-config-hpp custom_boost)
1616
endif()
17-
install(FILES ${PROJECT_BINARY_DIR}/include/Config.hpp DESTINATION include)
17+
install(FILES ${PROJECT_BINARY_DIR}/include/Config.hpp DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME})
1818

1919
generate_git_info_header(${PROJECT_BINARY_DIR}/include GitInfo.hpp)
20+
install(FILES ${PROJECT_BINARY_DIR}/include/GitInfo.hpp DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME})
2021

2122
# Configure the input parsing script
2223
configure_file(${PROJECT_SOURCE_DIR}/tools/pcmsolver.py.in ${PROJECT_BINARY_DIR}/bin/tmp-pcmsolver-py @ONLY)
2324
add_custom_command(
2425
DEPENDS ${PROJECT_SOURCE_DIR}/tools/pcmsolver.py.in
2526
OUTPUT
26-
${PROJECT_BINARY_DIR}/bin/pcmsolver.py
27+
${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}/pcmsolver.py
2728
COMMAND
28-
cmake -E copy ${PROJECT_BINARY_DIR}/bin/tmp-pcmsolver-py ${PROJECT_BINARY_DIR}/bin/pcmsolver.py
29+
cmake -E copy ${PROJECT_BINARY_DIR}/bin/tmp-pcmsolver-py ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}/pcmsolver.py
2930
VERBATIM
3031
)
31-
add_custom_target(generate-pcmsolver-py ALL DEPENDS ${PROJECT_BINARY_DIR}/bin/pcmsolver.py)
32-
install(FILES ${PROJECT_BINARY_DIR}/bin/pcmsolver.py DESTINATION bin)
32+
add_custom_target(generate-pcmsolver-py ALL DEPENDS ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}/pcmsolver.py)
33+
install(FILES ${PROJECT_BINARY_DIR}/bin/pcmsolver.py DESTINATION ${CMAKE_INSTALL_BINDIR})
3334
# Configure the codata Python module
34-
configure_file(${PROJECT_SOURCE_DIR}/tools/codata.py.in ${PROJECT_BINARY_DIR}/bin/codata.py @ONLY)
35-
install(FILES ${PROJECT_BINARY_DIR}/bin/codata.py DESTINATION bin)
35+
configure_file(${PROJECT_SOURCE_DIR}/tools/codata.py.in ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}/codata.py @ONLY)
36+
install(FILES ${PROJECT_BINARY_DIR}/bin/codata.py DESTINATION ${CMAKE_INSTALL_BINDIR})
3637

3738
# Install GetKw Python bindings
3839
file(COPY ${PROJECT_SOURCE_DIR}/tools/getkw.py
3940
${PROJECT_SOURCE_DIR}/tools/pyparsing.py
40-
DESTINATION bin)
41+
DESTINATION ${CMAKE_INSTALL_BINDIR})
4142
install(FILES ${PROJECT_SOURCE_DIR}/tools/getkw.py
4243
${PROJECT_SOURCE_DIR}/tools/pyparsing.py
43-
DESTINATION bin)
44+
DESTINATION ${CMAKE_INSTALL_BINDIR})
4445

4546
# Install docopt.py in the bin subdirectory
46-
file(COPY ${PROJECT_SOURCE_DIR}/cmake/lib/docopt/docopt.py DESTINATION ${PROJECT_BINARY_DIR}/bin)
47-
install(FILES ${PROJECT_SOURCE_DIR}/cmake/lib/docopt/docopt.py DESTINATION bin)
47+
file(COPY ${PROJECT_SOURCE_DIR}/cmake/lib/docopt/docopt.py
48+
DESTINATION ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR})
49+
install(FILES ${PROJECT_SOURCE_DIR}/cmake/lib/docopt/docopt.py
50+
DESTINATION ${CMAKE_INSTALL_BINDIR})

cmake/custom/catch.cmake

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
1-
install(DIRECTORY ${PROJECT_SOURCE_DIR}/external/Catch DESTINATION ${PROJECT_BINARY_DIR}/external/include)
21
include_directories(SYSTEM ${PROJECT_SOURCE_DIR}/external/Catch)

cmake/custom/compilers/Fortran_C.cmake

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,9 @@ FortranCInterface_VERIFY(CXX)
2323
# Generates with name-mangling helper macros and post-process it to add the copyright notice
2424
FortranCInterface_HEADER(${PROJECT_BINARY_DIR}/include/FCMangle.hpp)
2525
file(STRINGS ${PROJECT_BINARY_DIR}/include/FCMangle.hpp contents NEWLINE_CONSUME)
26-
file(WRITE ${PROJECT_BINARY_DIR}/include/FCMangle.hpp
27-
"/* pcmsolver_copyright_start */\n/* pcmsolver_copyright_end */\n\n")
2826
file(APPEND ${PROJECT_BINARY_DIR}/include/FCMangle.hpp "// Header file automagically generated by CMake. DO NOT TOUCH!\n")
2927
file(APPEND ${PROJECT_BINARY_DIR}/include/FCMangle.hpp ${contents})
30-
install(FILES ${PROJECT_BINARY_DIR}/include/FCMangle.hpp DESTINATION include)
28+
install(FILES ${PROJECT_BINARY_DIR}/include/FCMangle.hpp DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME})
3129

3230
if(BROKEN_MACOSX)
3331
set(CMAKE_C_FLAGS ${CMAKE_C_FLAGS_HOLD})

cmake/custom/compilers/GNU.CXX.cmake

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ if(NOT DEFINED ENV{CXXFLAGS})
1515

1616
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX_STANDARD_FLAG}")
1717
set(EXDIAG_CXX_FLAGS -Wsuggest-attribute=pure -Wsuggest-attribute=const -Wsuggest-attribute=noreturn -Wsuggest-final-types -Wsuggest-final-methods -Wsuggest-override -Wuseless-cast -Wunsafe-loop-optimizations)
18+
if(CXX_COMPILER_VERSION VERSION_LESS 4.9.0)
19+
message(STATUS "Old GNU C++ compiler. Turning off extended diagnostic flags.")
20+
set(EXDIAG_CXX_FLAGS)
21+
endif()
1822
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3 -DDEBUG -Wall -Wextra -Winit-self -Woverloaded-virtual -Wuninitialized -Wmissing-declarations -Wwrite-strings -Wno-sign-compare")
1923
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG -Wno-unused")
2024
endif()

0 commit comments

Comments
 (0)