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 9c0711
WITH_FULL_UNICODE_FONT = ARGUMENTS.get('WITH_FULL_UNICODE_FONT', 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 a20939
libs = ['sdl2', 'SDL2_mixer', 'SDL2_image', 'freetype2']
Ivan Mahonin f63775
ldflags = ' -lGL '
Ivan Mahonin 833ed7
Ivan Mahonin 833ed7
Ivan Mahonin 833ed7
# compute build options
Ivan Mahonin 833ed7
Ivan Mahonin f63775
flags = ' -lm -Wall -fmessage-length=0 ' + ldflags
Ivan Mahonin f34b93
if int(DEBUG):
Ivan Mahonin f8c1ea
	flags += ' -O0 -g -fdebug-prefix-map=src=../src'
Ivan Mahonin f34b93
else:
Ivan Mahonin 2406d3
	flags += ' -O3 -DNDEBUG '
Ivan Mahonin 833ed7
Ivan Mahonin 9c0711
if int(WITH_FULL_UNICODE_FONT):
Ivan Mahonin 9c0711
	flags += ' -DWITH_FULL_UNICODE_FONT'
Ivan Mahonin 9c0711
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 dba3fc
	'animation.h',
Ivan Mahonin 833ed7
	'common.h',
Ivan Mahonin 7ac038
	'colors.h',
Ivan Mahonin 833ed7
	'drawing.h',
Ivan Mahonin a20939
	'font.h',
Ivan Mahonin 1d641c
	'framebuffer.h',
Ivan Mahonin 833ed7
	'group.h',
Ivan Mahonin ca6bde
	'sound.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 a20939
	'font.c',
Ivan Mahonin 1d641c
	'framebuffer.c',
Ivan Mahonin 8bc1f1
	'geometry.c',
Ivan Mahonin deef1d
	'gl.c',
Ivan Mahonin 833ed7
	'group.c',
Ivan Mahonin 833ed7
	'test.c',
Ivan Mahonin 833ed7
	'sound.c',
Ivan Mahonin 833ed7
	'sprite.c',
Ivan Mahonin a20939
	'world.c',
Ivan Mahonin a20939
	'worldui.c',
Ivan Mahonin a20939
	'blob.S' ]
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 f63775
	'@CONFIG_LIBS@'   : '-l' + name + ldflags,
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)