From: Klee Dienes <klee.dienes@hadronindustries.com>
Date: Sat, 19 Apr 2014 22:18:50 -0400
Subject: Update python cmakefile

---
 CMakeLists.txt               |  4 +++
 scripting/CMakeLists.txt     | 68 ++++++++++++++++++++++++++++++++++++++++++++
 scripting/python/setup.py.in | 25 ++++++++++++++++
 3 files changed, 97 insertions(+)
 create mode 100644 scripting/CMakeLists.txt
 create mode 100644 scripting/python/setup.py.in

diff --git a/CMakeLists.txt b/CMakeLists.txt
index f9e4960..7118d89 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,3 +1,5 @@
+cmake_minimum_required(VERSION 2.8)
+
 PROJECT(ccl)
 SET(VERSION 3.3.3)
 
@@ -503,3 +505,5 @@ INSTALL(FILES
 IF(CMAKE_COMPILER_IS_GNUCXX)
     INSTALL(FILES ${CMAKE_BINARY_DIR}/cigicl.pc DESTINATION lib/${CMAKE_LIBRARY_ARCHITECTURE}/pkgconfig)
 ENDIF()
+
+ADD_SUBDIRECTORY(scripting)
diff --git a/scripting/CMakeLists.txt b/scripting/CMakeLists.txt
new file mode 100644
index 0000000..1425a31
--- /dev/null
+++ b/scripting/CMakeLists.txt
@@ -0,0 +1,68 @@
+cmake_minimum_required(VERSION 2.8)
+
+if(NOT CMAKE_USE_INTERNAL_PYTHON_PACKAGING)
+
+find_program(PYTHON "python")
+find_program(PYTHON3 "python3")
+
+set(SETUP_PY_IN "${CMAKE_CURRENT_SOURCE_DIR}/python/setup.py.in")
+set(SETUP_PY "${CMAKE_CURRENT_BINARY_DIR}/setup.py")
+set(DEPS "${CMAKE_CURRENT_SOURCE_DIR}/swig.i" "${CMAKE_CURRENT_SOURCE_DIR}/python/setup.py.in")
+set(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/build/stamp-python")
+set(OUTPUT3 "${CMAKE_CURRENT_BINARY_DIR}/build/stamp-python3")
+
+configure_file(${SETUP_PY_IN} ${SETUP_PY})
+
+add_custom_command(OUTPUT ${OUTPUT}
+  COMMAND ${PYTHON} ${SETUP_PY} build
+  COMMAND ${CMAKE_COMMAND} -E touch ${OUTPUT}
+  DEPENDS ${DEPS} cigicl-shared)
+
+add_custom_command(OUTPUT ${OUTPUT3}
+  COMMAND ${PYTHON3} ${SETUP_PY} build
+  COMMAND ${CMAKE_COMMAND} -E touch ${OUTPUT3}
+  DEPENDS ${DEPS} cigicl-shared)
+
+add_custom_target(target ALL DEPENDS ${OUTPUT})
+add_custom_target(target3 ALL DEPENDS ${OUTPUT3})
+
+install(CODE "execute_process(COMMAND ${PYTHON} ${SETUP_PY} install --root=\$ENV{DESTDIR}${CMAKE_INSTALL_ROOT} --install-layout=deb)")
+install(CODE "execute_process(COMMAND ${PYTHON3} ${SETUP_PY} install --root=\$ENV{DESTDIR}${CMAKE_INSTALL_ROOT} --install-layout=deb)")
+
+else()
+
+FIND_PACKAGE(SWIG REQUIRED)
+INCLUDE(${SWIG_USE_FILE})
+
+SET(CMAKE_SWIG_FLAGS "-Wall")
+
+FIND_PACKAGE(PythonLibs)
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
+
+execute_process(COMMAND python -c "from distutils.sysconfig import get_python_lib; print (get_python_lib())" OUTPUT_VARIABLE PYTHON_SITE_PACKAGES OUTPUT_STRIP_TRAILING_WHITESPACE)
+execute_process(COMMAND python3 -c "from distutils.sysconfig import get_python_lib; print (get_python_lib())" OUTPUT_VARIABLE PYTHON3_SITE_PACKAGES OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+execute_process(COMMAND python -c "from distutils.sysconfig import get_python_inc; print (get_python_inc())" OUTPUT_VARIABLE PYTHON_INC_PATH OUTPUT_STRIP_TRAILING_WHITESPACE)
+execute_process(COMMAND python3 -c "from distutils.sysconfig import get_python_inc; print (get_python_inc())" OUTPUT_VARIABLE PYTHON3_INC_PATH OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+SET_SOURCE_FILES_PROPERTIES(swig.i PROPERTIES CPLUSPLUS ON)
+SET_SOURCE_FILES_PROPERTIES(swig.i PROPERTIES SWIG_MODULE_NAME cigi)
+SET_PROPERTY(SOURCE swig.i PROPERTY SWIG_FLAGS "-builtin" "-DCIGI_SPEC")
+
+SWIG_ADD_MODULE(cigi-python2 python swig.i)
+SWIG_LINK_LIBRARIES(cigi-python2 cigicl-shared)
+TARGET_INCLUDE_DIRECTORIES(_cigi-python2 PRIVATE ${PYTHON_INC_PATH})
+SET_TARGET_PROPERTIES(_cigi-python2 PROPERTIES OUTPUT_NAME _cigi)
+
+SWIG_ADD_MODULE(cigi-python3 python swig.i)
+SWIG_LINK_LIBRARIES(cigi-python3 cigicl-shared)
+TARGET_INCLUDE_DIRECTORIES(_cigi-python3 PRIVATE ${PYTHON3_INC_PATH})
+SET_TARGET_PROPERTIES(_cigi-python3 PROPERTIES OUTPUT_NAME _cigi)
+
+INSTALL(TARGETS _cigi-python2 DESTINATION ${PYTHON_SITE_PACKAGES})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/scripting/cigi.py DESTINATION ${PYTHON_SITE_PACKAGES})
+
+INSTALL(TARGETS _cigi-python3 DESTINATION ${PYTHON3_SITE_PACKAGES})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/scripting/cigi.py DESTINATION ${PYTHON3_SITE_PACKAGES})
+
+endif(NOT CMAKE_USE_INTERNAL_PYTHON_PACKAGING)
\ No newline at end of file
diff --git a/scripting/python/setup.py.in b/scripting/python/setup.py.in
new file mode 100644
index 0000000..a995cf9
--- /dev/null
+++ b/scripting/python/setup.py.in
@@ -0,0 +1,26 @@
+from distutils.core import Extension, setup
+import distutils.core
+from distutils.command.build import build
+import os
+
+class my_build(build):
+    def run(self):
+        os.system ('mv -f ${CMAKE_CURRENT_SOURCE_DIR}/cigi.py ${CMAKE_CURRENT_SOURCE_DIR}/__init__.py')
+        build.run(self)
+
+module = Extension('cigi._cigi',
+                   sources=['${CMAKE_CURRENT_SOURCE_DIR}/swig.i'],
+                   libraries = ['cigicl'],
+                   library_dirs = ['${CMAKE_CURRENT_BINARY_DIR}/../lib'],
+                   include_dirs=['${CMAKE_CURRENT_SOURCE_DIR}/../include'],
+                   swig_opts=['-c++', '-py3', '-I${CMAKE_CURRENT_SOURCE_DIR}/../include', '-builtin', '-DCIGI_SPEC'],
+                   extra_compile_args=['-Wno-write-strings'])
+
+setup(cmdclass=dict(build=my_build),
+      name='cigi',
+      version='${PACKAGE_VERSION}',
+      ext_modules=[module],
+      packages = ['cigi'],
+      package_dir={ '': '${CMAKE_CURRENT_SOURCE_DIR}/python',
+                    'cigi': '${CMAKE_CURRENT_SOURCE_DIR}' }
+)
