shithub: mc

Download patch

ref: ccc18d6ab171efa2a512f3c79c535a27b5baec7f
parent: 0cf1870f4b5a8a547ce1334e6e83cc0275b94774
author: Ori Bernstein <[email protected]>
date: Thu Oct 5 14:23:28 EDT 2017

Allow passing some flags to the build.

--- a/mbld/deps.myr
+++ b/mbld/deps.myr
@@ -402,6 +402,9 @@
 
 const musecmd = {b, n, mt, mu
 	std.slpush(&n.cmd, std.sldup(opt_muse))
+	for o : opt_museflags
+		std.slpush(&n.cmd, o)
+	;;
 	std.slpush(&n.cmd, std.sldup("-o"))
 	std.slpush(&n.cmd, std.sldup(mu))
 	std.slpush(&n.cmd, std.sldup("-p"))
@@ -425,6 +428,9 @@
 	for c : config.Linkcmd
 		std.slpush(&n.cmd, std.sldup(c))
 	;;
+	for o : opt_ldflags
+		std.slpush(&n.cmd, o)
+	;;
 	std.slpush(&n.cmd, std.sldup(bin))
 	if mt.ldscript.len > 0
 		std.slpush(&n.cmd, std.sldup("-T"))
@@ -459,6 +465,9 @@
 
 const myrcmd = {b, n, mt, src, istest
 	std.slpush(&n.cmd, std.sldup(opt_mc))
+	for o : opt_mcflags
+		std.slpush(&n.cmd, o)
+	;;
 	if opt_objdir.len > 0
 		pushopt(&n.cmd, "-O", std.sldup(opt_objdir))
 	;;
--- a/mbld/opts.myr
+++ b/mbld/opts.myr
@@ -4,18 +4,21 @@
 use "config"
 
 pkg bld =
-	var opt_arch 	: byte[:]
-	var opt_sys	: byte[:]
-	var opt_sysvers	: (int, int, int)
-	var opt_runtime	: byte[:]
-	var opt_genasm	: bool
+	var opt_arch 		: byte[:]
+	var opt_sys		: byte[:]
+	var opt_sysvers		: (int, int, int)
+	var opt_runtime		: byte[:]
+	var opt_genasm		: bool
 	var opt_incpaths	: byte[:][:]
+	var opt_mcflags		: byte[:][:]
+	var opt_museflags	: byte[:][:]
+	var opt_ldflags		: byte[:][:]
 	var opt_instbase	: byte[:]
-	var opt_destdir	: byte[:]
-	var opt_objdir	: byte[:]
-	var opt_maxproc : std.size
-	var opt_debug	: bool
-	var opt_silent	: bool
+	var opt_destdir		: byte[:]
+	var opt_objdir		: byte[:]
+	var opt_maxproc 	: std.size
+	var opt_debug		: bool
+	var opt_silent		: bool
 
 	/* undocumented/unsupported opts */
 	var opt_mc	: byte[:]
@@ -29,25 +32,26 @@
 	const parseversion	: (v : byte[:] -> (int, int, int))
 ;;
 
-var opt_arch 	= ""
-var opt_sys	= ""
-var opt_binname	= ""
-var opt_libname	= ""
-var opt_runtime	= ""
+var opt_arch 		= ""
+var opt_sys		= ""
+var opt_binname		= ""
+var opt_libname		= ""
+var opt_runtime		= ""
 var opt_incpaths	/* FIXME: taking a constant slice is a nonconstant initializer */
 var opt_instbase	= ""
-var opt_destdir	= ""
+var opt_destdir		= ""
 var opt_sysvers
-var opt_debug	= false
-var opt_mc	= "6m"
-var opt_as	= "as"
-var opt_muse	= "muse"
-var opt_ld	= "ld"
-var opt_ar	= "ar"
-var opt_objdir	= "obj"
-var opt_genasm  = false
-var opt_silent	= false
-var opt_maxproc = 1
+var opt_debug		= false
+var opt_mc		= "6m"
+var opt_as		= "as"
+var opt_muse		= "muse"
+var opt_mcflags		= [][:]
+var opt_museflags	= [][:]
+var opt_ldflags		= [][:]
+var opt_objdir		= "obj"
+var opt_genasm  	= false
+var opt_silent		= false
+var opt_maxproc 	= 1
 
 const initopts = {
 	var si
@@ -78,6 +82,18 @@
 	opt_mc = std.getenvv("MYR_MC", "6m")
 	opt_muse = std.getenvv("MYR_MUSE", "muse")
 	opt_runtime = std.getenvv("MYR_RT", "")
+	match std.getenv("MYR_MCFLAGS")
+	| `std.Some s:	opt_mcflags = std.strtok(s)
+	| `std.None:	/* ok */
+	;;
+	match std.getenv("MYR_MUSEFLAGS")
+	| `std.Some s:	opt_mcflags = std.strtok(s)
+	| `std.None:	/* ok */
+	;;
+	match std.getenv("MYR_LDFLAGS")
+	| `std.Some s:	opt_ldflags = std.strtok(s)
+	| `std.None:	/* ok */
+	;;
 	if opt_runtime.len == 0
 		opt_runtime = std.pathjoin([opt_instbase, config.Libpath, config.Runtime][:]) 
 	;;