From 06539caccba9c88db0975bbca61c821ec59d7343 Mon Sep 17 00:00:00 2001 From: Kornel Benko Date: Mon, 6 Jun 2016 08:29:07 +0200 Subject: [PATCH] Cmake build: Refactor determination of destination paths. --- CMakeLists.txt | 13 ++- development/cmake/Install.cmake | 9 +- .../cmake/modules/FindLyXGettext.cmake | 1 + .../cmake/modules/LyXDestinations.cmake | 86 +++++++++++++++++++ 4 files changed, 95 insertions(+), 14 deletions(-) create mode 100644 development/cmake/modules/LyXDestinations.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 8256564476..8425716b8e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -100,6 +100,7 @@ else() endif() include(LyXMacros) +include(LyXDestinations) # Usage LYX_OPTION # 1. parameter: option name without prefix 'LYX_' @@ -463,13 +464,9 @@ endif() if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) # see http://www.cmake.org/pipermail/cmake/2006-October/011559.html if (UNIX) - # don't use the default "/usr/local" + # use the default "/usr/local" # but respect the user-choice on the command-line - if(LYX_INSTALL_SUFFIX) - set(CMAKE_INSTALL_PREFIX "/usr/local/lyx${LYX_INSTALL_SUFFIX}" CACHE PATH "LyX default install prefix" FORCE) - else() - set(CMAKE_INSTALL_PREFIX "/usr/local/${LYX_PROJECT}" CACHE PATH "LyX default install prefix" FORCE) - endif() + set(CMAKE_INSTALL_PREFIX "/usr/local" CACHE PATH "LyX default install prefix" FORCE) endif() endif() if(WIN32) @@ -492,7 +489,7 @@ if(NOT LYX_DATA_SUBDIR) endif() set(LYX_ABS_INSTALLED_DATADIR "${CMAKE_INSTALL_PREFIX}") -set(LYX_LOCALEDIR "${locale_dir}") +get_locale_destination(LYX_LOCALEDIR) set(LYX_ABS_INSTALLED_LOCALEDIR "${CMAKE_INSTALL_PREFIX}/${LYX_LOCALEDIR}") set(LYX_ABS_TOP_SRCDIR "${TOP_SRC_DIR}") @@ -502,7 +499,7 @@ else() if(WIN32) set(LYX_MAN_DIR "${CMAKE_BINARY_DIR}/usr/local/man/man1" CACHE STRING "Install location for man pages.") else() - set(LYX_MAN_DIR "/usr/local/man/man1" CACHE STRING "Install location for man pages.") + set(LYX_MAN_DIR "${CMAKE_INSTALL_PREFIX}/man/man1" CACHE STRING "Install location for man pages.") endif() endif() mark_as_advanced(LYX_MAN_DIR) diff --git a/development/cmake/Install.cmake b/development/cmake/Install.cmake index 26e34b4169..7ee5ddef62 100755 --- a/development/cmake/Install.cmake +++ b/development/cmake/Install.cmake @@ -26,17 +26,14 @@ macro(lyx_install _what _parent_src_dir _gl_dir _file_type) endif() # Select installation dir if ("${_what}" STREQUAL "data") - set(_dest_subdir "${LYX_DATA_SUBDIR}") + get_data_destination(_dest_subdir) elseif ("${_what}" STREQUAL "font") - set(_dest_subdir "fonts/truetype/${_lyx}/") - elseif ("${_what}" STREQUAL "bin") - set(_dest_subdir "bin/") + get_font_destination(_dest_subdir) elseif ("${_what}" STREQUAL "tex") - set(_dest_subdir "texmf/tex/latex/${_lyx}/") + get_tex_destination(_dest_subdir) else() message(FATAL_ERROR "Undefined parameter _what = ${_what} in call to lyx_install") endif() - #message(STATUS "_dest_subdir = ${_dest_subdir}") foreach(_dir ${_dirs}) foreach(_glob_dir ${ARGN}) file(GLOB _dir_list ${_parent_src_dir}/${_dir}/${_glob_dir}) diff --git a/development/cmake/modules/FindLyXGettext.cmake b/development/cmake/modules/FindLyXGettext.cmake index 5d7480d0a2..8533cbf84c 100755 --- a/development/cmake/modules/FindLyXGettext.cmake +++ b/development/cmake/modules/FindLyXGettext.cmake @@ -42,6 +42,7 @@ MACRO(GETTEXT_CREATE_TRANSLATIONS _potFile _firstPoFile) set(_firstArg ${_firstPoFile}) ENDIF(${_firstPoFile} STREQUAL "ALL") + get_locale_destination(LYX_LOCALEDIR) FOREACH (_currentPoFile ${_firstArg} ${ARGN}) GET_FILENAME_COMPONENT(_absFile ${_currentPoFile} ABSOLUTE) GET_FILENAME_COMPONENT(_abs_PATH ${_absFile} PATH) diff --git a/development/cmake/modules/LyXDestinations.cmake b/development/cmake/modules/LyXDestinations.cmake new file mode 100644 index 0000000000..4db61950d9 --- /dev/null +++ b/development/cmake/modules/LyXDestinations.cmake @@ -0,0 +1,86 @@ +# This file is part of lyx. +# +# Helper function to get path to destination directories +# +# Copyright (c) 2016 Kornel Benko +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. The name of the author may not be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# This file is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with lyx; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# LYX_DATA_SUBDIR is defined in ${TOP_SRC_DIR}/CMakeLists.txt +# + +function(get_locale_destination _result) + set(_dir) + if(WIN32) + set(_dir "Resources/locale") + elseif(APPLE) + set(_dir "locale") + elseif(UNIX) + set(_dir "share/locale") + else() + message(FATAL_ERROR "Unhandled platform") + endif() + set(${_result} ${_dir} PARENT_SCOPE) +endfunction() + +function(get_data_destination _result) + set(_dir) + if(WIN32) + set(_dir "${LYX_DATA_SUBDIR}") + elseif(APPLE) + set(_dir "${LYX_DATA_SUBDIR}") + elseif(UNIX) + set(_dir "${LYX_DATA_SUBDIR}") + else() + message(FATAL_ERROR "Unhandled platform") + endif() + set(${_result} ${_dir} PARENT_SCOPE) +endfunction() + +function(get_font_destination _result) + set(_dir) + if(WIN32) + set(_dir "${LYX_DATA_SUBDIR}fonts/") + elseif(APPLE) + set(_dir "${LYX_DATA_SUBDIR}fonts/") + elseif(UNIX) + set(_dir "fonts/truetype/${_lyx}/") + else() + message(FATAL_ERROR "Unhandled platform") + endif() + set(${_result} ${_dir} PARENT_SCOPE) +endfunction() + +function(get_tex_destination _result) + set(_dir) + if(WIN32) + set(_dir "${LYX_DATA_SUBDIR}tex/") + elseif(APPLE) + set(_dir "${LYX_DATA_SUBDIR}tex/") + elseif(UNIX) + set(_dir "texmf/tex/latex/${_lyx}/") + else() + message(FATAL_ERROR "Unhandled platform") + endif() + set(${_result} ${_dir} PARENT_SCOPE) +endfunction() +