]> git.lyx.org Git - lyx.git/blob - development/cmake/Install.cmake
* zh_TW.po: Update from Mingyi Wu
[lyx.git] / development / cmake / Install.cmake
1
2 # TODO: set correct path in call to cmake
3 # e.g. cmake /usr/src/lyx/lyx-devel/development/cmake -DCMAKE_INSTALL_PREFIX=/usr/local/share/lyx2.0 -Dnls=1
4
5 if(NOT(LYX_BUNDLE) AND APPLE)
6         message(STATUS "Installing to ${CMAKE_INSTALL_PREFIX}, defined by CMAKE_INSTALL_PREFIX")
7 endif()
8 set(OSX_BUNDLE_FILES "")
9
10 # Install files into OS X bundle
11 macro(lyx_install_osx basedir files)
12   if(LYX_BUNDLE_PROPERTY_MODE STREQUAL "ON")
13     foreach(file ${files})
14       set_source_files_properties("${file}" PROPERTIES MACOSX_PACKAGE_LOCATION "Resources/${basedir}")
15     endforeach()
16   else()
17     list(APPEND OSX_BUNDLE_FILES "${files}")
18   endif()
19 endmacro(lyx_install_osx)
20
21 # the macro scans the directories "_parent_src_dir/_dir/_current_dir" for *._file_type files
22 # and installs the files in CMAKE_INSTALL_PREFIX/_current_dir
23 # dir_item is on item of the remaining arguments
24 macro(lyx_install _parent_src_dir _gl_dir _file_type)
25   #message("checking parents ${_parent_src_dir}")
26   file(GLOB _dirs RELATIVE "${_parent_src_dir}" ${_parent_src_dir}/${_gl_dir})
27   #cmake bug on Windows: if _gl_dir==. _dirs is empty but on linux _dirs==.
28   if(NOT _dirs)
29     set(_dirs .)
30   endif() 
31   foreach(_dir ${_dirs})
32     foreach(_glob_dir ${ARGN})
33       file(GLOB _dir_list ${_parent_src_dir}/${_dir}/${_glob_dir})
34       if(NOT _dir_list)
35         if(_glob_dir STREQUAL ".")
36           set(_dir_list ${_parent_src_dir}/${_dir}/.)
37         endif()
38       endif()
39       #message(STATUS "${_dir}/${_glob_dir} -> ${_dir_list} ")
40       foreach(_current_dir ${_dir_list})
41         file(GLOB _item_list ${_current_dir}/${_file_type})
42         #cmake bug: globbing with * also returns directories on Windows
43         set(files_list ${_item_list})
44         set(program_list)
45         foreach(_current_item ${_item_list})
46           if(files_list)
47             if(IS_DIRECTORY ${_current_item})
48               #message(STATUS "removing dir ${_current_item}")
49               list(REMOVE_ITEM files_list "${_current_item}")
50             else()
51               if(_current_item MATCHES "/\\.[^/]+$")
52                 #message(STATUS "removing hidden ${_current_item}")
53                 list(REMOVE_ITEM files_list "${_current_item}")
54               endif()
55               if(_current_item MATCHES "\\.in$")
56                 #message(STATUS "removing .in file ${_current_item}")
57                 list(REMOVE_ITEM files_list "${_current_item}")
58               endif()
59               if(_current_item MATCHES "\\.py$")
60                 list(REMOVE_ITEM files_list "${_current_item}")
61                 list(APPEND program_list "${_current_item}")
62               endif()
63             endif()
64           endif()
65         endforeach(_current_item)
66         if(files_list)
67           list(REMOVE_ITEM files_list "${_current_dir}/lyx.svg")
68           list(REMOVE_ITEM files_list "${_current_dir}/Makefile.am")
69           list(REMOVE_ITEM files_list "${_current_dir}/layouttranslations")
70           GET_FILENAME_COMPONENT(_base_dir ${_current_dir} NAME)
71           if(_glob_dir STREQUAL ".")
72             set(_base_dir .)
73           endif()
74           #message(STATUS "install ${LYX_DATA_SUBDIR}${_dir}/${_base_dir}: ${files_list} ")
75           #message(STATUS "install at ${CMAKE_INSTALL_PREFIX}/${LYX_DATA_SUBDIR}${_dir}/${_base_dir}")
76           if(APPLE)
77             lyx_install_osx("${_dir}/${_based_dir}" "${files_list}")
78           else()
79             install(FILES ${files_list} DESTINATION ${LYX_DATA_SUBDIR}${_dir}/${_base_dir})
80           endif(APPLE)
81         endif()
82         if(program_list)
83           if(_glob_dir STREQUAL ".")
84             set(_base_dir .)
85           endif()
86           if(APPLE)
87             lyx_install_osx("${_dir}/${_based_dir}" "${program_list}")
88           else()
89             install(PROGRAMS ${program_list} DESTINATION ${LYX_DATA_SUBDIR}${_dir}/${_base_dir})
90           endif(APPLE)
91         endif()
92       endforeach(_current_dir)
93     endforeach(_glob_dir)
94   endforeach(_dir)
95 endmacro(lyx_install)
96
97
98 # language-specific-directories (like ca, de, es ...) are now globbed as "[a-z][a-z]"
99 set(_all_languages "[a-z][a-z]")
100
101 lyx_install(${TOP_SRC_DIR}/lib bind         *.bind   . ${_all_languages})
102 lyx_install(${TOP_SRC_DIR}/lib commands     *.def    .)
103
104 # this is handled in doc/CMakeLists.txt
105 #lyx_install(${TOP_SRC_DIR}/lib doc          *.lyx    . ${_all_languages})
106 #lyx_install(${TOP_SRC_DIR}/lib doc          *.txt    . ${_all_languages})
107 lyx_install(${TOP_SRC_DIR}/lib doc          *      biblio clipart)
108
109 lyx_install(${TOP_SRC_DIR}/lib doc/${_all_languages} *    clipart)
110
111 lyx_install(${TOP_SRC_DIR}/lib examples     *      . ${_all_languages} springer thesis)
112 lyx_install(${TOP_SRC_DIR}/lib fonts        *      .)
113 lyx_install(${TOP_SRC_DIR}/lib images       *      . math ipa commands attic classic oxygen)
114 lyx_install(${TOP_SRC_DIR}/lib kbd          *      .)
115 lyx_install(${TOP_SRC_DIR}/lib layouts      *      .)
116 lyx_install(${TOP_SRC_DIR}/lib lyx2lyx      *.py   .)
117 lyx_install(${TOP_SRC_DIR}/lib scripts      *.py   .)
118 lyx_install(${TOP_SRC_DIR}/lib scripts      *.R    .)
119 lyx_install(${TOP_SRC_DIR}/lib templates    *      . attic)
120 lyx_install(${TOP_SRC_DIR}/lib tex          *      .)
121 lyx_install(${TOP_SRC_DIR}/lib ui           *      .)
122 lyx_install(${TOP_SRC_DIR}/lib .            *      .)
123
124 # Install
125 if(APPLE)
126     lyx_install(${TOP_SRC_DIR}/development/MacOSX . *.sdef   .)
127     lyx_install(${TOP_SRC_DIR}/development/MacOSX . *.icns   .)
128     lyx_install(${TOP_SRC_DIR}/development/MacOSX . qt.conf   .)
129 endif()
130
131 install(PROGRAMS ${TOP_SRC_DIR}/lib/scripts/listerrors DESTINATION scripts)
132
133 if(UNIX)
134   set(program_suffix ${PROGRAM_SUFFIX})
135   configure_file(${TOP_SRC_DIR}/lib/lyx.desktop.in lyx${PROGRAM_SUFFIX}.desktop)
136   install(FILES ${CMAKE_CURRENT_BINARY_DIR}/lyx${PROGRAM_SUFFIX}.desktop DESTINATION applications)
137   install(FILES ${TOP_SRC_DIR}/lib/images/lyx.svg RENAME lyx${PROGRAM_SUFFIX}.svg DESTINATION images)
138 endif()