Re: [CMake] Re: [MODULES][UseSWIG] Dependencies automagically computed!
On 12/12/06, Axel Roebel <[EMAIL PROTECTED]> wrote: On Tuesday 12 December 2006 16:36, Tristan Carel wrote: > I added a RC3 version on the bt > (http://www.cmake.org/Bug/bug.php?op=show&bugid=4147) which takes care > of your comments. It should be all right now. Do you copy? Not that it is extremely important, but the error message still does not list the CMAKE_SWIG_FLAGS. Thanks for all your comments, I guess the fourth version available on the bug tracker can be commited now. -- Tristan Carel Music with dinner is an insult both to the cook and the violinist. ___ CMake mailing list CMake@cmake.org http://www.cmake.org/mailman/listinfo/cmake
Re: [CMake] Re: [MODULES][UseSWIG] Dependencies automagically computed!
On Tuesday 12 December 2006 16:36, Tristan Carel wrote: > I added a RC3 version on the bt > (http://www.cmake.org/Bug/bug.php?op=show&bugid=4147) which takes care > of your comments. It should be all right now. Do you copy? Not that it is extremely important, but the error message still does not list the CMAKE_SWIG_FLAGS. -- Axel Roebel IRCAM Analysis/Synthesis Team Phone: ++33-1-4478 4845 | Fax: ++33-1-4478 1540 ___ CMake mailing list CMake@cmake.org http://www.cmake.org/mailman/listinfo/cmake
[CMake] Re: [MODULES][UseSWIG] Dependencies automagically computed!
On 12/12/06, Axel Roebel <[EMAIL PROTECTED]> wrote: Hi Axel, I have some more observations : 1) the error message SWIG_GET_WRAPPER_DEPENDENCIES uses ${SWIG} instead of ${SWIG_EXECUTABLE} You're completely right! 2) The command line used to find the dependencies does not use the same flags as the command line used to compile the files: In the latter you have ${swig_source_file_flags} ${CMAKE_SWIG_FLAGS} ${swig_special_flags} ${swig_extra_flags} ${swig_include_dirs} while in the former you only use ${swig_getdeps_extra_flags} -${language} in some of my projects I use ${CMAKE_SWIG_FLAGS} to pass include directories which fails with an error during dependency generation because some of the include files are not found. While you may argue that I should use the INCLUDE_DIRECTORIES command I preferred ${CMAKE_SWIG_FLAGS} because that would prevent the c++ compiler from searching in the project common swig include directories. Arf, I didn't notice this variable. The use of `CMAKE_SWIG_FLAGS' avoids mixing C++ / Swig environments, I guess I will use it too. I added a RC3 version on the bt (http://www.cmake.org/Bug/bug.php?op=show&bugid=4147) which takes care of your comments. It should be all right now. Do you copy? Thank you very much. CU On Monday 11 December 2006 21:52, Tristan Carel wrote: > On 12/9/06, Axel Roebel <[EMAIL PROTECTED]> wrote: > > Tristan Carel wrote: > > > Hi Swig lovers, > > > > > > Axel had the great idea to use the -swiglib option in order to improve > > > the module's efficiency to properly fill the prerequesites variables. > > > I guess it is the perfect example of using a tool to perform its > > > `configure' part. > > > > > > On the other hand, it's hard to maintain dependencies of the wrapper > > > generated by swig because the developper has to manually update the > > > CMakeLists.txt each time a change relative to the file inclusions in > > > the main swig file is performed. But Swig provides a couple of > > > options: -M, -MM, -MF, ... > > > which have the same behavior than gcc's: compute the dependencies for > > > us, lazy developpers! > > > > > > So I submitted a new macro in the `UseSWIG.cmake' few days ago: > > > http://www.cmake.org/Bug/bug.php?op=show&bugid=4147&pos=7 > > > > > > # SWIG_GET_WRAPPER_DEPENDENCIES(swigFile genWrapper language > > > DEST_VARIABLE) # - Put dependencies of the wrapper genWrapper > > > generated by swig from # swigFile in DEST_VARIABLE > > > > > > A full description (including behavior, use cases) is available on the > > > bug tracker. > > > > > > So as Axel wrote: > > > "Any comments or volunteers to try?" > > > > Hi Tristan, > > > > do I get the idea right that you want that the wrapper will be recreated > > whenever any of its dependencies changed? That would be really nice! > > > > So I tried the usecase 1 (because usecase 2 is too involved for me ;-) > > like > > > > SWIG_ADD_MODULE(eaSDIF perl ${INTERFACE_SRC} ) > > SWIG_LINK_LIBRARIES(eaSDIF ${PERL_LIBRARIES} Easdif) > > > > however it seems I don't get any dependencies besides the > > main interface file ${INTERFACE_SRC}. > > > > I do get them if I add > > > > DEPENDS ${SWIG_MODULE_${name}_EXTRA_DEPS} > > Yes, It's exactly what I meant in my previous post when I wrote: > > "[...] it's hard to maintain dependencies of the wrapper > generated by swig because the developper has to manually update the > CMakeLists.txt [...]" > > I asked to CMake maintainers to add the SWIG_MODULE_${name}_EXTRA_DEPS > variable few months ago, but I didn't know that it could be done > automatically with the `swig -M' option. > > I submitted a patch for `UseSWIG.cmake' in the bug tracker. You say > that the dependencies are not computed by default by the > `SWIG_ADD_SOURCE_TO_MODULE' macro. You probably patched your > `UseSWIG.cmake' before but ... did you? > > > to the ADD_CUSTOM_COMMANDS in SWIG_ADD_SOURCE_TO_MODULE. > > > > The added dependencies are pretty cool then. So I suppose you just > > forgot to actually use them? > > I used them but now I'm fed up to update it each time I modify the > inclusions of the swig file. > > > If you add the DEPENDS line you probably need to check for > > the case that ${SWIG_MODULE_${name}_EXTRA_DEPS} > > is empty. Otherwise DEPENDS will probably complain if the > > argument is an empty list. I have this error all the time > > for COMPILE_FLAGS, but I am not sure whether > > DEPENDS behaves similarly. > > I've already used the `SWIG_ADD_SOURCE_TO_MODULE' without using the > `${SWIG_MODULE_${name}_EXTRA_DEPS' feature so I guess it properly > works even if the variable is empty. -- Tristan Carel Music with dinner is an insult both to the cook and the violinist. ___ CMake mailing list CMake@cmake.org http://www.cmake.org/mailman/listinfo/cmake
[CMake] Re: [MODULES][UseSWIG] Dependencies automagically computed!
I have some more observations : 1) the error message SWIG_GET_WRAPPER_DEPENDENCIES uses ${SWIG} instead of ${SWIG_EXECUTABLE} MESSAGE(SEND_ERROR "Command \"${SWIG} -MM -MF ${swig_getdeps_depsfile} ${swig_getdeps_extra_flags} -${language} -o ${genWrapper} $\ {swig_getdeps_include_dirs} ${swigFile}\" failed with output: \n${swig_getdeps_error}") 2) The command line used to find the dependencies does not use the same flags as the command line used to compile the files: In the latter you have ${swig_source_file_flags} ${CMAKE_SWIG_FLAGS} ${swig_special_flags} ${swig_extra_flags} ${swig_include_dirs} while in the former you only use ${swig_getdeps_extra_flags} -${language} in some of my projects I use ${CMAKE_SWIG_FLAGS} to pass include directories which fails with an error during dependency generation because some of the include files are not found. While you may argue that I should use the INCLUDE_DIRECTORIES command I preferred ${CMAKE_SWIG_FLAGS} because that would prevent the c++ compiler from searching in the project common swig include directories. Without knowing the swig wrapper generator extremely well, I wonder whether having different flags in these two stages is not asking for a lot of trouble. Cheers, On Monday 11 December 2006 21:52, Tristan Carel wrote: > On 12/9/06, Axel Roebel <[EMAIL PROTECTED]> wrote: > > Tristan Carel wrote: > > > Hi Swig lovers, > > > > > > Axel had the great idea to use the -swiglib option in order to improve > > > the module's efficiency to properly fill the prerequesites variables. > > > I guess it is the perfect example of using a tool to perform its > > > `configure' part. > > > > > > On the other hand, it's hard to maintain dependencies of the wrapper > > > generated by swig because the developper has to manually update the > > > CMakeLists.txt each time a change relative to the file inclusions in > > > the main swig file is performed. But Swig provides a couple of > > > options: -M, -MM, -MF, ... > > > which have the same behavior than gcc's: compute the dependencies for > > > us, lazy developpers! > > > > > > So I submitted a new macro in the `UseSWIG.cmake' few days ago: > > > http://www.cmake.org/Bug/bug.php?op=show&bugid=4147&pos=7 > > > > > > # SWIG_GET_WRAPPER_DEPENDENCIES(swigFile genWrapper language > > > DEST_VARIABLE) # - Put dependencies of the wrapper genWrapper > > > generated by swig from # swigFile in DEST_VARIABLE > > > > > > A full description (including behavior, use cases) is available on the > > > bug tracker. > > > > > > So as Axel wrote: > > > "Any comments or volunteers to try?" > > > > Hi Tristan, > > > > do I get the idea right that you want that the wrapper will be recreated > > whenever any of its dependencies changed? That would be really nice! > > > > So I tried the usecase 1 (because usecase 2 is too involved for me ;-) > > like > > > > SWIG_ADD_MODULE(eaSDIF perl ${INTERFACE_SRC} ) > > SWIG_LINK_LIBRARIES(eaSDIF ${PERL_LIBRARIES} Easdif) > > > > however it seems I don't get any dependencies besides the > > main interface file ${INTERFACE_SRC}. > > > > I do get them if I add > > > > DEPENDS ${SWIG_MODULE_${name}_EXTRA_DEPS} > > Yes, It's exactly what I meant in my previous post when I wrote: > > "[...] it's hard to maintain dependencies of the wrapper > generated by swig because the developper has to manually update the > CMakeLists.txt [...]" > > I asked to CMake maintainers to add the SWIG_MODULE_${name}_EXTRA_DEPS > variable few months ago, but I didn't know that it could be done > automatically with the `swig -M' option. > > I submitted a patch for `UseSWIG.cmake' in the bug tracker. You say > that the dependencies are not computed by default by the > `SWIG_ADD_SOURCE_TO_MODULE' macro. You probably patched your > `UseSWIG.cmake' before but ... did you? > > > to the ADD_CUSTOM_COMMANDS in SWIG_ADD_SOURCE_TO_MODULE. > > > > The added dependencies are pretty cool then. So I suppose you just > > forgot to actually use them? > > I used them but now I'm fed up to update it each time I modify the > inclusions of the swig file. > > > If you add the DEPENDS line you probably need to check for > > the case that ${SWIG_MODULE_${name}_EXTRA_DEPS} > > is empty. Otherwise DEPENDS will probably complain if the > > argument is an empty list. I have this error all the time > > for COMPILE_FLAGS, but I am not sure whether > > DEPENDS behaves similarly. > > I've already used the `SWIG_ADD_SOURCE_TO_MODULE' without using the > `${SWIG_MODULE_${name}_EXTRA_DEPS' feature so I guess it properly > works even if the variable is empty. > > CU -- Axel Roebel IRCAM Analysis/Synthesis Team Phone: ++33-1-4478 4845 | Fax: ++33-1-4478 1540 ___ CMake mailing list CMake@cmake.org http://www.cmake.org/mailman/listinfo/cmake
[CMake] Re: [MODULES][UseSWIG] Dependencies automagically computed!
On Monday 11 December 2006 21:52, Tristan Carel wrote: > On 12/9/06, Axel Roebel <[EMAIL PROTECTED]> wrote: > > Tristan Carel wrote: > > > Hi Swig lovers, > > > ... cut > > DEPENDS ${SWIG_MODULE_${name}_EXTRA_DEPS} > > Yes, It's exactly what I meant in my previous post when I wrote: > > "[...] it's hard to maintain dependencies of the wrapper > generated by swig because the developper has to manually update the > CMakeLists.txt [...]" > > I asked to CMake maintainers to add the SWIG_MODULE_${name}_EXTRA_DEPS > variable few months ago, but I didn't know that it could be done > automatically with the `swig -M' option. > > I submitted a patch for `UseSWIG.cmake' in the bug tracker. You say > that the dependencies are not computed by default by the > `SWIG_ADD_SOURCE_TO_MODULE' macro. You probably patched your > `UseSWIG.cmake' before but ... did you? Sorry, unfortunately I did not have all my computers updated to cmake 2.4.5 and so it apears I started with UseSWIG.cmake that comes with cmake 2.4.3. After your remark I checked UseSWIG.cmake from 2.4.5 and that one does have the missing DEPENDS line already. So everything works ok then. > > to the ADD_CUSTOM_COMMANDS in SWIG_ADD_SOURCE_TO_MODULE. > > > > The added dependencies are pretty cool then. So I suppose you just > > forgot to actually use them? > > I used them but now I'm fed up to update it each time I modify the > inclusions of the swig file. > > > If you add the DEPENDS line you probably need to check for > > the case that ${SWIG_MODULE_${name}_EXTRA_DEPS} > > is empty. Otherwise DEPENDS will probably complain if the > > argument is an empty list. I have this error all the time > > for COMPILE_FLAGS, but I am not sure whether > > DEPENDS behaves similarly. > > I've already used the `SWIG_ADD_SOURCE_TO_MODULE' without using the > `${SWIG_MODULE_${name}_EXTRA_DEPS' feature so I guess it properly > works even if the variable is empty. Good to know. Thanks for the effort with UseSWIG.cmake, it really works great. -- Axel Roebel IRCAM Analysis/Synthesis Team Phone: ++33-1-4478 4845 | Fax: ++33-1-4478 1540 ___ CMake mailing list CMake@cmake.org http://www.cmake.org/mailman/listinfo/cmake
[CMake] Re: [MODULES][UseSWIG] Dependencies automagically computed!
On 12/9/06, Axel Roebel <[EMAIL PROTECTED]> wrote: Tristan Carel wrote: > Hi Swig lovers, > > Axel had the great idea to use the -swiglib option in order to improve > the module's efficiency to properly fill the prerequesites variables. > I guess it is the perfect example of using a tool to perform its > `configure' part. > > On the other hand, it's hard to maintain dependencies of the wrapper > generated by swig because the developper has to manually update the > CMakeLists.txt each time a change relative to the file inclusions in > the main swig file is performed. But Swig provides a couple of > options: -M, -MM, -MF, ... > which have the same behavior than gcc's: compute the dependencies for > us, lazy developpers! > > So I submitted a new macro in the `UseSWIG.cmake' few days ago: > http://www.cmake.org/Bug/bug.php?op=show&bugid=4147&pos=7 > > # SWIG_GET_WRAPPER_DEPENDENCIES(swigFile genWrapper language > DEST_VARIABLE) # - Put dependencies of the wrapper genWrapper generated > by swig from # swigFile in DEST_VARIABLE > > A full description (including behavior, use cases) is available on the > bug tracker. > > So as Axel wrote: > "Any comments or volunteers to try?" Hi Tristan, do I get the idea right that you want that the wrapper will be recreated whenever any of its dependencies changed? That would be really nice! So I tried the usecase 1 (because usecase 2 is too involved for me ;-) like SWIG_ADD_MODULE(eaSDIF perl ${INTERFACE_SRC} ) SWIG_LINK_LIBRARIES(eaSDIF ${PERL_LIBRARIES} Easdif) however it seems I don't get any dependencies besides the main interface file ${INTERFACE_SRC}. I do get them if I add DEPENDS ${SWIG_MODULE_${name}_EXTRA_DEPS} Yes, It's exactly what I meant in my previous post when I wrote: "[...] it's hard to maintain dependencies of the wrapper generated by swig because the developper has to manually update the CMakeLists.txt [...]" I asked to CMake maintainers to add the SWIG_MODULE_${name}_EXTRA_DEPS variable few months ago, but I didn't know that it could be done automatically with the `swig -M' option. I submitted a patch for `UseSWIG.cmake' in the bug tracker. You say that the dependencies are not computed by default by the `SWIG_ADD_SOURCE_TO_MODULE' macro. You probably patched your `UseSWIG.cmake' before but ... did you? to the ADD_CUSTOM_COMMANDS in SWIG_ADD_SOURCE_TO_MODULE. The added dependencies are pretty cool then. So I suppose you just forgot to actually use them? I used them but now I'm fed up to update it each time I modify the inclusions of the swig file. If you add the DEPENDS line you probably need to check for the case that ${SWIG_MODULE_${name}_EXTRA_DEPS} is empty. Otherwise DEPENDS will probably complain if the argument is an empty list. I have this error all the time for COMPILE_FLAGS, but I am not sure whether DEPENDS behaves similarly. I've already used the `SWIG_ADD_SOURCE_TO_MODULE' without using the `${SWIG_MODULE_${name}_EXTRA_DEPS' feature so I guess it properly works even if the variable is empty. CU -- Tristan Carel Music with dinner is an insult both to the cook and the violinist. ___ CMake mailing list CMake@cmake.org http://www.cmake.org/mailman/listinfo/cmake