#!/usr/bin/env python import os from waflib.extras import autowaf as autowaf # Version of this package (even if built as a child) EUGENE_VERSION = '0.0.0' # Library version (UNIX style major, minor, micro) # major increment <=> incompatible changes # minor increment <=> compatible changes (additions) # micro increment <=> no interface changes # Version history: # 0.0.0 = 0,0,0 EUGENE_LIB_VERSION = '0.0.0' # Variables for 'waf dist' APPNAME = 'eugene' VERSION = EUGENE_VERSION # Mandatory variables top = '.' out = 'build' def options(opt): opt.load('compiler_cxx') autowaf.set_options(opt) def configure(conf): conf.load('compiler_cxx') autowaf.configure(conf) autowaf.display_header('Eugene Configuration') autowaf.check_pkg(conf, 'ganv-1', uselib_store='GANV', atleast_version='1.0.0', mandatory=True) autowaf.check_pkg(conf, 'glibmm-2.4', uselib_store='GLIBMM', atleast_version='2.14.0', mandatory=True) autowaf.check_pkg(conf, 'gthread-2.0', uselib_store='GTHREAD', atleast_version='2.16.0', mandatory=True) autowaf.check_pkg(conf, 'gtkmm-2.4', uselib_store='GTKMM', atleast_version='2.11.12', mandatory=True) autowaf.check_pkg(conf, 'libglademm-2.4', uselib_store='GLADEMM', atleast_version='2.6.0', mandatory=True) autowaf.check_pkg(conf, 'libgnomecanvasmm-2.0', uselib_store='GNOMECANVAS', mandatory=True) # Boost headers autowaf.check_header(conf, 'cxx', 'boost/shared_ptr.hpp') autowaf.check_header(conf, 'cxx', 'boost/weak_ptr.hpp') conf.env.append_value('CXXFLAGS', '-fopenmp') conf.env.append_value('LINKFLAGS', '-fopenmp') autowaf.define(conf, 'EUGENE_DATA_DIR', os.path.join(conf.env['PREFIX'], 'share', 'eugene')) conf.write_config_header('eugene_config.h', remove=False) def build(bld): # Headers bld.install_files('${INCLUDEDIR}/eugene', bld.path.ant_glob('eugene/*.hpp')) # Pkgconfig file autowaf.build_pc(bld, 'EUGENE', EUGENE_VERSION, '', 'GLIBMM GTHREAD') # Library obj = bld(features = 'cxx cxxshlib') obj.source = ''' src/LABS.cpp src/Sphere.cpp src/TSP.cpp ''' obj.export_includes = ['.'] obj.includes = ['.', './src'] obj.name = 'libeugene' obj.target = 'eugene' obj.uselib = 'GLIBMM GTHREAD' obj.vnum = EUGENE_LIB_VERSION obj.install_path = '${LIBDIR}' # Console app prog = bld(features = 'cxx cxxprogram') prog.source = 'src/eugene.cpp' obj.includes = ['.', './src'] prog.use = 'libeugene' prog.target = 'src/eugene' prog.install_path = '${BINDIR}' # GUI app prog = bld(features = 'cxx cxxprogram') prog.source = ''' gui/MainWindow.cpp gui/TSPCanvas.cpp gui/eugene_tsp_gui.cpp ''' obj.includes = ['.', './src', './gui'] prog.use = 'libeugene' prog.uselib = 'GTKMM GLADEMM GTHREAD GNOMECANVAS GANV' prog.target = 'gui/eugene_tsp_gui' prog.install_path = '${BINDIR}' bld.install_files('${PREFIX}/share/eugene', 'gui/eugene_tsp_gui.glade') bld.add_post_fun(autowaf.run_ldconfig)