#!/usr/bin/env python # encoding: utf-8 # Thomas Nagy, 2010 from waflib import Logs APPNAME = 'wafcython' VERSION = '1.0' top = '.' out = 'build' def options(ctx): ctx.load('compiler_c') ctx.load('compiler_cxx') ctx.load('python') ctx.load('cython') ctx.load('cython_cache', tooldir='.') def configure(ctx): ctx.load('compiler_c') ctx.load('compiler_cxx') ctx.load('python') ctx.check_python_headers() try: ctx.load('cython') except ctx.errors.ConfigurationError: Logs.warn('Cython was not found, using the cache') def build(ctx): # a C library ctx(features = 'c cshlib', source = 'c_lib/lib.c', target = 'c_lib', includes = 'c_lib') # a C++ library ctx(features = 'cxx cxxshlib', source = 'cxx_lib/lib.cxx', target = 'cxx_lib', includes = 'cxx_lib') # first try to build a C-based cython extension ctx( features = 'c cshlib pyext', source = 'src/cy_ctest.pyx', target = 'cy_ctest', includes = 'c_lib', use = 'c_lib') # then a C++-based one ctx( features = 'cxx cxxshlib pyext', source = 'src/cy_cxxtest.pyx', target = 'cy_cxxtest', includes = 'cxx_lib', use = 'cxx_lib') # a C++ application which uses a C function from a cython module ctx( features = 'cxx cxxprogram pyembed', source = 'cxx_lib/app.cxx', target = 'cy-app', includes = 'cxx_lib src', use = 'cxx_lib' )