Index: Jenkinsfile_disabled
===================================================================
--- Jenkinsfile_disabled	(revision 28af3894a3f48635b14d9b38bcb17e753eb4d321)
+++ Jenkinsfile_disabled	(revision 504eb72fc3a32710df1a99fba0601f0cbc45cc12)
@@ -2,4 +2,7 @@
 
 import groovy.transform.Field
+
+// For skipping stages
+import org.jenkinsci.plugins.pipeline.modeldefinition.Utils
 
 //===========================================================================================================
@@ -82,5 +85,5 @@
 //===========================================================================================================
 def clean() {
-	build_stage('Cleanup') {
+	build_stage('Cleanup', true) {
 		// clean the build by wipping the build directory
 		dir(BuildDir) {
@@ -92,5 +95,5 @@
 //Compilation script is done here but environnement set-up and error handling is done in main loop
 def checkout() {
-	build_stage('Checkout') {
+	build_stage('Checkout', true) {
 		//checkout the source code and clean the repo
 		final scmVars = checkout scm
@@ -103,5 +106,27 @@
 
 def build() {
-	build_stage('Build') {
+	// build_stage('Build', true) {
+	// 	// Build outside of the src tree to ease cleaning
+	// 	dir (BuildDir) {
+	// 		//Configure the conpilation (Output is not relevant)
+	// 		//Use the current directory as the installation target so nothing escapes the sandbox
+	// 		//Also specify the compiler by hand
+	// 		targets=""
+	// 		if( Settings.RunAllTests || Settings.RunBenchmark ) {
+	// 			targets="--with-target-hosts='host:debug,host:nodebug'"
+	// 		} else {
+	// 			targets="--with-target-hosts='host:debug'"
+	// 		}
+
+	// 		sh "${SrcDir}/configure CXX=${Settings.Compiler.CXX} CC=${Settings.Compiler.CC} ${Settings.Architecture.flags} ${targets} --quiet"
+
+	// 		//Compile the project
+	// 		sh 'make -j 8 --no-print-directory'
+	// 	}
+	// }
+
+	debug = true
+	release = Settings.RunAllTests || Settings.RunBenchmark
+	build_stage('Build : configure', true) {
 		// Build outside of the src tree to ease cleaning
 		dir (BuildDir) {
@@ -118,6 +143,31 @@
 			sh "${SrcDir}/configure CXX=${Settings.Compiler.CXX} CC=${Settings.Compiler.CC} ${Settings.Architecture.flags} ${targets} --quiet"
 
-			//Compile the project
-			sh 'make -j 8 --no-print-directory'
+			// Configure libcfa
+			sh 'make -j 8 --no-print-directory configure-libcfa'
+		}
+	}
+
+	build_stage('Build : cfa-cpp', true) {
+		// Build outside of the src tree to ease cleaning
+		dir (BuildDir) {
+			// Build driver
+			sh 'make -j 8 --no-print-directory -C driver'
+
+			// Build translator
+			sh 'make -j 8 --no-print-directory -C src'
+		}
+	}
+
+	build_stage('Build : libcfa(debug)', debug) {
+		// Build outside of the src tree to ease cleaning
+		dir (BuildDir) {
+			sh "make -j 8 --no-print-directory -C libcfa/${Settings.Architecture.name}-debug"
+		}
+	}
+
+	build_stage('Build : libcfa(nodebug)', release) {
+		// Build outside of the src tree to ease cleaning
+		dir (BuildDir) {
+			sh "make -j 8 --no-print-directory -C libcfa/${Settings.Architecture.name}-nodebug"
 		}
 	}
@@ -125,15 +175,16 @@
 
 def test() {
-	build_stage('Test') {
-
+	build_stage('Test: short', !Settings.RunAllTests) {
 		dir (BuildDir) {
 			//Run the tests from the tests directory
-			if ( Settings.RunAllTests ) {
-				sh 'make --no-print-directory -C tests timeouts="--timeout=1200" all-tests debug=yes'
-				sh 'make --no-print-directory -C tests timeouts="--timeout=1200" all-tests debug=no '
-			}
-			else {
-				sh 'make --no-print-directory -C tests'
-			}
+			sh 'make --no-print-directory -C tests'
+		}
+	}
+
+	build_stage('Test: full', Settings.RunAllTests) {
+		dir (BuildDir) {
+			//Run the tests from the tests directory
+			sh 'make --no-print-directory -C tests timeouts="--timeout=600 --global-timeout=14400" all-tests debug=yes'
+			sh 'make --no-print-directory -C tests timeouts="--timeout=600 --global-timeout=14400" all-tests debug=no '
 		}
 	}
@@ -141,8 +192,5 @@
 
 def benchmark() {
-	build_stage('Benchmark') {
-
-		if( !Settings.RunBenchmark ) return
-
+	build_stage('Benchmark', Settings.RunBenchmark) {
 		dir (BuildDir) {
 			//Append bench results
@@ -153,8 +201,5 @@
 
 def build_doc() {
-	build_stage('Documentation') {
-
-		if( !Settings.BuildDocumentation ) return
-
+	build_stage('Documentation', Settings.BuildDocumentation) {
 		dir ('doc/user') {
 			make_doc()
@@ -168,5 +213,5 @@
 
 def publish() {
-	build_stage('Publish') {
+	build_stage('Publish', true) {
 
 		if( Settings.Publish && !Settings.RunBenchmark ) { echo 'No results to publish!!!' }
@@ -412,8 +457,12 @@
 }
 
-def build_stage(String name, Closure block ) {
+def build_stage(String name, boolean run, Closure block ) {
 	StageName = name
 	echo " -------- ${StageName} -------- "
-	stage(name, block)
+	if(run) {
+		stage(name, block)
+	} else {
+		stage(name) { Utils.markStageSkippedForConditional(STAGE_NAME) }
+	}
 }
 
