From ef82732b0e38b7a7f493339b38de87f9a293fa9c Mon Sep 17 00:00:00 2001
From: midipix <writeonce@midipix.org>
Date: Wed, 2 Jan 2019 22:18:23 -0500
Subject: build system: moved handling of pe-specific variables to ccenv.

---
 sofort/ccenv/ccenv.sh   | 30 ++++++++++++++++++++++++++++--
 sofort/ccenv/ccenv.vars |  4 ++++
 sofort/ccenv/pedefs.in  |  4 ++++
 3 files changed, 36 insertions(+), 2 deletions(-)
 create mode 100644 sofort/ccenv/pedefs.in

(limited to 'sofort/ccenv')

diff --git a/sofort/ccenv/ccenv.sh b/sofort/ccenv/ccenv.sh
index d6876c7..83b5daa 100644
--- a/sofort/ccenv/ccenv.sh
+++ b/sofort/ccenv/ccenv.sh
@@ -903,11 +903,30 @@ ccenv_set_os_dso_patterns()
 	esac
 }
 
+ccenv_set_os_pe_switches()
+{
+	if [ "$ccenv_os" = 'PE' ] && [ -z "$ccenv_pe_subsystem" ]; then
+		case "$ccenv_os" in
+			midipix | mingw )
+				ccenv_pe_subsystem='windows'
+				;;
+			* )
+				ccenv_pe_subsystem='console'
+				;;
+		esac
+	fi
+}
+
 ccenv_output_defs()
 {
 	ccenv_in="$mb_project_dir/sofort/ccenv/ccenv.in"
 	ccenv_mk="$mb_pwd/ccenv/$ccenv_cfgtype.mk"
 
+	if [ "$ccenv_cc_binfmt" = 'PE' ]; then
+		ccenv_pe="$mb_project_dir/sofort/ccenv/pedefs.in"
+		ccenv_in="$ccenv_in $ccenv_pe"
+	fi
+
 	if [ $ccenv_cfgtype = 'native' ]; then
 
 		ccenv_tmp=$(mktemp)
@@ -919,7 +938,7 @@ ccenv_output_defs()
 				-e 's/NATIVE_#/#/g' \
 				-e 's/       =/=/g'  \
 				-e 's/       +=/+=/g' \
-			"$ccenv_in" > "$ccenv_tmp"
+			$ccenv_in > "$ccenv_tmp"
 
 		ccenv_in="$ccenv_tmp"
 	fi
@@ -935,7 +954,7 @@ ccenv_output_defs()
 				"$__var" "'/g' ";              \
 		done)"
 
-	eval sed $ccenv_sed_substs "$ccenv_in" \
+	eval sed $ccenv_sed_substs $ccenv_in   \
 			| sed -e 's/[ \t]*$//g' \
 		> "$ccenv_mk"
 
@@ -1015,12 +1034,18 @@ ccenv_common_init()
 		ccenv_cc="$mb_user_cc"
 		ccenv_cpp="$mb_user_cpp"
 		ccenv_cxx="$mb_user_cxx"
+
+		ccenv_pe_subsystem="$mb_pe_subsystem"
+		ccenv_pe_image_base="$mb_pe_image_base"
 	else
 		ccenv_tflags=
 		ccenv_cflags="$mb_native_cflags"
 		ccenv_cc="$mb_native_cc"
 		ccenv_cpp="$mb_native_cpp"
 		ccenv_cxx="$mb_native_cxx"
+
+		ccenv_pe_subsystem="$mb_native_pe_subsystem"
+		ccenv_pe_image_base="$mb_native_pe_image_base"
 	fi
 }
 
@@ -1048,6 +1073,7 @@ ccenv_set_toolchain_variables()
 	ccenv_set_os_dso_exrules
 	ccenv_set_os_dso_linkage
 	ccenv_set_os_dso_patterns
+	ccenv_set_os_pe_switches
 
 	ccenv_output_defs
 	ccenv_clean_up
diff --git a/sofort/ccenv/ccenv.vars b/sofort/ccenv/ccenv.vars
index 1d68357..4775b37 100644
--- a/sofort/ccenv/ccenv.vars
+++ b/sofort/ccenv/ccenv.vars
@@ -80,3 +80,7 @@ ccenv_windrc=
 # cflags
 ccenv_cflags_os=
 ccenv_cflags_pic=
+
+# pe
+ccenv_pe_subsystem=
+ccenv_pe_image_base=
diff --git a/sofort/ccenv/pedefs.in b/sofort/ccenv/pedefs.in
new file mode 100644
index 0000000..300d990
--- /dev/null
+++ b/sofort/ccenv/pedefs.in
@@ -0,0 +1,4 @@
+# @ccenv_cfgtype@ pe switches
+PE_SUBSYSTEM                    = @ccenv_pe_subsystem@
+PE_IMAGE_BASE                   = @ccenv_pe_image_base@
+
-- 
cgit v1.2.3