--- a/setup.py
+++ b/setup.py
@@ -18,6 +18,29 @@ development tools, excellent documentati
 support and extension packages.
 '''
 
+# Build extensions
+import numpy
+from os.path import join
+from distutils.core import Extension
+
+ext_modules = []
+utils_path = join('brian', 'utils')
+ext_modules.append(Extension('brian.utils.fastexp._fastexp',
+							 sources=[join(utils_path, 'fastexp', x) for x in
+									  ('fastexp_wrap.cxx',
+									   'fastexp.cpp',
+									   'fexp.c')],
+							 include_dirs=[numpy.get_include()],
+							 extra_compile_args=['-O3']
+							 ))
+ext_modules.append(Extension('brian.utils.ccircular._ccircular',
+							 sources=[join(utils_path, 'ccircular', x) for x in
+									  ('ccircular_wrap.cxx',
+									   'circular.cpp')],
+							 include_dirs=[numpy.get_include()],
+							 extra_compile_args=['-O3']
+							 ))
+
 setup(name='brian',
   version=version,
   py_modules=['brian_unit_prefs', 'brian_no_units', 'brian_no_units_no_warnings'],
@@ -53,8 +76,7 @@ setup(name='brian',
                     'brian.utils.fastexp',
                     'brian.utils.sparse_patch',
             ],
-  package_data={'brian.utils.ccircular':['*.cxx', '*.h', '*.i', '*.cpp', '*.bat'],
-                'brian.utils.fastexp':['*.cxx', '*.h', '*.i', '*.cpp', '*.bat', '*.c']},
+  ext_modules=ext_modules,
   requires=['matplotlib(>=0.90.1)',
             'numpy(>=1.4.1)',
             'scipy(>=0.7.0)'
