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
shou