On 16/03/2011 17.37, David Cole wrote:
It would be nice (as a future feature addition) to be able to support
sharing the download/update/patch/source_dir aspects of an
ExternalProject target among multiple configurations and avoid the
multiple runs of these things that are exactly the same independent of
the config.

Until that dream becomes reality, though.....
I had once modified the External to include support for <SRC_STAMP_DIR>
#    [SRCSTAMP_DIR dir]          # Directory to store source step timestamps

I still have the file but i unfortunated did not kept it up to date with recent mods
You could run a script as the PATCH_COMMAND, and put some sort of "has
this patch already been applied to this source tree" logic into the
script, and only actually do the patch command if not already applied.

It's a work-around, and might be ugly, but it should work.
Another way is to split the project in two:

one build the source and the other do the config,build,install like

ExternalProject_Add(
    ${PACKAGE}-GetSource
    SOURCE_DIR ${Package_Source_Dir}
STAMP_DIR ${Package_Source_Stamp_Dir} <----------------------------------------------- I set this in a place "near" the sources, so can remove the build without re-patch
    SVN_REPOSITORY ........................
    PATCH_COMMAND <----- your patch--->
    UPDATE_COMMAND ""
    CONFIGURE_COMMAND ""
    BUILD_COMMAND ""
    INSTALL_COMMAND ""
)

if(Package_current_dependencies_effective_line)
set( Package_current_dependencies_effective_line ${Package_current_dependencies_effective_line} ${PACKAGE}-GetSource)
else()
set(Package_current_dependencies_effective_line DEPENDS ${PACKAGE}-GetSource)
endif()



ExternalProject_Add(
    ${PACKAGE}
    SOURCE_DIR ${Package_Source_Dir}
DOWNLOAD_COMMAND "" <--------------------------------------this is important
    BUILD_DIR ......
   INSTALL_DIR ............
    CMAKE_COMMAND ${CMAKE_COMMAND}
    CMAKE_ARGS
        ${Package_std_cmake_args}
        ${Package_additional_cmake_args}
    BUILD_COMMAND ........
    INSTALL_COMMAND ....................
${Package_current_dependencies_effective_line} <------------------------ add ${PACKAGE}-GetSource to your dependencies
    STEP_TARGETS configure build

)

HTH
                Luigi



HTH,
David


On Wed, Mar 16, 2011 at 11:40 AM, Johan Björk<p...@spotify.com>  wrote:
Hi everyone,


I'm using an SVN repository and a PATCH command. It seems to work
fine, but when I'm selecting a different build configuration, all
steps will be executed again (as expected), but it results in my patch
being applied twice.

Any ideas how to work around this?

My externalProject command for reference:

    ExternalProject_Add(Breakpad
      SVN_REPOSITORY http://google-breakpad.googlecode.com/svn/trunk/
      UPDATE_COMMAND ""
      CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
-DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=${CMAKE_OSX_DEPLOYMENT_TARGET}
-DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES}
      PATCH_COMMAND patch<
${CMAKE_CURRENT_LIST_DIR}/other/patches/breakpad.patch
    )

Thanks
/Johan
_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake



_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to