SCons builder for erlang

Héctor Rivas Gándara <>
Tue May 17 13:17:13 CEST 2005


Hi,

I send the definition of a SCons[1] builder for Erlang beams. SCons its 
a great tool for project building and a good replacement for make:

-- 8< ------ 8< ---  <file:SConstruct> --- 8< ------ 8< ------
import os
env = Environment(ENV = os.environ)

#######################################################################
# Erlang Builder
#ERLANG_BIN = ""
#ERLC = os.path.join(ERLANG_BIN, 'erlc')
ERLC = 'erlc'

beam_builder = Builder(
	generator =
		lambda source, target, env, for_signature:
			ERLC +
			# Append include entries
			reduce(lambda acum, path: acum+' -I'+str(path),
				[""] + env.get('ERLINCLUDE', [])) +
			# Append path entries
			reduce(lambda acum, path: acum+' -pa'+str(path),
				[""] + env.get('ERLPATH', [])) +
			' -o $TARGET $SOURCES' ,
   	    suffix = '.beam',
           src_suffix = '.erl')

env.Append(BUILDERS = {'Beam': beam_builder})

#######################################################################
# Example use
env.Append(ERLINCLUDE = [Dir("."), Dir("./subsystem")])
env.Append(ERLPATH = [Dir("/path/to/any/library"), 
Dir("/path/to/other/library")])

erlang_sources = Split("""
	asource.erl othersource.erl
	""")

beams = []

for erlang_source in erlang_sources:
	beam = env.Beam(erlang_source)
	beams.append(beam)

DIST_BEANS="./dist/bin"

install_beans = Install(DIST_BEANS, beams)
Alias('install', install_beans)
-- 8< ------ 8< ---  </file:SConstruct> --- 8< ------ 8< ------

--
[1] http://www.scons.org
--
Saudos
Keymon




More information about the erlang-questions mailing list