ecl_build_utilities.cmake
Go to the documentation of this file.
00001 ###############################################################################
00002 # Build utilities
00003 ###############################################################################
00004 
00005 #ifdef DOXYGEN_SHOULD_SKIP_THIS
00006 
00007 ###############################
00008 # Download
00009 ###############################
00010 # Adds a custom command for downloading a url to a 
00011 # particular file.
00012 #
00013 # Depends : -
00014 # Outputs : ${file}
00015 #
00016 # Note: ${file} can be 
00017 # - relative in which case it is rel to ${CMAKE_BINARY_DIR}
00018 # - absolute (e.g. ${CMAKE_BINARY_DIR}/dude.tar.gz
00019 #
00020 # Example:
00021 #
00022 #   URL=http://snorriheim.dnsdojo.com/tmp/${TARBALL}
00023 #   TARBALL=dude.tar.gz
00024 #   ecl_download(${URL} ${TARBALL})
00025 #
00026 macro(ecl_download url file)
00027     add_custom_command(OUTPUT ${file}
00028         COMMAND wget ${url} -O ${file}
00029         WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
00030         COMMENT "Downloading ${url}->${file}."
00031         )
00032 endmacro()
00033 
00034 ###############################
00035 # Extract
00036 ###############################
00037 # Adds a custom command for untar'ing a tarball in the specified dir.
00038 #
00039 # Depends : ${tarball}
00040 # Outputs : ${dir}/extracted
00041 # 
00042 # Example:
00043 # 
00044 #   TARBALL=${CMAKE_BINARY_DIR}/dude.tar.gz
00045 #   URL=http://snorriheim.dnsdojo.com/tmp/${TARBALL}
00046 #   ecl_download(${TARBALL} ${URL})
00047 #   ecl_extract_tarball(${TARBALL} ${CMAKE_BINARY_DIR}/fakeroot) 
00048 #
00049 macro(ecl_extract_tarball tarball dir)
00050     add_custom_command(OUTPUT ${dir}/extracted
00051         COMMAND mkdir -p ${dir}
00052         COMMAND tar -xvzf ${tarball} -C ${dir}
00053         COMMAND touch ${dir}/extracted
00054         DEPENDS ${tarball}
00055         WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
00056         COMMENT "Extracting ${tarball} -> ${dir}."
00057         VERBATIM
00058         )
00059 endmacro()
00060 
00061 # Similar to the untarball command, but for bzips.
00062 #
00063 macro(ecl_extract_bzip2 bzip2 dir)
00064     add_custom_command(OUTPUT ${dir}/extracted
00065         COMMAND tar -xvjf ${bzip2} -C ${dir}
00066         COMMAND touch ${dir}/extracted
00067         DEPENDS ${bzip2}
00068         WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
00069         COMMENT "Extracting ${bzip2} -> ${dir}."
00070         VERBATIM
00071         )
00072 endmacro()
00073 
00074 ###############################
00075 # Autotools Compile
00076 ###############################
00077 # This adds a custom command for a typical autotools compile.
00078 # Be sure to set up the configure command correctly before calling.
00079 #
00080 # Depends: ${depends} (input argument)
00081 # Outputs: ${dir}/compiled
00082 #
00083 macro(ecl_autotools_compile configure_command dir depends)
00084     add_custom_command(OUTPUT ${dir}/compiled
00085         COMMAND ${configure_command}
00086         COMMAND make $ENV{ROS_PARALLEL_JOBS} # If not ros, then that is just empty anyway
00087         COMMAND make install
00088         COMMAND touch ${dir}/compiled
00089         DEPENDS ${depends}
00090         WORKING_DIRECTORY ${dir}
00091         COMMENT "Compiling ${dir}."
00092         VERBATIM
00093         )
00094 endmacro()
00095 
00096 ###############################
00097 # Uninstall
00098 ###############################
00099 # Creates an uninstall target.
00100 # 
00101 # To do this, it needs to find the uninstall template and prep it.
00102 # In ros, we can grab it from ecl_build, otherwise we use pkgconfig
00103 # to find it from an already installed ecl.
00104 macro(ecl_add_uninstall_target)
00105 
00106     # Find the template
00107     if(ROSBUILD_init_called)
00108         rosbuild_find_ros_package(ecl_build)
00109         set(ECL_CMAKE_TEMPLATES_PATH ${ecl_build_PACKAGE_PATH}/cmake/templates)
00110     else()
00111         find_package(PkgConfig)
00112         if(PKG_CONFIG_FOUND)
00113             PKG_CHECK_MODULES(ECL_CMAKE ecl_cmake)
00114             set(ECL_CMAKE_TEMPLATES_PATH ${ECL_CMAKE_PREFIX}/templates)
00115         else()
00116             message(FATAL_ERROR "Ecl cmake modules path not found (missing pkgconfig?).")
00117         endif()
00118     endif()
00119     
00120     # Prep it
00121     configure_file(
00122         "${ECL_CMAKE_TEMPLATES_PATH}/uninstall.cmake.in"
00123         "${CMAKE_CURRENT_BINARY_DIR}/uninstall.cmake"
00124         IMMEDIATE @ONLY)
00125         
00126     # Add the target
00127     add_custom_target(uninstall
00128         "${CMAKE_COMMAND}" -P
00129         "${CMAKE_CURRENT_BINARY_DIR}/uninstall.cmake")
00130 endmacro()
00131 
00132 #endif DOXYGEN_SHOULD_SKIP_THIS


ecl_build
Author(s): Daniel Stonier (d.stonier@gmail.com)
autogenerated on Thu Jan 2 2014 11:13:41