Index: Jenkinsfile
===================================================================
--- Jenkinsfile	(revision 03ccadd921f2a14660902f39594ba9a01d8df6ff)
+++ Jenkinsfile	(revision ecb495510d8c56d5ddb9786f874198ec71b07ff5)
@@ -35,4 +35,22 @@
 }
 
+def push_build() {
+	build_stage 'Push'
+
+		def out_dir = pwd tmp: true
+		sh "mkdir -p ${out_dir}"
+
+		//parse git logs to find what changed
+		sh "git remote > ${out_dir}/GIT_REMOTE"
+		git_remote = readFile("${out_dir}/GIT_REMOTE")
+		remoteDoLangExists = git_remote.contains("DoLang")
+
+		if( !remoteDoLangExists ) {
+			sh 'git remote add DoLang git@gitlab.do-lang.org:internal/cfa-cc.git'
+		}
+
+		sh 'git push DoLang master'
+}
+
 //===========================================================================================================
 // Helper classes/variables/routines to make the status and stage name easier to use
@@ -67,5 +85,9 @@
 def collect_git_info() {
 
+	//create the temporary output directory in case it doesn't already exist
 	def out_dir = pwd tmp: true
+	sh "mkdir -p ${out_dir}"
+
+	//parse git logs to find what changed
 	gitRefName = env.BRANCH_NAME
 	dir("../${gitRefName}@script") {
@@ -82,4 +104,5 @@
 node ('master'){
 
+	boolean doPromoteBuild2DoLang
 	def err = null
 	def log_needed = false
@@ -96,4 +119,18 @@
 				collect_git_info()
 
+				properties ([ 									\
+					[$class: 'ParametersDefinitionProperty', 				\
+						parameterDefinitions: [ 					\
+						[$class: 'BooleanParameterDefinition',  			\
+						  defaultValue: false,  					\
+						  description: 'If true, the build will be promoted to the do-lang git repository (on successful builds only)', \
+						  name: 'promoteBuild2DoLang' 				\
+						]] 									\
+					]])
+
+				doPromoteBuild2DoLang = promoteBuild2DoLang == 'true'
+
+				echo "FULL BUILD = ${doPromoteBuild2DoLang}"
+
 				//Compile using gcc-4.9
 				currentCC = new CC_Desc('gcc-4.9', 'g++-4.9', 'gcc-4.9')
@@ -108,4 +145,7 @@
 				cfa_build()
 
+				if( doPromoteBuild2DoLang ) {
+					push_build()
+				}
 			}
 		}
@@ -127,5 +167,5 @@
 	finally {
 		//Send email with final results
-		email(currentBuild.result, log_needed)
+		notify_result(doPromoteBuild2DoLang, err != null, currentBuild.result, log_needed)
 
 		/* Must re-throw exception to propagate error */
@@ -139,4 +179,39 @@
 //Routine responsible of sending the email notification once the build is completed
 //===========================================================================================================
+def notify_result(boolean promote, boolean success, String status, boolean log) {
+	if(promote)	{
+		if( !success ) {
+			promote_email(status)
+		}
+	}
+	else {
+		email(status, log)
+	}
+}
+
+//Email notification on a full build failure
+def promote_email(String status) {
+	//Since tokenizer doesn't work, figure stuff out from the environnement variables and command line
+	//Configurations for email format
+	def email_subject = "[cforall git][PROMOTE - FAILURE]"
+	def email_body = """This is an automated email from the Jenkins build machine. It was
+generated because of a git hooks/post-receive script following
+a ref change was pushed to the repository containing
+the project "UNNAMED PROJECT".
+
+Check console output at ${env.BUILD_URL} to view the results.
+
+- Status --------------------------------------------------------------
+
+PROMOTE FAILURE - ${status}
+"""
+
+	def email_to = "pabuhr@uwaterloo.ca, rschlunt@uwaterloo.ca, a3moss@uwaterloo.ca, tdelisle@uwaterloo.ca, brice.dobry@huawei.com"
+
+	//send email notification
+	emailext body: email_body, subject: email_subject, to: email_to, attachLog: true
+}
+
+//Standard build email notification
 def email(String status, boolean log) {
 	//Since tokenizer doesn't work, figure stuff out from the environnement variables and command line
@@ -157,6 +232,6 @@
 
 The branch ${env.BRANCH_NAME} has been updated.
-	 via  ${gitRefOldValue} (commit)
-	from  ${gitRefNewValue} (commit)
+   via  ${gitRefOldValue} (commit)
+  from  ${gitRefNewValue} (commit)
 
 Check console output at ${env.BUILD_URL} to view the results.
Index: src/libcfa/Makefile.am
===================================================================
--- src/libcfa/Makefile.am	(revision 03ccadd921f2a14660902f39594ba9a01d8df6ff)
+++ src/libcfa/Makefile.am	(revision ecb495510d8c56d5ddb9786f874198ec71b07ff5)
@@ -11,6 +11,6 @@
 ## Created On       : Sun May 31 08:54:01 2015
 ## Last Modified By : Peter A. Buhr
-## Last Modified On : Tue Jun  7 14:38:18 2016
-## Update Count     : 142
+## Last Modified On : Wed Jun  8 14:20:34 2016
+## Update Count     : 165
 ###############################################################################
 
@@ -54,8 +54,11 @@
 
 headers = limits stdlib math iostream fstream iterator rational
-.PRECIOUS : ${headers}						# stop implicit '.o' rules from removing extensionless headers
+libobjs = ${headers:=.o}
 
-#.SECONDARY : ${headers}					# stop implicit '.o' rules from removing extensionless headers
+# extensionless header files are overridden by -o flag in default makerule => explicitly override default rule to silently do nothing
+% : %.c
+	@true
 
+${libobjs} : ${abs_top_srcdir}/src/driver/cfa-cpp	# add dependency to cfa-cpp so all libraries are rebuilt with new translator
 
 libcfa_a_SOURCES = libcfa-prelude.c ${headers:=.c}
Index: src/libcfa/Makefile.in
===================================================================
--- src/libcfa/Makefile.in	(revision 03ccadd921f2a14660902f39594ba9a01d8df6ff)
+++ src/libcfa/Makefile.in	(revision ecb495510d8c56d5ddb9786f874198ec71b07ff5)
@@ -215,4 +215,5 @@
 	${addprefix ${libdir}/,${lib_LIBRARIES}} ${includedir}/*
 headers = limits stdlib math iostream fstream iterator rational
+libobjs = ${headers:=.o}
 libcfa_a_SOURCES = libcfa-prelude.c ${headers:=.c}
 include_HEADERS = ${headers}
@@ -587,5 +588,10 @@
 libcfa-prelude.o : libcfa-prelude.c
 	@BACKEND_CC@ -c -o $@ $<
-.SECONDARY : ${headers}					# stop implicit '.o' rules from removing extensionless headers
+
+# extensionless header files are overridden by -o flag in default makerule => explicitly override default rule to silently do nothing
+% : %.c
+	@true
+
+${libobjs} : ${abs_top_srcdir}/src/driver/cfa-cpp	# add dependency to cfa-cpp so all libraries are rebuilt with new translator
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
