Skip to content
Snippets Groups Projects
Commit 1fa8fa8c authored by Jakub Klinkovský's avatar Jakub Klinkovský
Browse files

Testing build with ninja instead of make

parent e3cc7206
No related branches found
No related tags found
No related merge requests found
...@@ -30,10 +30,14 @@ stages: ...@@ -30,10 +30,14 @@ stages:
# - export NUM_CORES=$(grep "core id" /proc/cpuinfo | wc -l) # - export NUM_CORES=$(grep "core id" /proc/cpuinfo | wc -l)
# # all pyhsical cores # # all pyhsical cores
- export NUM_CORES=$(grep "core id" /proc/cpuinfo | sort -u | wc -l) - export NUM_CORES=$(grep "core id" /proc/cpuinfo | sort -u | wc -l)
- export MAKEFLAGS="-l$(echo 1.5*$NUM_CORES | bc) -j$NUM_CORES" # ninja does not have -l
# - export MAKEFLAGS="-l$(echo 1.5*$NUM_CORES | bc) -j$NUM_CORES"
- export NINJAFLAGS="-j$NUM_CORES"
- export CTEST_OUTPUT_ON_FAILURE=1
- mkdir -p "./builddir/$CI_JOB_NAME" - mkdir -p "./builddir/$CI_JOB_NAME"
- pushd "./builddir/$CI_JOB_NAME" - pushd "./builddir/$CI_JOB_NAME"
- cmake ../.. - cmake ../..
-G Ninja
-DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DCMAKE_BUILD_TYPE=${BUILD_TYPE}
-DCMAKE_INSTALL_PREFIX=$(pwd)/${BUILD_TYPE}_install_prefix -DCMAKE_INSTALL_PREFIX=$(pwd)/${BUILD_TYPE}_install_prefix
-DWITH_OPENMP=${WITH_OPENMP} -DWITH_OPENMP=${WITH_OPENMP}
...@@ -43,9 +47,12 @@ stages: ...@@ -43,9 +47,12 @@ stages:
-DWITH_TESTS=${WITH_TESTS} -DWITH_TESTS=${WITH_TESTS}
-DWITH_COVERAGE=${WITH_COVERAGE} -DWITH_COVERAGE=${WITH_COVERAGE}
-DWITH_EXAMPLES=${WITH_EXAMPLES} -DWITH_EXAMPLES=${WITH_EXAMPLES}
- make # - make
- make test CTEST_OUTPUT_ON_FAILURE=1 # - make test
- make install # - make install
- ninja ${NINJAFLAGS}
- ninja test
- ninja install
- popd - popd
variables: variables:
<<: *default_cmake_flags <<: *default_cmake_flags
......
...@@ -97,8 +97,8 @@ if( CXX_COMPILER_NAME MATCHES "icpc" ) ...@@ -97,8 +97,8 @@ if( CXX_COMPILER_NAME MATCHES "icpc" )
endif() endif()
# force colorized output in continuous integration # force colorized output in continuous integration
if( DEFINED ENV{CI_JOB_NAME} ) if( DEFINED ENV{CI_JOB_NAME} OR ${CMAKE_GENERATOR} STREQUAL "Ninja" )
message(STATUS "Continuous integration detected -- forcing compilers to produce colorized output.") message(STATUS "Continuous integration or Ninja detected -- forcing compilers to produce colorized output.")
if( CXX_COMPILER_NAME MATCHES "clang" ) if( CXX_COMPILER_NAME MATCHES "clang" )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fcolor-diagnostics" ) set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fcolor-diagnostics" )
else() else()
...@@ -405,15 +405,18 @@ INCLUDE_DIRECTORIES( src ) ...@@ -405,15 +405,18 @@ INCLUDE_DIRECTORIES( src )
INCLUDE_DIRECTORIES( ${PROJECT_BUILD_PATH} ) INCLUDE_DIRECTORIES( ${PROJECT_BUILD_PATH} )
LINK_DIRECTORIES( ${LIBRARY_OUTPUT_PATH} ) LINK_DIRECTORIES( ${LIBRARY_OUTPUT_PATH} )
#Pokracujeme dalsimi podadresari # Add all subdirectories
add_subdirectory( src ) # Note that it is important to start building examples as soon as possible,
add_subdirectory( share ) # because they take the longest time and other stuff can be pipelined before
if( WITH_TESTS STREQUAL "yes" ) # they are finished (at least with Ninja).
add_subdirectory( tests )
endif( WITH_TESTS STREQUAL "yes" )
if( WITH_EXAMPLES STREQUAL "yes" ) if( WITH_EXAMPLES STREQUAL "yes" )
add_subdirectory( examples ) add_subdirectory( examples )
endif( WITH_EXAMPLES STREQUAL "yes" ) endif( WITH_EXAMPLES STREQUAL "yes" )
if( WITH_TESTS STREQUAL "yes" )
add_subdirectory( tests )
endif( WITH_TESTS STREQUAL "yes" )
add_subdirectory( src )
add_subdirectory( share )
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Template Numerical Library") set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Template Numerical Library")
set(CPACK_PACKAGE_VENDOR "MMG") set(CPACK_PACKAGE_VENDOR "MMG")
......
#!/bin/bash #!/bin/bash
set -e
TARGET=TNL TARGET=TNL
PREFIX=${HOME}/.local PREFIX=${HOME}/.local
INSTALL="no" INSTALL="no"
...@@ -78,8 +80,7 @@ do ...@@ -78,8 +80,7 @@ do
esac esac
done done
if test ${HELP} = "yes"; if [[ ${HELP} == "yes" ]]; then
then
echo "TNL build options:" echo "TNL build options:"
echo "" echo ""
echo " --build=Debug/Release Build type." echo " --build=Debug/Release Build type."
...@@ -107,31 +108,48 @@ then ...@@ -107,31 +108,48 @@ then
exit 1 exit 1
fi fi
if test ${WITH_CLANG} = "yes"; if [[ ${WITH_CLANG} == "yes" ]]; then
then
export CXX=clang++ export CXX=clang++
export CC=clang export CC=clang
fi fi
if test ${WITH_MPI} = "yes"; if [[ ${WITH_MPI} == "yes" ]]; then
then if [[ ! -x "$(command -v mpic++)" ]]; then
if ! [ -x "$(command -v mpic++)" ]; then
echo "Warning:mpic++ is not installed on this system. MPI support is turned off." echo "Warning:mpic++ is not installed on this system. MPI support is turned off."
else else
# instruct OpenMPI to use the original compiler
# reference: https://www.open-mpi.org/faq/?category=mpi-apps#override-wrappers-after-v1.0
# FIXME: this does not work with CUDA_HOST_COMPILER=mpic++
# if [ -n "$CXX" ]; then
# export OMPI_CXX="$CXX"
# fi
export CXX=mpic++ export CXX=mpic++
export CUDA_HOST_COMPILER=mpic++ export CUDA_HOST_COMPILER=mpic++
fi fi
if ! [ -x "$(command -v mpicc)" ]; then if [[ ! -x "$(command -v mpicc)" ]]; then
echo "Warning: mpicc is not installed on this system." echo "Warning: mpicc is not installed on this system."
else else
# instruct OpenMPI to use the original compiler
# reference: https://www.open-mpi.org/faq/?category=mpi-apps#override-wrappers-after-v1.0
# if [ -n "$CC" ]; then
# export OMPI_CC="$CC"
# fi
export CC=mpicc export CC=mpicc
fi fi
fi fi
if hash ninja 2>/dev/null; then
generator=Ninja
make=ninja
check_file="build.ninja"
else
generator="Unix Makefiles"
make=make
check_file="Makefile"
fi
echo "Configuring ${BUILD} $TARGET ..." cmake_command="${CMAKE} ${ROOT_DIR} \
-G ${generator} \
${CMAKE} ${ROOT_DIR} \
-DCMAKE_BUILD_TYPE=${BUILD} \ -DCMAKE_BUILD_TYPE=${BUILD} \
-DCMAKE_INSTALL_PREFIX=${PREFIX} \ -DCMAKE_INSTALL_PREFIX=${PREFIX} \
-DOFFLINE_BUILD=${OFFLINE_BUILD} \ -DOFFLINE_BUILD=${OFFLINE_BUILD} \
...@@ -152,32 +170,47 @@ ${CMAKE} ${ROOT_DIR} \ ...@@ -152,32 +170,47 @@ ${CMAKE} ${ROOT_DIR} \
-DINSTANTIATE_LONG_DOUBLE=${INSTANTIATE_LONG_DOUBLE} \ -DINSTANTIATE_LONG_DOUBLE=${INSTANTIATE_LONG_DOUBLE} \
-DINSTANTIATE_INT=${INSTANTIATE_INT} \ -DINSTANTIATE_INT=${INSTANTIATE_INT} \
-DINSTANTIATE_LONG_INT=${INSTANTIATE_LONG_INT} \ -DINSTANTIATE_LONG_INT=${INSTANTIATE_LONG_INT} \
-DOPTIMIZED_VECTOR_HOST_OPERATIONS=${OPTIMIZED_VECTOR_HOST_OPERATIONS} -DOPTIMIZED_VECTOR_HOST_OPERATIONS=${OPTIMIZED_VECTOR_HOST_OPERATIONS}"
if test $? != 0; then # Skip running cmake if it was already run and the cmake command is the same.
echo "Error: cmake exited with error code." # The build system (e.g. make) will call it automatically if necessary (e.g.
exit 1 # when some CMakeLists.txt changes).
if [[ -f ".cmake_command" ]]; then
last_cmake_command=$(cat ".cmake_command" 2>/dev/null)
else
last_cmake_command=""
fi
if [[ ! -f "$check_file" ]] || [[ "$last_cmake_command" != "$cmake_command" ]]; then
echo "Configuring ${BUILD} $TARGET ..."
$cmake_command
echo -n "$cmake_command" > ".cmake_command"
fi fi
if test ${CMAKE_ONLY} = "yes"; if [[ ${CMAKE_ONLY} == "yes" ]]; then
then exit 0
exit 0
fi fi
if [[ -n ${BUILD_JOBS} ]]; then if [[ "$make" == "make" ]]; then
# override $MAKEFLAGS from parent environment if [[ -n ${BUILD_JOBS} ]]; then
export MAKEFLAGS=-j${BUILD_JOBS} # override $MAKEFLAGS from parent environment
elif [[ -z ${MAKEFLAGS} ]]; then export MAKEFLAGS=-j${BUILD_JOBS}
# $BUILD_JOBS and $MAKEFLAGS are not set => set default value elif [[ -z ${MAKEFLAGS} ]]; then
BUILD_JOBS=$(grep "core id" /proc/cpuinfo | sort -u | wc -l) # $BUILD_JOBS and $MAKEFLAGS are not set => set default value
export MAKEFLAGS=-j${BUILD_JOBS} BUILD_JOBS=$(grep "core id" /proc/cpuinfo | sort -u | wc -l)
export MAKEFLAGS=-j${BUILD_JOBS}
fi
else
if [[ -z ${BUILD_JOBS} ]]; then
BUILD_JOBS=$(grep "core id" /proc/cpuinfo | sort -u | wc -l)
fi
make="$make -j$BUILD_JOBS"
fi fi
if [[ -n ${BUILD_JOBS} ]]; then if [[ -n ${BUILD_JOBS} ]]; then
echo "Building ${BUILD} $TARGET using $BUILD_JOBS processors ..." echo "Building ${BUILD} $TARGET using $BUILD_JOBS processors ..."
else else
# number of processors is unknown - it is encoded in $MAKEFLAGS from parent environment # number of processors is unknown - it is encoded in $MAKEFLAGS from parent environment
echo "Building ${BUILD} $TARGET ..." echo "Building ${BUILD} $TARGET ..."
fi fi
if [[ "$INSTALL" == "yes" ]]; then if [[ "$INSTALL" == "yes" ]]; then
...@@ -187,19 +220,8 @@ else ...@@ -187,19 +220,8 @@ else
make_target="all" make_target="all"
fi fi
make ${VERBOSE} $make_target $make ${VERBOSE} $make_target
if test $? != 0; then
echo "Error: Build process failed."
exit 1
fi
if [[ ${WITH_TESTS} == "yes" ]]; then
if test ${WITH_TESTS} = "yes"; CTEST_OUTPUT_ON_FAILURE=1 $make test
then
make test CTEST_OUTPUT_ON_FAILURE=1
if test $? != 0; then
echo "Error: Some test did not pass successfuly."
fi
fi fi
exit 0
if( ${WITH_PYTHON} )
ADD_SUBDIRECTORY( Python )
endif()
ADD_SUBDIRECTORY( TNL ) ADD_SUBDIRECTORY( TNL )
if( ${WITH_TOOLS} ) if( ${WITH_TOOLS} )
...@@ -11,3 +7,7 @@ endif() ...@@ -11,3 +7,7 @@ endif()
if( ${WITH_TESTS} ) if( ${WITH_TESTS} )
ADD_SUBDIRECTORY( UnitTests ) ADD_SUBDIRECTORY( UnitTests )
endif() endif()
if( ${WITH_PYTHON} )
ADD_SUBDIRECTORY( Python )
endif()
...@@ -59,19 +59,22 @@ ADD_TEST( MeshEntityTest ${EXECUTABLE_OUTPUT_PATH}/MeshEntityTest${CMAKE_EXECUTA ...@@ -59,19 +59,22 @@ ADD_TEST( MeshEntityTest ${EXECUTABLE_OUTPUT_PATH}/MeshEntityTest${CMAKE_EXECUTA
# SET( VTK_COMMON_LIBRARIES vtkCommonCore ; vtkIOLegacy ) # SET( VTK_COMMON_LIBRARIES vtkCommonCore ; vtkIOLegacy )
#endif( VTK_FOUND ) #endif( VTK_FOUND )
# Mesh cannot be compiled by nvcc < 9 due to bugs in the compiler ## MeshReaderTest is not a unit test so we disable it, because it takes
if( ${BUILD_CUDA} AND ${CUDA_VERSION_MAJOR} GREATER_EQUAL 9 ) ## a long time to compile.
CUDA_ADD_EXECUTABLE( MeshReaderTest MeshReaderTest.cu ##
OPTIONS ${CXX_TESTS_FLAGS} ) ## Mesh cannot be compiled by nvcc < 9 due to bugs in the compiler
TARGET_LINK_LIBRARIES( MeshReaderTest #if( ${BUILD_CUDA} AND ${CUDA_VERSION_MAJOR} GREATER_EQUAL 9 )
${GTEST_BOTH_LIBRARIES} # CUDA_ADD_EXECUTABLE( MeshReaderTest MeshReaderTest.cu
${VTK_COMMON_LIBRARIES} # OPTIONS ${CXX_TESTS_FLAGS} )
tnl ) # TARGET_LINK_LIBRARIES( MeshReaderTest
else() # ${GTEST_BOTH_LIBRARIES}
ADD_EXECUTABLE( MeshReaderTest MeshReaderTest.cpp ) # ${VTK_COMMON_LIBRARIES}
TARGET_COMPILE_OPTIONS( MeshReaderTest PRIVATE ${CXX_TESTS_FLAGS} ) # tnl )
TARGET_LINK_LIBRARIES( MeshReaderTest #else()
${GTEST_BOTH_LIBRARIES} # ADD_EXECUTABLE( MeshReaderTest MeshReaderTest.cpp )
${VTK_COMMON_LIBRARIES} # TARGET_COMPILE_OPTIONS( MeshReaderTest PRIVATE ${CXX_TESTS_FLAGS} )
tnl ) # TARGET_LINK_LIBRARIES( MeshReaderTest
endif() # ${GTEST_BOTH_LIBRARIES}
# ${VTK_COMMON_LIBRARIES}
# tnl )
#endif()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment