Browse Source

enable unity build in gitlab CI

(can be expanded to github CI also, if it works ok)
Aleksey N. Vinogradov 1 year ago
parent
commit
e7afb264dd
4 changed files with 23 additions and 1 deletions
  1. 3 0
      .gitlab-ci.yml
  2. 2 1
      dist/gitlab-release.yml
  3. 5 0
      misc/ctest/gltest.cmake
  4. 13 0
      misc/ctest/justbuild.cmake

+ 3 - 0
.gitlab-ci.yml

@@ -11,6 +11,7 @@ workflow:
 
 variables:
   VERBOSE: 1
+  UNITY_BUILD: 1
 
 stages:
   - mirroring
@@ -128,6 +129,7 @@ simple_build:
     CTEST_CMAKE_GENERATOR: "Unix Makefiles" # as Ninja fails with coverage
     CTEST_CONFIGURATION_TYPE: "Debug"
     WITH_COVERAGE: 1
+    UNITY_BUILD: 0
 
 simple_tests:
   extends: [ .tests ]
@@ -136,6 +138,7 @@ simple_tests:
     CTEST_CONFIGURATION_TYPE: "Debug"
     WITH_COVERAGE: 1
     NO_BUILD: 1
+    UNITY_BUILD: 0
 
 # ==================== Release build, then test ======================
 

+ 2 - 1
dist/gitlab-release.yml

@@ -9,6 +9,7 @@ variables:
   DIAGNOSTIC: 1
   PACK_ICUDATA: 0
   PACK_GALERA: 0
+  CMAKE_XTRA: -DCMAKE_UNITY_BUILD=1
 
 # ==================== .helper generic build ======================
 
@@ -31,7 +32,7 @@ variables:
     sysroot: roots_nov22
   script:
     - mkdir build && cd build
-    - cmake -DPACK=1 -DBUILD_TAG=$RELEASE_TAG ..
+    - cmake -DPACK=1 -DBUILD_TAG=$RELEASE_TAG $CMAKE_XTRA ..
     - cmake --build . --target package
   cache:
     key: release_$DISTR$arch

+ 5 - 0
misc/ctest/gltest.cmake

@@ -14,6 +14,7 @@ set ( SEARCHD_CLI_EXTRA "$ENV{SEARCHD_CLI_EXTRA}" )
 set ( WITH_COVERAGE "$ENV{WITH_COVERAGE}" )
 set ( NO_TESTS "$ENV{NO_TESTS}" )
 set ( NO_BUILD "$ENV{NO_BUILD}" )
+set ( UNITY_BUILD "$ENV{UNITY_BUILD}" )
 set_property ( GLOBAL PROPERTY Label P$ENV{CI_PIPELINE_ID} J$ENV{CI_JOB_ID} )
 
 # how may times try the test before it is considered failed
@@ -57,6 +58,10 @@ if ( SEARCHD_CLI_EXTRA )
 	LIST ( APPEND CONFIG_OPTIONS "SEARCHD_CLI_EXTRA=${SEARCHD_CLI_EXTRA}" )
 endif()
 
+if (UNITY_BUILD)
+	LIST ( APPEND CONFIG_OPTIONS "CMAKE_UNITY_BUILD=${UNITY_BUILD}" )
+endif ()
+
 SET ( CTEST_START_WITH_EMPTY_BINARY_DIRECTORY TRUE )
 #ctest_empty_binary_directory(${CTEST_BINARY_DIRECTORY})
 

+ 13 - 0
misc/ctest/justbuild.cmake

@@ -5,6 +5,7 @@ set ( CTEST_BUILD_NAME "$ENV{CI_COMMIT_REF_NAME}" )
 set ( CTEST_CONFIGURATION_TYPE "$ENV{CTEST_CONFIGURATION_TYPE}" )
 set ( CTEST_CMAKE_GENERATOR "$ENV{CTEST_CMAKE_GENERATOR}" )
 set ( LIBS_BUNDLE "$ENV{LIBS_BUNDLE}" )
+set ( UNITY_BUILD "$ENV{UNITY_BUILD}" )
 set_property ( GLOBAL PROPERTY Label P$ENV{CI_PIPELINE_ID} J$ENV{CI_JOB_ID} )
 
 # platform specific options
@@ -32,6 +33,10 @@ if ( NOT CTEST_CMAKE_GENERATOR )
 	set ( CTEST_CMAKE_GENERATOR "Unix Makefiles" )
 endif ()
 
+if (UNITY_BUILD)
+	LIST ( APPEND CONFIG_OPTIONS "CMAKE_UNITY_BUILD=${UNITY_BUILD}" )
+endif ()
+
 set ( CTEST_BINARY_DIRECTORY "${CTEST_SOURCE_DIRECTORY}/build" )
 SET ( CTEST_START_WITH_EMPTY_BINARY_DIRECTORY TRUE )
 #ctest_empty_binary_directory(${CTEST_BINARY_DIRECTORY})
@@ -60,6 +65,14 @@ set ( CTEST_CUSTOM_WARNING_EXCEPTION ".*flexsphinx.*" )
 ctest_start ( "Continuous" )
 ctest_update ()
 ctest_configure ()
+include ( ProcessorCount )
+ProcessorCount ( N )
+if (NOT N EQUAL 0)
+	if (NOT CTEST_CMAKE_GENERATOR STREQUAL "Visual Studio 16 2019")
+		set ( CTEST_BUILD_FLAGS -j${N} )
+	endif ()
+	set ( ctest_test_args ${ctest_test_args} PARALLEL_LEVEL ${N} )
+endif ()
 ctest_build ( RETURN_VALUE retcode )
 
 if ( retcode )