diff --git a/CMakeLists.txt b/CMakeLists.txt index ccdeefbe38d122df714110ab4e4e6d04a041b8ab..d72d8060469570ad5eb331f889169cb15c985af8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,41 +1,62 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.8) -PROJECT(moose) - -## Default install prefix. When building packages, such as on launchpad, we need -## to modify installation prefix. -if(DEVELOPER) - option(CMAKE_INSTALL_PREFIX "Install prefix" ${CMAKE_BINARY_DIR}/_install) -else() - option(CMAKE_INSTALL_PREFIX "Install prefix" /usr) -endif() +PROJECT(moose-all) ## intialize paths set(MOOSE_CORE_DIR "${CMAKE_SOURCE_DIR}/moose-core") set(MOOSE_CORE_BUILD_DIR ${CMAKE_BINARY_DIR}/_build_moose_core) -set(MOOSE_CORE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}") +FILE(MAKE_DIRECTORY ${MOOSE_CORE_BUILD_DIR}) set(DATA_DIR ${CMAKE_SOURCE_DIR}/data) -include(ExternalProject) -message("[INFO] Installtion directory is ${CMAKE_INSTALL_PREFIX}") -ExternalProject_Add( moose-core - PREFIX ${CMAKE_CURRENT_BINARY_DIR}/__moose-core - SOURCE_DIR ${MOOSE_CORE_DIR} - # Extremely useful in packaging - #BINARY_DIR ${MOOSE_CORE_INSTALL_DIR} - CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} - TEST_COMMAND ctest --output-on-failure - TEST_BEFORE_INSTALL 1 - BUILD_IN_SOURCE 0 -) +add_custom_command(OUTPUT __moose_core_built__ + COMMAND ${CMAKE_COMMAND} + -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} + -DDEBUG=OFF + ${MOOSE_CORE_DIR} + COMMAND $(MAKE) + WORKING_DIRECTORY ${MOOSE_CORE_BUILD_DIR} + VERBATIM + ) + +add_custom_target(moose-all ALL + DEPENDS __moose_core_built__ + ) + +install(CODE + " + execute_process(COMMAND ctest --output-on-failure + WORKING_DIRECTORY ${MOOSE_CORE_BUILD_DIR}) + + execute_process(COMMAND ${CMAKE_COMMAND} install + WORKING_DIRECTORY ${MOOSE_CORE_BUILD_DIR}) + " + ) ## moose-gui ## TODO: moose-gui should be a python module. set(MOOSE_GUI_DIR ${CMAKE_SOURCE_DIR}/moose-gui) -set(MOOSE_GUI_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/share/moose/gui) -add_custom_target(moose-gui ALL) -add_custom_command(TARGET moose-gui - POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_directory ${MOOSE_GUI_DIR} ${MOOSE_GUI_INSTALL_DIR} - COMMAND ${CMAKE_COMMAND} -E copy ${DATA_DIR}/moosegui ${CMAKE_INSTALL_PREFIX}/bin/ + +install(DIRECTORY ${MOOSE_GUI_DIR} + PATTERN ".git" EXCLUDE + DESTINATION lib/moose/gui ) +install(PROGRAMS ${DATA_DIR}/moosegui + DESTINATION bin + ) + +## UNINSTALL +add_custom_target(uninstall + DEPENDS __uninstall_moose-core__ __uninstall_moose-gui__ + ) + +add_custom_command(OUTPUT __uninstall_moose-core__ + COMMAND make uninstall + WORKING_DIRECTORY ${MOOSE_CORE_BUILD_DIR} + ) + +add_custom_command(OUTPUT __uninstall_moose-gui__ + COMMAND ${CMAKE_COMMAND} -E remove_directory + ${CMAKE_INSTALL_PREFIX}/usr/lib/moose + COMMAND ${CMAKE_COMMAND} -R remove ${CMAKE_INSTALL_PREFIX}/bin/moosegui + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + ) diff --git a/README.md b/README.md index 9d5d0a977b4aa69b89a3724c42e19bd57b4e9ae1..82b47aca35d716d7fe80e4226c7815f0633c19d3 100644 --- a/README.md +++ b/README.md @@ -5,11 +5,17 @@ python scripting interface and its GUI. For more details about these projects, read respective README files. -# Install - -~~~~ -./boostrap -cmake . -make -sudo make install -~~~~ +# Installation using cmake + +First, run the `bootstrap` script. It will fetch the submodules and/or update +them. You should have `cmake` installed on your system to build and install +moose from this repository. + + cmake . + make + sudo make install + +To uninstall moose, do the following in the same directory where you ran +previous `make install` command. + + sudo make uninstall diff --git a/data/moosegui b/data/moosegui index 4d8e95bd443965601c588a356f8a6d688db3ca07..2bd54687af0719a6dddfa2641445327053faa1bd 100755 --- a/data/moosegui +++ b/data/moosegui @@ -1,2 +1,2 @@ #!/bin/bash -( cd /usr/share/moose/gui && python mgui.py ) +( cd /usr/lib/moose/gui && python mgui.py )