From 45f6b28edad5976b943f199c7286f55bd7ba5e7c Mon Sep 17 00:00:00 2001 From: Kei Okada Date: Thu, 20 Apr 2017 20:00:44 +0900 Subject: [PATCH 1/6] add CMakeLists.txt package.xml --- CMakeLists.txt | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++ package.xml | 24 ++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 package.xml diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 000000000..574848e48 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,67 @@ +# http://ros.org/doc/groovy/api/catkin/html/user_guide/supposed.html +cmake_minimum_required(VERSION 2.8.3) +project(jskeus) + +find_package(euslisp REQUIRED) +message(STATUS "ARCHDIR=${ARCHDIR}") +message(STATUS "EUSDIR=${EUSDIR}") + +execute_process(COMMAND grep version ${PROJECT_SOURCE_DIR}/package.xml + COMMAND sed -e s/[^0-9.]//g + OUTPUT_VARIABLE jskeus_VERSION + OUTPUT_STRIP_TRAILING_WHITESPACE) +# build irteus on install command +set(INSTALLDIR \${DESTDIR}${CMAKE_INSTALL_PREFIX}/share/euslisp/jskeus/eus/) +add_custom_command(OUTPUT ${INSTALLDIR} + COMMAND cmake -E make_directory ${INSTALLDIR}/lib + COMMAND cmake -E make_directory ${INSTALLDIR}/${ARCHDIR}/bin + COMMAND cmake -E make_directory ${INSTALLDIR}/${ARCHDIR}/obj + COMMAND cmake -E make_directory ${INSTALLDIR}/${ARCHDIR}/lib) +add_custom_target(compile_jskeus + DEPENDS ${INSTALLDIR} + COMMAND export EUSDIR=${EUSDIR} DISPLAY="" lt_cv_sys_lib_dlsearch_path_spec=${lt_cv_sys_lib_dlsearch_path_spec} && \$\(MAKE\) -j1 -l1 -C ${PROJECT_SOURCE_DIR}/irteus -f Makefile ARCHDIR=${ARCHDIR} EUSDIR=${EUSDIR} IRTEUSDIR=${INSTALLDIR} 'SVNVERSION=\\"${jskeus_VERSION}\\"' VERBOSE=1) + +install(CODE "execute_process(COMMAND \"${CMAKE_COMMAND}\" --build \"${CMAKE_BINARY_DIR}\" --target compile_jskeus RESULT_VARIABLE result_variable OUTPUT_VARIABLE output_variable) +if(NOT \${result_variable} EQUAL 0) + message(FATAL_ERROR \"\${output_variable}\") +endif()") + +install(DIRECTORY doc + DESTINATION share/jskeus/ + USE_SOURCE_PERMISSIONS) +install(DIRECTORY irteus + DESTINATION share/euslisp/jskeus/ + USE_SOURCE_PERMISSIONS) +install(FILES package.xml DESTINATION share/jskeus/) + +add_custom_target(test) # dummy target for catkin test + +find_package(catkin) +catkin_package() +string(REGEX MATCH "catkin" need_catkin "$ENV{_}") +get_filename_component(install_dir_name ${CMAKE_INSTALL_PREFIX} NAME) +if(need_catkin AND NOT install_dir_name MATCHES "install") # check if install_prefix end with /install, we can remove this section of we remove all rosrun euslisp ... usage + install(CODE " +## this is tricky force write catkin marker file +set(_catkin_marker_file \"\${CMAKE_INSTALL_PREFIX}/.catkin\") +# check if the develspace marker file exists yet +if(EXISTS \${_catkin_marker_file}) + file(READ \${_catkin_marker_file} _existing_sourcespaces) + if(_existing_sourcespaces STREQUAL \"\") + # write this sourcespace to the marker file + file(WRITE \${_catkin_marker_file} \"${CMAKE_INSTALL_PREFIX}/${CATKIN_PACKAGE_SHARE_DESTINATION}\") + else() + # append to existing list of sourcespaces if it's not in the list + list(FIND _existing_sourcespaces \"${CMAKE_INSTALL_PREFIX}/${CATKIN_PACKAGE_SHARE_DESTINATION}\" _existing_sourcespace_index) + if(_existing_sourcespace_index EQUAL -1) + file(APPEND \${_catkin_marker_file} \";${CMAKE_INSTALL_PREFIX}/${CATKIN_PACKAGE_SHARE_DESTINATION}\") + endif() + endif() +else() + # create a new develspace marker file + # NOTE: extra care must be taken when running multiple catkin jobs in parallel + # so that this does not overwrite the result of a similar call in another package + file(WRITE \${_catkin_marker_file} \"${CMAKE_INSTALL_PREFIX}/${CATKIN_PACKAGE_SHARE_DESTINATION}\") +endif() +") +endif() diff --git a/package.xml b/package.xml new file mode 100644 index 000000000..7cfd1b36b --- /dev/null +++ b/package.xml @@ -0,0 +1,24 @@ + + jskeus + 1.1.0 + EusLisp software developed and used by JSK at The University of Tokyo + Kei Okada + + BSD + + http://euslisp.github.io/jskeus/manual.html + https://github.com/euslisp/jskeus/issues + + JSK Alumnis + + catkin + + euslisp + + euslisp + + + cmake + + + From 9d973dd25d5e5ca0fe50324829259bf2e33310ec Mon Sep 17 00:00:00 2001 From: Kei Okada Date: Thu, 20 Apr 2017 21:46:38 +0900 Subject: [PATCH 2/6] remove build_type cmake --- package.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/package.xml b/package.xml index 7cfd1b36b..7b7d60436 100644 --- a/package.xml +++ b/package.xml @@ -18,7 +18,6 @@ euslisp - cmake From ae07afada18e65ab388b053c32e2b4ac247aa88f Mon Sep 17 00:00:00 2001 From: Kei Okada Date: Thu, 20 Apr 2017 21:47:11 +0900 Subject: [PATCH 3/6] compile with catkin --- CMakeLists.txt | 83 ++++++++++++++++----------------------- env-hooks/99.jskeus.sh.in | 4 ++ 2 files changed, 37 insertions(+), 50 deletions(-) create mode 100644 env-hooks/99.jskeus.sh.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 574848e48..eebe71416 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,58 +10,41 @@ execute_process(COMMAND grep version ${PROJECT_SOURCE_DIR}/package.xml COMMAND sed -e s/[^0-9.]//g OUTPUT_VARIABLE jskeus_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE) -# build irteus on install command -set(INSTALLDIR \${DESTDIR}${CMAKE_INSTALL_PREFIX}/share/euslisp/jskeus/eus/) -add_custom_command(OUTPUT ${INSTALLDIR} - COMMAND cmake -E make_directory ${INSTALLDIR}/lib - COMMAND cmake -E make_directory ${INSTALLDIR}/${ARCHDIR}/bin - COMMAND cmake -E make_directory ${INSTALLDIR}/${ARCHDIR}/obj - COMMAND cmake -E make_directory ${INSTALLDIR}/${ARCHDIR}/lib) -add_custom_target(compile_jskeus - DEPENDS ${INSTALLDIR} - COMMAND export EUSDIR=${EUSDIR} DISPLAY="" lt_cv_sys_lib_dlsearch_path_spec=${lt_cv_sys_lib_dlsearch_path_spec} && \$\(MAKE\) -j1 -l1 -C ${PROJECT_SOURCE_DIR}/irteus -f Makefile ARCHDIR=${ARCHDIR} EUSDIR=${EUSDIR} IRTEUSDIR=${INSTALLDIR} 'SVNVERSION=\\"${jskeus_VERSION}\\"' VERBOSE=1) +message(STATUS "euslisp_VERSION : ${euslisp_VERSION}") +message(STATUS "jskeus_VERSION : ${jskeus_VERSION}") -install(CODE "execute_process(COMMAND \"${CMAKE_COMMAND}\" --build \"${CMAKE_BINARY_DIR}\" --target compile_jskeus RESULT_VARIABLE result_variable OUTPUT_VARIABLE output_variable) -if(NOT \${result_variable} EQUAL 0) - message(FATAL_ERROR \"\${output_variable}\") -endif()") - -install(DIRECTORY doc - DESTINATION share/jskeus/ - USE_SOURCE_PERMISSIONS) -install(DIRECTORY irteus - DESTINATION share/euslisp/jskeus/ - USE_SOURCE_PERMISSIONS) -install(FILES package.xml DESTINATION share/jskeus/) - -add_custom_target(test) # dummy target for catkin test +# build irteus +# if EUSDIR is write protected use share as target directory +execute_process(COMMAND test -w ${EUSDIR} RESULT_VARIABLE eusdir_WRITABLE) +if(${eusdir_WRITABLE} EQUAL 0) + message(STATUS "eusdir_WRITABLE : TRUE") + set(INSTALLDIR ${EUSDIR}) # install to EUSDIR +else() + message(STATUS "eusdir_WRITABLE : FALSE") + set(INSTALLDIR $ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/share/euslisp) # install to prefix/eusdir + message(STATUS "INSTALLDIR ${INSTALLDIR}") + execute_process( + COMMAND cmake -E make_directory ${INSTALLDIR} + COMMAND cmake -E copy_directory ${EUSDIR}/lib ${INSTALLDIR}/lib + COMMAND cmake -E copy_directory ${EUSDIR}/${ARCHDIR} ${INSTALLDIR}/${ARCHDIR}) +endif() +add_custom_target(compile_jskeus ALL + COMMAND export EUSDIR=${EUSDIR} DISPLAY="" lt_cv_sys_lib_dlsearch_path_spec=${lt_cv_sys_lib_dlsearch_path_spec} && \$\(MAKE\) -j1 -l1 -C ${PROJECT_SOURCE_DIR}/irteus -f Makefile ARCHDIR=${ARCHDIR} EUSDIR=${EUSDIR} IRTEUSDIR=${INSTALLDIR} 'SVNVERSION=\\"${jskeus_VERSION}\\"' VERBOSE=1 + COMMAND cmake -E remove -f ${INSTALLDIR}/irteus + COMMAND cmake -E create_symlink ${PROJECT_SOURCE_DIR}/irteus ${INSTALLDIR}/irteus +) +# catkin find_package(catkin) catkin_package() -string(REGEX MATCH "catkin" need_catkin "$ENV{_}") -get_filename_component(install_dir_name ${CMAKE_INSTALL_PREFIX} NAME) -if(need_catkin AND NOT install_dir_name MATCHES "install") # check if install_prefix end with /install, we can remove this section of we remove all rosrun euslisp ... usage - install(CODE " -## this is tricky force write catkin marker file -set(_catkin_marker_file \"\${CMAKE_INSTALL_PREFIX}/.catkin\") -# check if the develspace marker file exists yet -if(EXISTS \${_catkin_marker_file}) - file(READ \${_catkin_marker_file} _existing_sourcespaces) - if(_existing_sourcespaces STREQUAL \"\") - # write this sourcespace to the marker file - file(WRITE \${_catkin_marker_file} \"${CMAKE_INSTALL_PREFIX}/${CATKIN_PACKAGE_SHARE_DESTINATION}\") - else() - # append to existing list of sourcespaces if it's not in the list - list(FIND _existing_sourcespaces \"${CMAKE_INSTALL_PREFIX}/${CATKIN_PACKAGE_SHARE_DESTINATION}\" _existing_sourcespace_index) - if(_existing_sourcespace_index EQUAL -1) - file(APPEND \${_catkin_marker_file} \";${CMAKE_INSTALL_PREFIX}/${CATKIN_PACKAGE_SHARE_DESTINATION}\") - endif() - endif() -else() - # create a new develspace marker file - # NOTE: extra care must be taken when running multiple catkin jobs in parallel - # so that this does not overwrite the result of a similar call in another package - file(WRITE \${_catkin_marker_file} \"${CMAKE_INSTALL_PREFIX}/${CATKIN_PACKAGE_SHARE_DESTINATION}\") -endif() -") +if(${eusdir_WRITABLE} EQUAL 0) # EUSDIR IS WRITABLE +else() # EUSDIR IS NOT WRITABLE + catkin_add_env_hooks(99.jskeus SHELLS sh DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/env-hooks) endif() + +# install +install(DIRECTORY doc irteus + DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} + USE_SOURCE_PERMISSIONS) +install(CODE "execute_process(COMMAND cmake -E remove -f ${INSTALLDIR}/irteus)") +install(CODE "execute_process(COMMAND cmake -E create_symlink \${DESTDIR}${CMAKE_INSTALL_PREFIX}/${CATKIN_PACKAGE_SHARE_DESTINATION}/irteus ${INSTALLDIR}/irteus)") diff --git a/env-hooks/99.jskeus.sh.in b/env-hooks/99.jskeus.sh.in new file mode 100644 index 000000000..20bc856e9 --- /dev/null +++ b/env-hooks/99.jskeus.sh.in @@ -0,0 +1,4 @@ +export EUSDIR=@INSTALLDIR@ +export LD_LIBRARY_PATH=$EUSDIR/$ARCHDIR/lib:$LD_LIBRARY_PATH +export PATH=$EUSDIR/$ARCHDIR/bin:$PATH + From 442533204cf9139498b00ecd9977c6451a7182d7 Mon Sep 17 00:00:00 2001 From: Kei Okada Date: Thu, 20 Apr 2017 21:52:42 +0900 Subject: [PATCH 4/6] rm symbolic link (irteus) before crete them --- irteus/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/irteus/Makefile b/irteus/Makefile index d80341eae..938e5a925 100644 --- a/irteus/Makefile +++ b/irteus/Makefile @@ -159,7 +159,7 @@ $(BINS): (cd $(INSTALLBINDIR); ln -sf eus$(ESFX) irteus$(ESFX)) (cd $(INSTALLBINDIR); ln -sf eusgl$(ESFX) irteusgl$(ESFX)) $(EUSDIR)/irteus: - (cd $(IRTEUSDIR); ln -sf ../irteus irteus) + (cd $(IRTEUSDIR); rm -f irteus; ln -sf ../irteus irteus) install-irtext.l: $(IRTEUSDIR)/lib/irtext.l $(IRTEUSDIR)/lib/irtext.l: irtext.l From 20ee3f9f9fd8b84e68ae1c17148b2f9a29d0f66d Mon Sep 17 00:00:00 2001 From: Kei Okada Date: Thu, 20 Apr 2017 22:59:11 +0900 Subject: [PATCH 5/6] fix compile process for deb installed euslisp --- CMakeLists.txt | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index eebe71416..57ef14449 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,15 +13,20 @@ execute_process(COMMAND grep version ${PROJECT_SOURCE_DIR}/package.xml message(STATUS "euslisp_VERSION : ${euslisp_VERSION}") message(STATUS "jskeus_VERSION : ${jskeus_VERSION}") -# build irteus # if EUSDIR is write protected use share as target directory execute_process(COMMAND test -w ${EUSDIR} RESULT_VARIABLE eusdir_WRITABLE) + +# catkin +find_package(catkin) +catkin_package() + +# build irteus if(${eusdir_WRITABLE} EQUAL 0) message(STATUS "eusdir_WRITABLE : TRUE") set(INSTALLDIR ${EUSDIR}) # install to EUSDIR else() message(STATUS "eusdir_WRITABLE : FALSE") - set(INSTALLDIR $ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/share/euslisp) # install to prefix/eusdir + set(INSTALLDIR $ENV{DESTDIR}${CATKIN_DEVEL_PREFIX}/share/euslisp) # install to prefix/eusdir message(STATUS "INSTALLDIR ${INSTALLDIR}") execute_process( COMMAND cmake -E make_directory ${INSTALLDIR} @@ -34,17 +39,29 @@ add_custom_target(compile_jskeus ALL COMMAND cmake -E create_symlink ${PROJECT_SOURCE_DIR}/irteus ${INSTALLDIR}/irteus ) -# catkin -find_package(catkin) -catkin_package() +# catkin envs if(${eusdir_WRITABLE} EQUAL 0) # EUSDIR IS WRITABLE else() # EUSDIR IS NOT WRITABLE - catkin_add_env_hooks(99.jskeus SHELLS sh DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/env-hooks) + catkin_add_env_hooks(99.jskeus SHELLS sh DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/env-hooks SKIP_INSTALL) endif() # install install(DIRECTORY doc irteus DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} USE_SOURCE_PERMISSIONS) +install(FILES ${INSTALLDIR}/lib/irtext.l DESTINATION share/euslisp/lib) +# install ont included in euslisp +install(CODE " +foreach(dir bin lib obj) + execute_process(COMMAND cmake -E make_directory \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/share/euslisp/${ARCHDIR}/\${dir}) + file(GLOB programs RELATIVE ${INSTALLDIR}/${ARCHDIR}/\${dir} ${INSTALLDIR}/${ARCHDIR}/\${dir}/*) + foreach(program \${programs}) + if(NOT EXISTS ${EUSDIR}/${ARCHDIR}/\${dir}/\${program}) + message(STATUS \"install ${ARCHDIR}/\${dir}/\${program}\") + execute_process(COMMAND cmake -E copy \${program} \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/share/euslisp/${ARCHDIR}/\${dir} WORKING_DIRECTORY ${INSTALLDIR}/${ARCHDIR}) + endif() + endforeach() +endforeach() +") install(CODE "execute_process(COMMAND cmake -E remove -f ${INSTALLDIR}/irteus)") install(CODE "execute_process(COMMAND cmake -E create_symlink \${DESTDIR}${CMAKE_INSTALL_PREFIX}/${CATKIN_PACKAGE_SHARE_DESTINATION}/irteus ${INSTALLDIR}/irteus)") From fc2d7fb7ca3d38c8d05e56a387551ddf16a183a6 Mon Sep 17 00:00:00 2001 From: Kei Okada Date: Thu, 20 Apr 2017 23:22:15 +0900 Subject: [PATCH 6/6] more fix on CMakeLists.txt --- CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 57ef14449..3c34ef1dd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -58,10 +58,10 @@ foreach(dir bin lib obj) foreach(program \${programs}) if(NOT EXISTS ${EUSDIR}/${ARCHDIR}/\${dir}/\${program}) message(STATUS \"install ${ARCHDIR}/\${dir}/\${program}\") - execute_process(COMMAND cmake -E copy \${program} \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/share/euslisp/${ARCHDIR}/\${dir} WORKING_DIRECTORY ${INSTALLDIR}/${ARCHDIR}) + execute_process(COMMAND cmake -E copy \${program} \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/share/euslisp/${ARCHDIR}/\${dir} WORKING_DIRECTORY ${INSTALLDIR}/${ARCHDIR}/\${dir}) endif() endforeach() endforeach() ") -install(CODE "execute_process(COMMAND cmake -E remove -f ${INSTALLDIR}/irteus)") -install(CODE "execute_process(COMMAND cmake -E create_symlink \${DESTDIR}${CMAKE_INSTALL_PREFIX}/${CATKIN_PACKAGE_SHARE_DESTINATION}/irteus ${INSTALLDIR}/irteus)") +install(CODE "execute_process(COMMAND cmake -E remove -f \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/share/euslisp/irteus)") +install(CODE "execute_process(COMMAND cmake -E create_symlink \${CMAKE_INSTALL_PREFIX}/${CATKIN_PACKAGE_SHARE_DESTINATION}/irteus \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/share/euslisp/irteus)")