Blame src/SConstruct

Ivan Mahonin 833ed7
Ivan Mahonin 833ed7
env = Environment(tools = ['default', 'textfile'])
Ivan Mahonin 833ed7
Ivan Mahonin 833ed7
name = 'helianthus'
Ivan Mahonin 833ed7
description = 'Helianthus is a library to create small games'
Ivan Mahonin 833ed7
version = '0.1.0'
Ivan Mahonin 833ed7
Ivan Mahonin 833ed7
Ivan Mahonin 833ed7
# user options
Ivan Mahonin 833ed7
Ivan Mahonin f34b93
DEBUG = ARGUMENTS.get('DEBUG', 0)
Ivan Mahonin f34b93
Ivan Mahonin 833ed7
opts = Variables(name + '.conf')
Ivan Mahonin 833ed7
opts.Add(PathVariable('PREFIX', 'Directory to install under', '/usr/local', PathVariable.PathAccept))
Ivan Mahonin 833ed7
opts.Update(env)
Ivan Mahonin 833ed7
opts.Save(name + '.conf', env)
Ivan Mahonin 833ed7
Ivan Mahonin 833ed7
Ivan Mahonin 833ed7
# config
Ivan Mahonin 833ed7
Ivan Mahonin 833ed7
libs = ['gtk+-3.0', 'glib-2.0', 'cairo', 'SDL2_mixer']
Ivan Mahonin 833ed7
Ivan Mahonin 833ed7
Ivan Mahonin 833ed7
# compute build options
Ivan Mahonin 833ed7
Ivan Mahonin f34b93
flags = ' -lm -Wall -fmessage-length=0 '
Ivan Mahonin f34b93
if int(DEBUG):
Ivan Mahonin f8c1ea
	flags += ' -O0 -g -fdebug-prefix-map=src=../src'
Ivan Mahonin f34b93
else:
Ivan Mahonin f34b93
	flags += ' -O3 '
Ivan Mahonin 833ed7
Ivan Mahonin 833ed7
Ivan Mahonin 833ed7
# files lists
Ivan Mahonin 833ed7
Ivan Mahonin 833ed7
target = name
Ivan Mahonin 833ed7
Ivan Mahonin 833ed7
headers = [
Ivan Mahonin 833ed7
	'common.h',
Ivan Mahonin 833ed7
	'drawing.h',
Ivan Mahonin 833ed7
	'group.h',
Ivan Mahonin 833ed7
	'sprite.h',
Ivan Mahonin 833ed7
	'world.h' ]
Ivan Mahonin 833ed7
Ivan Mahonin 833ed7
root_headers = [
Ivan Mahonin 833ed7
	name + '.h' ]
Ivan Mahonin 833ed7
Ivan Mahonin 833ed7
sources = [
Ivan Mahonin 833ed7
	'animation.c',
Ivan Mahonin 833ed7
	'array.c',
Ivan Mahonin 833ed7
	'collider.c',
Ivan Mahonin 833ed7
	'common.c',
Ivan Mahonin 833ed7
	'drawing.c',
Ivan Mahonin 833ed7
	'group.c',
Ivan Mahonin 833ed7
	'test.c',
Ivan Mahonin 833ed7
	'sound.c',
Ivan Mahonin 833ed7
	'sprite.c',
Ivan Mahonin 833ed7
	'world.c' ]
Ivan Mahonin 833ed7
Ivan Mahonin 833ed7
Ivan Mahonin 833ed7
# build
Ivan Mahonin 833ed7
Ivan Mahonin 833ed7
env.ParseConfig('pkg-config --cflags --libs ' + ' '.join(libs))
Ivan Mahonin 833ed7
Ivan Mahonin 833ed7
static_library = env.StaticLibrary(
Ivan Mahonin 833ed7
	target = target,
Ivan Mahonin 833ed7
	source = sources,
Ivan Mahonin 833ed7
	parse_flags = flags )
Ivan Mahonin 833ed7
Ivan Mahonin 833ed7
shared_library = env.SharedLibrary(
Ivan Mahonin 833ed7
	target = target,
Ivan Mahonin 833ed7
	source = sources,
Ivan Mahonin 833ed7
	parse_flags = flags,
Ivan Mahonin 833ed7
	SHLIBVERSION = version )
Ivan Mahonin 833ed7
Ivan Mahonin 833ed7
# install
Ivan Mahonin 833ed7
Ivan Mahonin 833ed7
idir_prefix = '$PREFIX'
Ivan Mahonin 833ed7
idir_lib    = '$PREFIX/lib'
Ivan Mahonin 833ed7
idir_inc    = '$PREFIX/include'
Ivan Mahonin 833ed7
env.Export('env idir_prefix idir_lib idir_inc')
Ivan Mahonin 833ed7
Ivan Mahonin 833ed7
pcdict = {
Ivan Mahonin 833ed7
	'@prefix@'        : idir_prefix,
Ivan Mahonin 833ed7
	'@exec_prefix@'   : '$${prefix}',
Ivan Mahonin 833ed7
	'@libdir@'        : ('$${exec_prefix}/lib' if idir_lib == '$PREFIX/lib' else idir_lib),
Ivan Mahonin 833ed7
	'@includedir@'    : ('$${prefix}/include' if idir_inc == '$PREFIX/include' else idir_inc) + '/' + name,
Ivan Mahonin 833ed7
	'@NAME@'          : name,
Ivan Mahonin 833ed7
	'@DESC@'          : description,
Ivan Mahonin 833ed7
	'@VERSION@'       : version,
Ivan Mahonin 833ed7
	'@DEPS@'          : ' '.join(libs),
Ivan Mahonin 833ed7
	'@CONFIG_LIBS@'   : '-l' + name,
Ivan Mahonin 833ed7
	'@CONFIG_CFLAGS@' : '',
Ivan Mahonin 833ed7
	}
Ivan Mahonin 833ed7
pcfile = env.Substfile(name + '.pc.in', SUBST_DICT = pcdict)
Ivan Mahonin 833ed7
Ivan Mahonin f8c1ea
env.Install(idir_lib, static_library)
Ivan Mahonin f8c1ea
env.InstallVersionedLib(idir_lib, shared_library)
Ivan Mahonin 833ed7
env.Install(idir_lib + '/pkgconfig', pcfile)
Ivan Mahonin 833ed7
env.Install(idir_inc + '/' + name + '/' + name, headers)
Ivan Mahonin 833ed7
env.Install(idir_inc + '/' + name, root_headers)
Ivan Mahonin 833ed7
env.Alias('install', idir_prefix)