diff --git a/CMakeLists.txt b/CMakeLists.txt index 73a52f30c35d16050fe94d1b49c390838a47f557..1f24a5348dbd4c6b73ca60f945c575b0b24b3b94 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,8 +2,6 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.8) PROJECT(MOOSE) set(MOOSE_VERSION "3.1.1") -include( ExternalProject ) - # Options to pass down to moose-core option(WITH_DOC "Build documentation" OFF) @@ -12,45 +10,76 @@ option(WITH_BOOST "Use Boost libraries instead of GSL" OFF) option(WITH_CUDA "Use CUDA/GPU" OFF) option(WITH_MPI "Use MPI" OFF) +find_package(PythonInterp REQUIRED) +add_custom_target(moose ALL) + ## intialize paths -set(MOOSE_CORE_SOURCE_DIR "${CMAKE_SOURCE_DIR}/moose-core") -set(MOOSE_CORE_BUILD_DIR ${CMAKE_BINARY_DIR}/_build_moose_core) -set(MOOSE_CORE_INSTALL_DIR ${CMAKE_BINARY_DIR}/_install_moose_core) -file(MAKE_DIRECTORY ${MOOSE_CORE_BUILD_DIR}) -set(DATA_DIR ${CMAKE_SOURCE_DIR}/data) +set(PYMOOSE_SOURCE_DIR "${CMAKE_SOURCE_DIR}/moose-core") +set(PYMOOSE_BUILD_DIR ${CMAKE_BINARY_DIR}/__moose_core_build) +set(PYMOOSE_INSTALL_DIR ${CMAKE_BINARY_DIR}/__moose_core_install) + +set(MOOSE_GUI_DIR ${CMAKE_SOURCE_DIR}/moose-gui) +set(MOOSE_GUI_INSTALL_DIR ${CMAKE_BINARY_DIR}/__moose-gui_install) + +set(MOOSE_EXAMPLE_DIR ${CMAKE_SOURCE_DIR}/moose-examples) +set(MOOSE_EXAMPLE_INSTALL_DIR ${CMAKE_BINARY_DIR}/__moose-examples_install) -set(OUTPUT_MOOSEBIN ${MOOSE_CORE_BUILD_DIR}/moose.bin) +file(MAKE_DIRECTORY ${PYMOOSE_BUILD_DIR}) + +# Its a good target since we can not be sure of python module extension on +# different platform. +set(OUTPUT_MOOSEBIN ${PYMOOSE_BUILD_DIR}/moose.bin) configure_file( ${CMAKE_SOURCE_DIR}/build_moose_core.sh.in ${CMAKE_BINARY_DIR}/build_moose_core.sh ) +# Build pymoose module. add_custom_target( moose-core ALL DEPENDS ${OUTPUT_MOOSEBIN} ) add_custom_command( OUTPUT ${OUTPUT_MOOSEBIN} COMMAND MAKE=$(MAKE) bash -c ${CMAKE_BINARY_DIR}/build_moose_core.sh VERBATIM ) -find_package(PythonInterp REQUIRED) +# Now build moose-gui and moose-examples. +add_custom_target( gui ALL + COMMAND ${CMAKE_COMMAND} -E copy_directory + ${MOOSE_GUI_DIR} ${MOOSE_GUI_INSTALL_DIR} + COMMENT "Building moose-gui" + VERBATIM + ) + +# Now copy moose-examples. +add_custom_command( TARGET gui POST_BUILD + COMAMND ${CMAKE_COMMAND} -E copy_directory + ${MOOSE_EXAMPLE_DIR} ${MOOSE_EXAMPLE_INSTALL_DIR} + VERBATIM + ) + +add_dependencies(moose moose-core gui) + ## moose-gui ## TODO: moose-gui should be a python module. set(MOOSE_GUI_DIR ${CMAKE_SOURCE_DIR}/moose-gui) -install(DIRECTORY ${MOOSE_CORE_INSTALL_DIR}/ +install(DIRECTORY ${PYMOOSE_INSTALL_DIR}/ DESTINATION ${CMAKE_INSTALL_PREFIX} PATTERN ".git" EXCLUDE ) -install(DIRECTORY ${MOOSE_GUI_DIR} +install(DIRECTORY ${MOOSE_GUI_INSTALL_DIR} DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/moose/gui PATTERN ".git" EXCLUDE ) -configure_file( ${CMAKE_SOURCE_DIR}/cmake/moose.in ${CMAKE_BINARY_DIR}/moose ) -install(PROGRAMS ${CMAKE_BINARY_DIR}/moose - DESTINATION bin +install(DIRECTORY ${MOOSE_EXAMPLE_DIR} + DESTINATION ${CMAKE_INSTALL_PREFIX} + PATTERN ".git" EXCLUDE ) +configure_file( ${CMAKE_SOURCE_DIR}/cmake/moose.in ${CMAKE_BINARY_DIR}/moose ) +install(PROGRAMS ${CMAKE_BINARY_DIR}/moose DESTINATION bin) + ## UNINSTALL add_custom_target(uninstall DEPENDS __uninstall_moose-core__ __uninstall_moose-gui__ @@ -65,16 +94,21 @@ add_custom_command(OUTPUT __uninstall_moose-core__ add_custom_command(OUTPUT __uninstall_moose-gui__ COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_INSTALL_PREFIX}/lib/moose/gui - COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_INSTALL_PREFIX}/bin/moosegui + COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_INSTALL_PREFIX}/bin/moose ) ################################################################################ # CTEST ################################################################################# enable_testing( ) -add_test( NAME test_pymoose_sanity COMMAND ${PYTHON_EXECUTABLE} -c "import moose") -add_test( NAME test_moogli_sanity COMMAND ${PYTHON_EXECUTABLE} -c "import moogli") +add_test( NAME test_pymoose_sanity + COMMAND ${PYTHON_EXECUTABLE} -c "import moose" + ) +add_test( NAME test_gui_sanity + COMMAND ${PYTHON_EXECUTABLE} ${MOOSE_GUI_INSTALL_DIR}/mgui.py + WORKING_DIRECTORY ${MOOSE_GUI_INSTALL_DIR} + ) -set_tests_properties( test_pymoose_sanity test_moogli_sanity - PROPERTIES ENVIRONMENT "PYTHONPATH=${MOOSE_CORE_BUILD_DIR}/python" +set_tests_properties( test_pymoose_sanity + PROPERTIES ENVIRONMENT "PYTHONPATH=${PYMOOSE_BUILD_DIR}/python" ) diff --git a/build_moose_core.sh.in b/build_moose_core.sh.in index ca3efbedd56972af545f3921016e671b41b69894..a42f723ac694efb14c6811051eaa58b25ffc788b 100755 --- a/build_moose_core.sh.in +++ b/build_moose_core.sh.in @@ -10,10 +10,13 @@ fi echo "Building MOOSE" ( - cd @MOOSE_CORE_BUILD_DIR@ - cmake -DCMAKE_INSTALL_PREFIX=@MOOSE_CORE_INSTALL_DIR@ \ - @CMAKE_MOOSE_CORE_ARGS@ \ - @MOOSE_CORE_SOURCE_DIR@ + export GSL_ROOT_DIR=@GSL_ROOT_DIR@ + export HDF5_ROOT=@HDF5_ROOT@ + cd @PYMOOSE_BUILD_DIR@ + cmake -DCMAKE_INSTALL_PREFIX=@PYMOOSE_INSTALL_DIR@ \ + -DCMAKE_BUILD_TYPE=Release \ + @CMAKE_PYMOOSE_ARGS@ \ + @PYMOOSE_SOURCE_DIR@ $MAKE ctest -V || echo "Some tests failed" $MAKE install diff --git a/moose-core/CMakeLists.txt b/moose-core/CMakeLists.txt index 1be4010205191f76caaa704a2d46aaf7a248f170..60acdcd6c3bd4ed1fe72ec2519a9cb2017097aab 100644 --- a/moose-core/CMakeLists.txt +++ b/moose-core/CMakeLists.txt @@ -285,7 +285,7 @@ endif(WITH_BOOST) # these two types because of --whole-archive option. See # BhallaLab/moose-core#66, if(WITH_GSL) - message(STATUS "Using STATIC gsl libraries: ${GSL_LIBRARIES}") + message(STATUS "Using gsl libraries: ${GSL_LIBRARIES}") foreach(GSL_LIB ${GSL_LIBRARIES} ) if(GSL_LIB) get_filename_component( GSL_LIB_EXT ${GSL_LIB} EXT ) diff --git a/moose-core/VERSION b/moose-core/VERSION index 5d81ec098289586638c2a5ef92effb6b018da44c..0eac0f049d7a3a484d117933bb24a319e65ed444 100644 --- a/moose-core/VERSION +++ b/moose-core/VERSION @@ -1 +1 @@ -3.1.1-66-gc180075 \ No newline at end of file +3.1.1-67-g5dd1e81 \ No newline at end of file