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