tCMakeLists.txt - pism - [fork] customized build of PISM, the parallel ice sheet model (tillflux branch)
(HTM) git clone git://src.adamsgaard.dk/pism
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) LICENSE
---
tCMakeLists.txt (3912B)
---
1 if (Pism_BUILD_PYTHON_BINDINGS)
2 include(${SWIG_USE_FILE})
3
4 include_directories (. ${PETSC4PY_INCLUDES} ${PYTHON_INCLUDE_DIRS} ${Pism_SOURCE_DIR}/src)
5
6 set(PISM_PYTHON_BINDING_LIBRARIES "pism")
7
8 list(APPEND PISM_Python_deps
9 AgeModel.i
10 geometry.i
11 pism_BedDef.i
12 pism_ColumnSystem.i
13 pism_DM.i
14 pism_FlowLaw.i
15 pism_Hydrology.i
16 pism_IceGrid.i
17 pism_IceModelVec.i
18 pism_File.i
19 pism_SIA.i
20 pism_SSA.i
21 pism_Timeseries.i
22 pism_VariableMetadata.i
23 pism_Vars.i
24 pism_Vec.i
25 pism_atmosphere.i
26 pism_energy.i
27 pism_exception.i
28 pism_inverse.i
29 pism_ocean.i
30 pism_options.i
31 pism_surface.i
32 pism_verification.i
33 pism_frontalmelt.i
34 pism_calving.i
35 )
36
37 set_property(SOURCE PISM.i PROPERTY SWIG_FLAGS "-I${CMAKE_BINARY_DIR}" APPEND)
38
39 if(Pism_USE_JANSSON)
40 set_property(SOURCE PISM.i PROPERTY SWIG_FLAGS "-DPism_USE_JANSSON=1" APPEND)
41 else()
42 set_property(SOURCE PISM.i PROPERTY SWIG_FLAGS "-DPism_USE_JANSSON=0" APPEND)
43 endif()
44
45 set_source_files_properties(PISM.i PROPERTIES
46 CPLUSPLUS ON
47 SWIG_MODULE_NAME cpp)
48
49 # has to be set *before* calling SWIG_ADD_MODULE
50 set(SWIG_MODULE_cpp_EXTRA_DEPS ${PISM_Python_deps})
51
52 if (${CMAKE_VERSION} VERSION_LESS "3.8.0")
53 SWIG_ADD_MODULE(cpp python PISM.i pism_python.cc)
54 else()
55 SWIG_ADD_LIBRARY(cpp
56 LANGUAGE python
57 SOURCES PISM.i pism_python.cc)
58 endif()
59 SWIG_LINK_LIBRARIES(cpp ${PYTHON_LIBRARIES} ${PISM_PYTHON_BINDING_LIBRARIES})
60
61 # Disable compiler warnings:
62 SET_SOURCE_FILES_PROPERTIES(${swig_generated_file_fullname}
63 PROPERTIES COMPILE_FLAGS "-w")
64
65 add_custom_target (clean_swig
66 COMMAND ${CMAKE_COMMAND} -E touch PISM.i
67 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
68 VERBATIM)
69
70 # Disable compiler warnings:
71 SET_SOURCE_FILES_PROPERTIES(${swig_generated_file_fullname}
72 PROPERTIES COMPILE_FLAGS "-w")
73
74 # Generate version_info.py to make PETSc's version information available to PISM's
75 # Python bindings. This is necessary to initialize petsc4py using the correct PETSC_ARCH
76 # value *before* importing PISM.cpp.
77 configure_file(version_info.py.in version_info.py ESCAPE_QUOTES)
78
79 # Install Python .py files
80 install(FILES
81 $<TARGET_FILE:_cpp>
82 ${CMAKE_CURRENT_BINARY_DIR}/cpp.py
83 ${CMAKE_CURRENT_BINARY_DIR}/version_info.py
84 DESTINATION ${PISM_INSTALL_PYTHON_MODULE_DIR}/PISM
85 COMPONENT RuntimeLibraries
86 )
87
88 add_custom_target (install_python_bindings_in_the_build_directory ALL
89 COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:_cpp> ${CMAKE_BINARY_DIR}/site-packages/PISM
90 COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/cpp.py ${CMAKE_BINARY_DIR}/site-packages/PISM/
91 COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/version_info.py ${CMAKE_BINARY_DIR}/site-packages/PISM/
92 VERBATIM
93 DEPENDS ${SWIG_MODULE_cpp_REAL_NAME} install_site_packages_in_the_build_directory )
94
95 # The Python code snippet below returns 1 if Python can import a PISM
96 # and if the directory of said PISM matches the place we are about to
97 # install PISM's Python wrappers. If the return value is not 1, we
98 # print a message stating how to set your PYTHONPATH.
99 set (pism_test_py "${PROJECT_BINARY_DIR}/pism_test.py")
100 file (WRITE "${pism_test_py}" "
101 from os.path import realpath, join
102 try:
103 import PISM
104 except:
105 exit(0)
106
107 if realpath(PISM.__file__) == realpath(join('${PISM_INSTALL_PYTHON_MODULE_DIR}', 'PISM', '__init__.pyc')):
108 exit(1)
109 ")
110
111 install(CODE "EXEC_PROGRAM( ${PYTHON_EXECUTABLE} ARGS ${pism_test_py} RETURN_VALUE PISM_PYTHON_MATCHES OUTPUT_VARIABLE PYTHON_OUT )
112 if(NOT PISM_PYTHON_MATCHES)
113 MESSAGE(\"\n ATTENTION! To complete installation of Python bindings you need to add\n\n export PYTHONPATH=${PISM_INSTALL_PYTHON_MODULE_DIR}:\$PYTHONPATH\n\n to your .bashrc or equivalent. \")
114 endif()
115 " )
116
117 endif(Pism_BUILD_PYTHON_BINDINGS)