| # -*- python -*- | |
| Decider('MD5') | |
| import fnmatch | |
| import os | |
| vars = Variables() | |
| vars.Add(BoolVariable('DEBUG', 'Set to disable optimizations', 1)) | |
| vars.Add(BoolVariable('PIC', 'Set to 1 for to always generate PIC code', 0)) | |
| env = Environment(variables = vars) | |
| # env.Replace(CXX = "clang++") | |
| debug = env['DEBUG'] | |
| compile_options = {} | |
| flags = [] | |
| if debug: | |
| #compile_options['CPPDEFINES'] = "-DDEBUG" | |
| flags.append("-O0 -g3 -ggdb -Wall") | |
| else: | |
| flags.append("-Os -g3 -Wall") | |
| if env['PIC']: | |
| flags.append("-fPIC") | |
| flags.append("-Wextra -Werror") | |
| # Can't enable unless we get rid of the dynamic variable length arrays | |
| # flags.append("-pedantic") | |
| compile_options['CXXFLAGS'] = ' '.join(flags) | |
| compile_options['LINKFLAGS'] = "-ldl -L/usr/lib -L/opt/local/lib" | |
| def all_files(dir, ext='.cpp', level=6): | |
| files = [] | |
| for i in range(1, level): | |
| files += Glob(dir + ('/*' * i) + ext) | |
| return files | |
| magick_include = ['/usr/include/ImageMagick/', '/opt/local/include/ImageMagick/'] | |
| magick_libs = ['Magick++', 'MagickWand', 'MagickCore'] | |
| # check for existence of libiconv and add it to magick_libs if possible | |
| matches = [] | |
| for root, dirnames, filenames in os.walk('/usr/lib/'): | |
| for filename in fnmatch.filter(filenames, 'libiconv.*'): | |
| matches.append(os.path.join(root, filename)) | |
| if matches: | |
| magick_libs.append('iconv') | |
| cppunit_include = ['/opt/local/include/'] | |
| cppunit_libs = ['cppunit'] | |
| zxing_files = all_files('core/src') | |
| zxing_include = ['core/src'] | |
| zxing_libs = env.Library('zxing', source=zxing_files, CPPPATH=zxing_include, **compile_options) | |
| app_files = ['magick/src/MagickBitmapSource.cpp', 'magick/src/main.cpp'] | |
| app_executable = env.Program('zxing', app_files, CPPPATH=magick_include + zxing_include, LIBS=zxing_libs + magick_libs, **compile_options) | |
| test_files = all_files('core/tests/src') | |
| test_executable = env.Program('testrunner', test_files, CPPPATH=zxing_include + cppunit_include, LIBS=zxing_libs + cppunit_libs, **compile_options) | |
| Alias('lib', zxing_libs) | |
| Alias('tests', test_executable) | |
| Alias('zxing', app_executable) | |