Dear Enrico,

super, thank you very much for your example and the output of running it!!


On 14.08.2019 07:46, Enrico Sorichetti via Oorexx-devel wrote:
> IMO the logic to determine the installation directory structure is broken
>
>
> Create a test directory with the following CMakeLists.txt

This looks like pure magic in my (practically non-existent CMake "know-how") 
eyes!

:)

>
> #[[ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
> -
>     CMakeLists.txt
>     Copyright Enrico Sorichetti 2018 - 2019
>     Distributed under the Boost Software License, Version 1.0.
>     (See accompanying file BOOST_LICENSE_1_0.txt or copy at
>     http://www.boost.org/LICENSE_1_0.txt)
> #]]
>
> #[[ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
> -
>     Specify that the current CMake code is written for the given
>     version of CMake.  All policies introduced in the specified
>     version or earlier will be set to use ``NEW`` behavior.
> #]]
> cmake_minimum_required( VERSION 3.14 )
>
> #[[ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
> -
>     dummy project
> #]]
> project( dummmy )
>
> #[[ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
> -
> #]]
> function( vsnap )
>
>     set( _args "${ARGV}" )
>     list( SORT _args )
>     list( REMOVE_DUPLICATES _args )
>
>     set( _selvars "" )
>
>     get_cmake_property( _allvars VARIABLES )
>
>     foreach( _argv IN LISTS _args )
>
>         string( REGEX MATCH "([^\\*]*)" _head "${_argv}" )
>
>         if( _head STREQUAL _argv )
>             list( APPEND _selvars "${_argv}" )
>             continue()
>         endif()
>
>         string (REGEX MATCHALL "(^|;)${_head}[A-Za-z0-9_]*" _vars 
> "${_allvars}")
>
>         foreach( _var IN LISTS _vars )
>
>             if( "${_var}" STREQUAL "" )
>                 continue()
>             endif()
>
>             list( APPEND _selvars "${_var}" )
>
>         endforeach()
>
>     endforeach()
>
>     list( SORT _selvars )
>
>     list( REMOVE_DUPLICATES _selvars )
>
>     foreach( _var IN LISTS _selvars )
>         message( "[[ ${_var} '${${_var}}' " )
>     endforeach()
>
>     return()
>
> endfunction()
>
> #[[ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
> -
> #]]
> include( GNUInstallDirs )
>
> vsnap( "CMAKE_INSTALL_*")
>
>
> Running cmake it will show a GNU compliant install directory structure 
>
> Tested on Fedora30 it returned 
>
> [[ CMAKE_INSTALL_BINDIR 'bin' 
> [[ CMAKE_INSTALL_DATADIR 'share' 
> [[ CMAKE_INSTALL_DATAROOTDIR 'share' 
> [[ CMAKE_INSTALL_DEFAULT_COMPONENT_NAME 'Unspecified' 
> [[ CMAKE_INSTALL_DOCDIR 'share/doc/dummmy' 
> [[ CMAKE_INSTALL_FULL_BINDIR '/usr/local/bin' 
> [[ CMAKE_INSTALL_FULL_DATADIR '/usr/local/share' 
> [[ CMAKE_INSTALL_FULL_DATAROOTDIR '/usr/local/share' 
> [[ CMAKE_INSTALL_FULL_DOCDIR '/usr/local/share/doc/dummmy' 
> [[ CMAKE_INSTALL_FULL_INCLUDEDIR '/usr/local/include' 
> [[ CMAKE_INSTALL_FULL_INFODIR '/usr/local/share/info' 
> [[ CMAKE_INSTALL_FULL_LIBDIR '/usr/local/lib64' 
> [[ CMAKE_INSTALL_FULL_LIBEXECDIR '/usr/local/libexec' 
> [[ CMAKE_INSTALL_FULL_LOCALEDIR '/usr/local/share/locale' 
> [[ CMAKE_INSTALL_FULL_LOCALSTATEDIR '/usr/local/var' 
> [[ CMAKE_INSTALL_FULL_MANDIR '/usr/local/share/man' 
> [[ CMAKE_INSTALL_FULL_OLDINCLUDEDIR '/usr/include' 
> [[ CMAKE_INSTALL_FULL_RUNSTATEDIR '/usr/local/var/run' 
> [[ CMAKE_INSTALL_FULL_SBINDIR '/usr/local/sbin' 
> [[ CMAKE_INSTALL_FULL_SHAREDSTATEDIR '/usr/local/com' 
> [[ CMAKE_INSTALL_FULL_SYSCONFDIR '/usr/local/etc' 
> [[ CMAKE_INSTALL_INCLUDEDIR 'include' 
> [[ CMAKE_INSTALL_INFODIR 'share/info' 
> [[ CMAKE_INSTALL_LIBDIR 'lib64' 
> [[ CMAKE_INSTALL_LIBEXECDIR 'libexec' 
> [[ CMAKE_INSTALL_LOCALEDIR 'share/locale' 
> [[ CMAKE_INSTALL_LOCALSTATEDIR 'var' 
> [[ CMAKE_INSTALL_MANDIR 'share/man' 
> [[ CMAKE_INSTALL_OLDINCLUDEDIR '/usr/include' 
> [[ CMAKE_INSTALL_PREFIX '/usr/local' 
> [[ CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT '1' 
> [[ CMAKE_INSTALL_RUNSTATEDIR 'var/run' 
> [[ CMAKE_INSTALL_SBINDIR 'sbin' 
> [[ CMAKE_INSTALL_SHAREDSTATEDIR 'com' 
> [[ CMAKE_INSTALL_SO_NO_EXE '0' 
> [[ CMAKE_INSTALL_SYSCONFDIR 'etc' 
>
>
> Note how it correctly determined that the libraries should be installed into 
> lib64

Indeed, *very* impressive and *great*!

> PS.
> The changes to the ooRexx CMakeLists are minimal
> The destination directories should be defined as variables properly 
> initialised, rather than hardcoded

Would you please be so kind and hint/share what should be changed in the ooRexx 
CMakeLists, given
that for a CMake guru like yourself these changes seem to be evident and as you 
write appear
"minimal" (!) to you, but for a total amateur like myself it looks like quite a 
huge and steep
mountain to climb up first, before becoming able to spot and change the 
necessary definitions? (I
have looked up CMakeLists.txt for CMAKE_INSTALL_* settings, but have not found 
settings that I
should change or delete.)

Best regards

---rony



_______________________________________________
Oorexx-devel mailing list
Oorexx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-devel

Reply via email to