Skip to content

Commit be8c14f

Browse files
authored
Merge pull request #161 from OpenMS/execute_process_replace
Execute process replace
2 parents e54dffd + bbe4c8e commit be8c14f

File tree

14 files changed

+169
-90
lines changed

14 files changed

+169
-90
lines changed

CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,15 +126,15 @@ if (NOT DEFINED CMAKE_C_COMPILER)
126126
endif()
127127
endif()
128128

129-
PROJECT("OpenMS_CONTRIB")
130-
131129
# Heart of the BUILD system : only edit when you know what you are doing (we don't)
132130
# quick manual for most commands: https://cmake.org/cmake/help/v3.3/manual/cmake-commands.7.html
133131
# useful predefined variables: http://www.paraview.org/Wiki/CMake_Useful_Variables
134132

135133
# force cmake > 3.10 to force enable c++20 support
136134
cmake_minimum_required(VERSION 3.10.0 FATAL_ERROR)
137135

136+
PROJECT("OpenMS_CONTRIB")
137+
138138
SET(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
139139

140140
# Set C++ version (does only work if we had a target-based CMake script)

libraries.cmake/arrow.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ MACRO( OPENMS_CONTRIB_BUILD_ARROW )
66
OPENMS_LOGHEADER_LIBRARY("arrow")
77
#extract: (takes very long.. so skip if possible)
88
if(MSVC)
9-
set(ZIP_ARGS "x -y -osrc")
9+
set(ZIP_ARGS x -y -osrc)
1010
else()
11-
set(ZIP_ARGS "xzf")
11+
set(ZIP_ARGS xzf)
1212
endif()
1313
OPENMS_SMARTEXTRACT(ZIP_ARGS ARCHIVE_ARROW "ARROW" "README")
1414

libraries.cmake/boost.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ MACRO( OPENMS_CONTRIB_BUILD_BOOST)
1212

1313
## extract boost library
1414
if(MSVC)
15-
set(ZIP_ARGS "x -y -osrc")
15+
set(ZIP_ARGS x -y -osrc)
1616
else()
17-
set(ZIP_ARGS "xzf")
17+
set(ZIP_ARGS xzf)
1818
endif()
1919
OPENMS_SMARTEXTRACT(ZIP_ARGS ARCHIVE_BOOST "BOOST" "index.htm")
2020

libraries.cmake/bzip2.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ MACRO( OPENMS_CONTRIB_BUILD_BZIP2 )
66
OPENMS_LOGHEADER_LIBRARY("bzip2")
77

88
if(MSVC)
9-
set(ZIP_ARGS "x -y -osrc")
9+
set(ZIP_ARGS x -y -osrc)
1010
else()
11-
set(ZIP_ARGS "xzf")
11+
set(ZIP_ARGS xzf)
1212
endif()
1313
OPENMS_SMARTEXTRACT(ZIP_ARGS ARCHIVE_BZIP2 "bzip2" "README")
1414

libraries.cmake/coinor.cmake

Lines changed: 70 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ MACRO( OPENMS_CONTRIB_BUILD_COINOR)
88
OPENMS_LOGHEADER_LIBRARY("COINOR")
99
## extract: (takes very long.. so skip if possible)
1010
if(MSVC)
11-
set(ZIP_ARGS "x -y -osrc")
11+
set(ZIP_ARGS x -y -osrc)
1212
else()
13-
set(ZIP_ARGS "xzf")
13+
set(ZIP_ARGS xzf)
1414
endif()
1515
OPENMS_SMARTEXTRACT(ZIP_ARGS ARCHIVE_COINOR "COINOR" "AUTHORS")
1616

@@ -131,9 +131,15 @@ MACRO( OPENMS_CONTRIB_BUILD_COINOR)
131131

132132
# configure --
133133
if( ${CMAKE_SYSTEM_NAME} MATCHES "Darwin" )
134-
set(COINOR_EXTRA_FLAGS "ADD_FFLAGS='${OSX_DEPLOYMENT_FLAG}' ADD_CFLAGS='${OSX_DEPLOYMENT_FLAG} ${OSX_SYSROOT_FLAG}' ADD_CXXFLAGS='${OSX_LIB_FLAG} ${OSX_DEPLOYMENT_FLAG} ${OSX_SYSROOT_FLAG} -fPIC' --disable-dependency-tracking")
134+
set(COINOR_CXXFLAGS "${OSX_LIB_FLAG} ${OSX_DEPLOYMENT_FLAG} ${OSX_SYSROOT_FLAG} -fPIC -std=c++14")
135+
set(COINOR_CFLAGS "${OSX_DEPLOYMENT_FLAG} ${OSX_SYSROOT_FLAG}")
136+
set(COINOR_FFLAGS "${OSX_DEPLOYMENT_FLAG}")
137+
set(COINOR_EXTRA_ARGS "--disable-dependency-tracking")
135138
else()
136-
set(COINOR_EXTRA_FLAGS "ADD_CXXFLAGS='-fPIC'")
139+
set(COINOR_CXXFLAGS "-fPIC -std=c++14")
140+
set(COINOR_CFLAGS "")
141+
set(COINOR_FFLAGS "")
142+
set(COINOR_EXTRA_ARGS "")
137143
endif()
138144

139145
# Determine build triplet for configure (only needed for Linux with old config.guess)
@@ -159,51 +165,83 @@ MACRO( OPENMS_CONTRIB_BUILD_COINOR)
159165
set(SHARED_BUILD "--enable-shared=no")
160166
endif()
161167

162-
message( STATUS "Configure COIN-OR library (./configure -C --prefix=${PROJECT_BINARY_DIR} ${BUILD_TRIPLET} ${STATIC_BUILD} ${SHARED_BUILD} --with-lapack=no --with-blas=no ${COINOR_EXTRA_FLAGS} CXX=${CMAKE_CXX_COMPILER} CC=${CMAKE_C_COMPILER})")
163-
exec_program("./configure" "${COINOR_DIR}"
164-
ARGS
165-
-C
166-
--prefix=${PROJECT_BINARY_DIR}
167-
${BUILD_TRIPLET}
168-
## Following two lines can be combined with prefix
169-
## But maybe they avoid building the doc into share (wanted?)
170-
#--libdir=${CONTRIB_BIN_LIB_DIR}
171-
#--includedir=${CONTRIB_BIN_INCLUDE_DIR}
172-
${STATIC_BUILD}
173-
${SHARED_BUILD}
174-
--with-lapack=no
175-
--with-blas=no
176-
${COINOR_EXTRA_FLAGS}
177-
CXX=${CMAKE_CXX_COMPILER}
178-
CC=${CMAKE_C_COMPILER}
168+
message( STATUS "Configure COIN-OR library (./configure -C --prefix=${PROJECT_BINARY_DIR} ${BUILD_TRIPLET} ${STATIC_BUILD} ${SHARED_BUILD} --with-lapack=no --with-blas=no ${COINOR_EXTRA_ARGS} CXX=${CMAKE_CXX_COMPILER} CC=${CMAKE_C_COMPILER} CXXFLAGS=${COINOR_CXXFLAGS})")
169+
170+
# Save original environment variables
171+
set(_ORIG_CXXFLAGS "$ENV{CXXFLAGS}")
172+
set(_ORIG_CFLAGS "$ENV{CFLAGS}")
173+
set(_ORIG_FFLAGS "$ENV{FFLAGS}")
174+
175+
# Set environment variables for configure
176+
set(ENV{CXXFLAGS} "${COINOR_CXXFLAGS}")
177+
set(ENV{CFLAGS} "${COINOR_CFLAGS}")
178+
set(ENV{FFLAGS} "${COINOR_FFLAGS}")
179+
180+
execute_process(
181+
COMMAND
182+
./configure
183+
-C
184+
--prefix=${PROJECT_BINARY_DIR}
185+
${STATIC_BUILD}
186+
${SHARED_BUILD}
187+
${BUILD_TRIPLET}
188+
--with-lapack=no
189+
--with-blas=no
190+
${COINOR_EXTRA_ARGS}
191+
CXX=${CMAKE_CXX_COMPILER}
192+
CC=${CMAKE_C_COMPILER}
193+
WORKING_DIRECTORY ${COINOR_DIR}
179194
OUTPUT_VARIABLE COINOR_CONFIGURE_OUT
180-
RETURN_VALUE COINOR_CONFIGURE_SUCCESS
181-
)
182-
195+
ERROR_VARIABLE COINOR_CONFIGURE_ERR
196+
RESULT_VARIABLE COINOR_CONFIGURE_SUCCESS
197+
)
183198
## logfile
184199
file(APPEND ${LOGFILE} ${COINOR_CONFIGURE_OUT})
200+
file(APPEND ${LOGFILE} ${COINOR_CONFIGURE_ERR})
185201

186202
if( NOT COINOR_CONFIGURE_SUCCESS EQUAL 0)
187-
message( STATUS "Configure COIN-OR library (./configure -C --prefix=${PROJECT_BINARY_DIR} ${BUILD_TRIPLET} ${STATIC_BUILD} ${SHARED_BUILD} --with-lapack=no --with-blas=no ${COINOR_EXTRA_FLAGS} CXX=${CMAKE_CXX_COMPILER} CC=${CMAKE_C_COMPILER}) .. failed")
203+
message( STATUS "Configure COIN-OR library .. failed")
204+
message( STATUS ${COINOR_CONFIGURE_ERR})
188205
message( FATAL_ERROR ${COINOR_CONFIGURE_OUT})
189206
else()
190-
message( STATUS "Configure COIN-OR library (./configure -C --prefix=${PROJECT_BINARY_DIR} ${BUILD_TRIPLET} ${STATIC_BUILD} ${SHARED_BUILD} --with-lapack=no --with-blas=no ${COINOR_EXTRA_FLAGS} CXX=${CMAKE_CXX_COMPILER} CC=${CMAKE_C_COMPILER}) .. done")
207+
message( STATUS "Configure COIN-OR library .. done")
191208
endif()
192209

193210
## make install
194211
message( STATUS "Building and installing COIN-OR library (make install).. ")
195-
exec_program(${CMAKE_MAKE_PROGRAM} "${COINOR_DIR}"
196-
ARGS
197-
install
212+
execute_process(
213+
COMMAND
214+
${CMAKE_MAKE_PROGRAM}
215+
install
216+
WORKING_DIRECTORY ${COINOR_DIR}
198217
OUTPUT_VARIABLE COINOR_MAKE_OUT
199-
RETURN_VALUE COINOR_MAKE_SUCCESS
200-
)
201-
218+
ERROR_VARIABLE COINOR_MAKE_ERR
219+
RESULT_VARIABLE COINOR_MAKE_SUCCESS
220+
)
202221
## logfile
203222
file(APPEND ${LOGFILE} ${COINOR_MAKE_OUT})
223+
file(APPEND ${LOGFILE} ${COINOR_MAKE_ERR})
224+
225+
# Restore original environment variables (or unset if they were empty)
226+
if(_ORIG_CXXFLAGS STREQUAL "")
227+
unset(ENV{CXXFLAGS})
228+
else()
229+
set(ENV{CXXFLAGS} "${_ORIG_CXXFLAGS}")
230+
endif()
231+
if(_ORIG_CFLAGS STREQUAL "")
232+
unset(ENV{CFLAGS})
233+
else()
234+
set(ENV{CFLAGS} "${_ORIG_CFLAGS}")
235+
endif()
236+
if(_ORIG_FFLAGS STREQUAL "")
237+
unset(ENV{FFLAGS})
238+
else()
239+
set(ENV{FFLAGS} "${_ORIG_FFLAGS}")
240+
endif()
204241

205242
if( NOT COINOR_MAKE_SUCCESS EQUAL 0)
206243
message( STATUS "Building and installing COIN-OR library (make install) .. failed")
244+
message( STATUS ${COINOR_MAKE_ERR})
207245
message( FATAL_ERROR ${COINOR_MAKE_OUT})
208246
else()
209247
message( STATUS "Building and installing COIN-OR library (make install) .. done")

libraries.cmake/eigen.cmake

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ macro( OPENMS_CONTRIB_BUILD_EIGEN )
88
OPENMS_LOGHEADER_LIBRARY("eigen")
99

1010
if(MSVC)
11-
set(ZIP_ARGS "x -y -osrc")
11+
set(ZIP_ARGS x -y -osrc)
1212
else()
13-
set(ZIP_ARGS "xzf")
13+
set(ZIP_ARGS xzf)
1414
endif()
1515
OPENMS_SMARTEXTRACT(ZIP_ARGS ARCHIVE_EIGEN "EIGEN" "CMakeLists.txt")
1616

@@ -21,6 +21,9 @@ macro( OPENMS_CONTRIB_BUILD_EIGEN )
2121
execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${_EIGEN_NATIVE_BUILD_DIR})
2222

2323
message(STATUS "Generating eigen build system .. ")
24+
message(STATUS " CMake generator: ${CMAKE_GENERATOR}")
25+
message(STATUS " Source dir: ${EIGEN_DIR}")
26+
message(STATUS " Build dir: ${_EIGEN_NATIVE_BUILD_DIR}")
2427

2528
execute_process(COMMAND ${CMAKE_COMMAND}
2629
-G "${CMAKE_GENERATOR}"
@@ -32,14 +35,17 @@ macro( OPENMS_CONTRIB_BUILD_EIGEN )
3235
WORKING_DIRECTORY ${_EIGEN_NATIVE_BUILD_DIR}
3336
OUTPUT_VARIABLE _EIGEN_CMAKE_OUT
3437
ERROR_VARIABLE _EIGEN_CMAKE_ERR
35-
RESULT_VARIABLE _EIGEN_CMAKE_SUCCESS)
38+
RESULT_VARIABLE _EIGEN_CMAKE_SUCCESS
39+
TIMEOUT 300)
3640

3741
# output to logfile
3842
file(APPEND ${LOGFILE} ${_EIGEN_CMAKE_OUT})
3943
file(APPEND ${LOGFILE} ${_EIGEN_CMAKE_ERR})
4044

4145
if (NOT _EIGEN_CMAKE_SUCCESS EQUAL 0)
42-
message(FATAL_ERROR "Generating eigen build system .. failed")
46+
message(STATUS "CMake stdout: ${_EIGEN_CMAKE_OUT}")
47+
message(STATUS "CMake stderr: ${_EIGEN_CMAKE_ERR}")
48+
message(FATAL_ERROR "Generating eigen build system .. failed (exit code: ${_EIGEN_CMAKE_SUCCESS})")
4349
else()
4450
message(STATUS "Generating eigen build system .. done")
4551
endif()
@@ -56,14 +62,17 @@ macro( OPENMS_CONTRIB_BUILD_EIGEN )
5662
WORKING_DIRECTORY ${_EIGEN_NATIVE_BUILD_DIR}
5763
OUTPUT_VARIABLE _EIGEN_BUILD_OUT
5864
ERROR_VARIABLE _EIGEN_BUILD_ERR
59-
RESULT_VARIABLE _EIGEN_BUILD_SUCCESS)
65+
RESULT_VARIABLE _EIGEN_BUILD_SUCCESS
66+
TIMEOUT 300)
6067

6168
# output to logfile
6269
file(APPEND ${LOGFILE} ${_EIGEN_BUILD_OUT})
6370
file(APPEND ${LOGFILE} ${_EIGEN_BUILD_ERR})
6471

6572
if (NOT _EIGEN_BUILD_SUCCESS EQUAL 0)
66-
message(FATAL_ERROR "Installing eigen headers .. failed")
73+
message(STATUS "Build stdout: ${_EIGEN_BUILD_OUT}")
74+
message(STATUS "Build stderr: ${_EIGEN_BUILD_ERR}")
75+
message(FATAL_ERROR "Installing eigen headers .. failed (exit code: ${_EIGEN_BUILD_SUCCESS})")
6776
else()
6877
message(STATUS "Installing eigen headers .. done")
6978
endif()

libraries.cmake/glpk.cmake

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ MACRO( OPENMS_CONTRIB_BUILD_GLPK )
66
OPENMS_LOGHEADER_LIBRARY("glpk")
77
#extract: (takes very long.. so skip if possible)
88
if(MSVC)
9-
set(ZIP_ARGS "x -y -osrc")
9+
set(ZIP_ARGS x -y -osrc)
1010
else()
11-
set(ZIP_ARGS "xzf")
11+
set(ZIP_ARGS xzf)
1212
endif()
1313
OPENMS_SMARTEXTRACT(ZIP_ARGS ARCHIVE_GLPK "GLPK" "README")
1414

@@ -96,7 +96,6 @@ MACRO( OPENMS_CONTRIB_BUILD_GLPK )
9696
# make
9797
message( STATUS "Building GLPK library (make).. ")
9898
exec_program(${CMAKE_MAKE_PROGRAM} "${GLPK_DIR}"
99-
ARGS -j ${NUMBER_OF_JOBS}
10099
OUTPUT_VARIABLE GLPK_MAKE_OUT
101100
RETURN_VALUE GLPK_MAKE_SUCCESS
102101
)
@@ -115,7 +114,6 @@ MACRO( OPENMS_CONTRIB_BUILD_GLPK )
115114
message( STATUS "Installing GLPK library (make install) .. ")
116115
exec_program(${CMAKE_MAKE_PROGRAM} "${GLPK_DIR}"
117116
ARGS "install"
118-
-j ${NUMBER_OF_JOBS}
119117
OUTPUT_VARIABLE GLPK_INSTALL_OUT
120118
RETURN_VALUE GLPK_INSTALL_SUCCESS
121119
)

libraries.cmake/hdf5.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ MACRO( OPENMS_CONTRIB_BUILD_HDF5 )
99
OPENMS_LOGHEADER_LIBRARY("HDF5")
1010
#extract: (takes very long.. so skip if possible)
1111
if(MSVC)
12-
set(ZIP_ARGS "x -y -osrc")
12+
set(ZIP_ARGS x -y -osrc)
1313
else()
14-
set(ZIP_ARGS "xzf")
14+
set(ZIP_ARGS xzf)
1515
endif(MSVC)
1616
OPENMS_SMARTEXTRACT(ZIP_ARGS ARCHIVE_HDF5 "HDF5" "INSTALL")
1717

libraries.cmake/kissfft.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ MACRO( OPENMS_CONTRIB_BUILD_KISSFFT )
66
OPENMS_LOGHEADER_LIBRARY("kissfft")
77

88
if(MSVC)
9-
set(ZIP_ARGS "x -y -osrc")
9+
set(ZIP_ARGS x -y -osrc)
1010
else()
11-
set(ZIP_ARGS "xzf")
11+
set(ZIP_ARGS xzf)
1212
endif()
1313
OPENMS_SMARTEXTRACT(ZIP_ARGS ARCHIVE_KISSFFT "kissfft" "README")
1414

libraries.cmake/libsvm.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ MACRO( OPENMS_CONTRIB_BUILD_LIBSVM )
55
OPENMS_LOGHEADER_LIBRARY("libSVM")
66
#extract: (takes very long.. so skip if possible)
77
if(MSVC)
8-
set(ZIP_ARGS "x -y -osrc")
8+
set(ZIP_ARGS x -y -osrc)
99
else()
10-
set(ZIP_ARGS "xzf")
10+
set(ZIP_ARGS xzf)
1111
endif()
1212
OPENMS_SMARTEXTRACT(ZIP_ARGS ARCHIVE_LIBSVM "LIBSVM" "README")
1313

0 commit comments

Comments
 (0)