1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
| | This i a backport of the commits in PR 235 (“Fixes for packaging on
linux-like systems”), which was merged upstream:
https://github.com/opengribs/XyGrib/pull/235
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 64059ab65dae..00cc5d6aea6f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -7,6 +7,9 @@ set(VERSION_PATCH 6)
set(XYGRIB_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
set(XYGRIB_VERSION_DATE "2019-07-05")
+option(GNU_PACKAGE "Install into GNU standard directories" OFF)
+option(GEN_TRANSLATIONS "Generate translations" ON)
+
set(CMAKE_VERBOSE_MAKEFILE ON)
# Find includes in corresponding build directories
@@ -25,7 +28,7 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_CXX_STANDARD 11)
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")
if(UNIX AND NOT APPLE)
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -fPIC")
+add_compile_options(-Wall -fPIC)
endif()
# Add support for address etc sanitizers, part 1/2 (other half after ADD_EXECUTABLE)
@@ -108,17 +111,12 @@ find_path(OPENJPEG_INCLUDE_DIR
~/Library/Frameworks/include
/Library/Frameworks/include
/usr/local/include
- /usr/local/include/openjpeg-2.3
- /usr/include/openjpeg-2.3
- /usr/local/include/openjpeg-2.1
- /usr/include/openjpeg-2.1
- /usr/local/include/openjpeg-2.2
- /usr/include/openjpeg-2.2
/usr/include
/sw/include # Fink
/opt/local/include # DarwinPorts
/opt/csw/include # Blastwave
/opt/include
+ PATH_SUFFIXES openjpeg-2.3 openjpeg-2.2 openjpeg-2.1
REQUIRED
)
include_directories(${OPENJPEG_INCLUDE_DIR})
@@ -212,22 +210,24 @@ include_directories(${PNG_INCLUDE_DIR})
configure_file(cmake/Version.h.in ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/include/Version.h)
include_directories(${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/include)
-if(APPLE)
-set(PREFIX_BIN ${PROJECT_NAME})
-set(PREFIX_PKGDATA ${PROJECT_NAME})
-endif()
-if(WIN32)
-set(PREFIX_BIN ".")
-set(PREFIX_PKGDATA ".")
-endif()
-if(UNIX AND NOT APPLE)
-# This is not exactly a good idea on linux - the code should be changed so that the executable would go to /usr/local/bin and the data to /usr/local/share/XyGrib
-set(PREFIX_BIN ${PROJECT_NAME})
-set(PREFIX_PKGDATA ${PROJECT_NAME})
+if(GNU_PACKAGE)
+ include(GNUInstallDirs)
+ set(PREFIX_BIN ${CMAKE_INSTALL_FULL_BINDIR})
+ set(PREFIX_PKGDATA ${CMAKE_INSTALL_FULL_DATADIR}/openGribs/${PROJECT_NAME})
+else()
+ if(WIN32)
+ set(PREFIX_BIN ".")
+ set(PREFIX_PKGDATA ".")
+ else()
+ set(PREFIX_BIN ${PROJECT_NAME})
+ set(PREFIX_PKGDATA ${PROJECT_NAME})
+ endif()
endif()
add_subdirectory(src)
-add_subdirectory(data/tr)
+if(GEN_TRANSLATIONS)
+ add_subdirectory(data/tr)
+endif()
# Installation
# macOS bundle parameters
@@ -241,4 +241,14 @@ set_target_properties(${PROJECT_NAME} PROPERTIES MACOSX_BUNDLE_SHORT_VERSION_STR
set_target_properties(${PROJECT_NAME} PROPERTIES MACOSX_BUNDLE_BUNDLE_VERSION "${XYGRIB_VERSION}")
set_target_properties(${PROJECT_NAME} PROPERTIES MACOSX_BUNDLE_COPYRIGHT "${PROJECT_NAME} Authors")
# Install data
-install(DIRECTORY data DESTINATION ${PREFIX_PKGDATA})
+install(DIRECTORY data DESTINATION ${PREFIX_PKGDATA}
+ PATTERN "CMakeFiles" EXCLUDE
+ PATTERN "CMakeLists.txt" EXCLUDE
+ PATTERN "Makefile" EXCLUDE
+ PATTERN "cmake_install.cmake" EXCLUDE)
+if(GNU_PACKAGE)
+ install(FILES debian/xygrib.desktop
+ DESTINATION ${CMAKE_INSTALL_FULL_DATADIR}/applications)
+ install(FILES debian/xygrib.png
+ DESTINATION ${CMAKE_INSTALL_FULL_DATADIR}/pixmaps)
+endif()
diff --git a/INSTALL.md b/INSTALL.md
index 2c9d3ab4da03..1190cc780182 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -22,7 +22,19 @@ https://gihub.com/opengribs/XyGrib/releases or on https://opengribs.org in the d
- openSUSE Tumbleweed: `sudo zypper install gcc git cmake libqt5-qtbase-devel libpng-devel openjpeg2-devel libnova-devel libproj-devel zlib-devel libbz2-devel
## Build and package
+### Options
+XyGrib has two CMake options
+- GNU_PACKAGE (DEFAULT: OFF)
+```
+Files will be installed in GNU standard installation directories such as prefix/bin and prefix/share.
+Packagers are recommended to test this option.
+```
+- GEN_TRANSLATION (DEFAULT: ON)
+```
+Create targets to generate translation files.
+Turning this off removes the need for qt-linguist, part of qttools qt5 submodule, during build.
+```
### macOS
- Get the source
|