Adds automatic translations loaders for LXQt libs and apps
[lxde/liblxqt.git] / cmake / modules / LXQtTranslationLoader.cmake
1 #=============================================================================
2 # Copyright 2014 Luís Pereira <luis.artur.pereira@gmail.com>
3 #
4 # Redistribution and use in source and binary forms, with or without
5 # modification, are permitted provided that the following conditions
6 # are met:
7 #
8 # 1. Redistributions of source code must retain the copyright
9 #    notice, this list of conditions and the following disclaimer.
10 # 2. Redistributions in binary form must reproduce the copyright
11 #    notice, this list of conditions and the following disclaimer in the
12 #    documentation and/or other materials provided with the distribution.
13 # 3. The name of the author may not be used to endorse or promote products
14 #    derived from this software without specific prior written permission.
15 #
16 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17 # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18 # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19 # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21 # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 #=============================================================================
27 #
28 # These functions enables "automatic" translation loading in LXQt Qt5 apps
29 #   and libs. They generate a .cpp file that takes care of everything. The
30 #   user doesn't have to do anything in the source code.
31 #
32 # Typical use:
33 #   include(LXQtTranslationLoader)
34 #   lxqt_app_translation_loader(lxqt-app_QM_LOADER ${PROJECT_NAME})
35 #   add_executable(${PROJECT_NAME}
36 #       ${lxqt-app_QM_LOADER}
37 #       ...
38 #   )
39
40
41 # lxqt_app_translation_loader(<source_files> <catalog_name>)
42 #       <source_files> The generated .cpp file is added to <source_files>
43 #       <catalog_name> Translations catalog to be loaded
44 function(lxqt_app_translation_loader source_files catalog_name)
45     configure_file(
46         ${LXQT_CMAKE_MODULES_DIR}/LXQtAppTranslationLoader.cpp.in
47         LXQtAppTranslationLoader.cpp @ONLY
48     )
49     set(${source_files} ${${source_files}} ${CMAKE_CURRENT_BINARY_DIR}/LXQtAppTranslationLoader.cpp PARENT_SCOPE)
50 endfunction()
51
52 # lxqt_lib_translation_loader(<source_files> <catalog_name>)
53 #       <source_files> The generated .cpp file is added to <source_files>
54 #       <catalog_name> Translations catalog to be loaded
55 function(lxqt_lib_translation_loader source_files catalog_name)
56     configure_file(
57         ${LXQT_CMAKE_MODULES_DIR}/LXQtLibTranslationLoader.cpp.in
58         LXQtLibTranslationLoader.cpp @ONLY
59     )
60     set(${source_files} ${${source_files}} ${CMAKE_CURRENT_BINARY_DIR}/LXQtLibTranslationLoader.cpp PARENT_SCOPE)
61 endfunction()