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)