forked from patacrep/patagui
-
Notifications
You must be signed in to change notification settings - Fork 1
/
songbook-client-config.cmake
139 lines (119 loc) · 3.9 KB
/
songbook-client-config.cmake
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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
set(PROJECT_NAME songbook-client)
# If ${SOURCE_DIR} is a git repository VERSION is set to
# `git describe` later.
set(VERSION devel)
set(CODENAME "")
#project(${PROJECT_NAME} C)
option(GENERATE_MANPAGES "generate manpages" ON)
option(COMPRESS_MANPAGES "compress manpages" ON)
option(ENBALE_SVG_SUPPORT "allow to use SVG icons fallback" ON)
option(ENABLE_LIBRARY_DOWNLOAD "allow the application to download songbooks" ON)
# {{{ CFLAGS
add_definitions(-ggdb3 -rdynamic -fno-strict-aliasing -Wall -Wextra
-Wchar-subscripts -Wundef -Wcast-align -Wwrite-strings
-Wsign-compare -Wunused -Wno-unused-parameter -Wuninitialized -Winit-self
-Wpointer-arith -Wredundant-decls -Wformat-nonliteral
-Wmissing-format-attribute)
# }}}
# {{{ Find external utilities
macro(a_find_program var prg req)
set(required ${req})
find_program(${var} ${prg})
if(NOT ${var})
message(STATUS "${prg} not found.")
if(required)
message(FATAL_ERROR "${prg} is required to build ${PROJECT_NAME}")
endif()
else()
message(STATUS "${prg} -> ${${var}}")
endif()
endmacro()
a_find_program(GIT_EXECUTABLE git FALSE)
a_find_program(HOSTNAME_EXECUTABLE hostname FALSE)
# programs needed for man pages
a_find_program(ASCIIDOC_EXECUTABLE asciidoc FALSE)
a_find_program(XMLTO_EXECUTABLE xmlto FALSE)
a_find_program(GZIP_EXECUTABLE gzip FALSE)
# pkg-config
include(FindPkgConfig)
# }}}
if(ENABLE_LIBRARY_DOWNLOAD)
#set(LIBRARY_DOWNLOAD_ENABLED YES)
message(STATUS "Library download enabled")
else()
message(STATUS "Library download disabled")
endif()
# {{{ Check if documentation can be build
if(GENERATE_MANPAGES)
if(NOT ASCIIDOC_EXECUTABLE OR NOT XMLTO_EXECUTABLE OR (COMPRESS_MANPAGES AND NOT GZIP_EXECUTABLE))
if(NOT ASCIIDOC_EXECUTABLE)
SET(missing "asciidoc")
endif()
if(NOT XMLTO_EXECUTABLE)
SET(missing ${missing} " xmlto")
endif()
if(COMPRESS_MANPAGES AND NOT GZIP_EXECUTABLE)
SET(missing ${missing} " gzip")
endif()
message(STATUS "Not generating manpages. Missing: " ${missing})
set(GENERATE_MANPAGES OFF)
endif()
endif()
# }}}
# {{{ Version stamp
if(EXISTS ${SOURCE_DIR}/.git/HEAD AND GIT_EXECUTABLE)
# get current version
execute_process(
COMMAND ${GIT_EXECUTABLE} describe
WORKING_DIRECTORY ${SOURCE_DIR}
OUTPUT_VARIABLE VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE)
set(BUILD_FROM_GIT TRUE)
endif()
# }}}
# {{{ Get hostname
execute_process(
COMMAND ${HOSTNAME_EXECUTABLE}
WORKING_DIRECTORY ${SOURCE_DIR}
OUTPUT_VARIABLE BUILDHOSTNAME
OUTPUT_STRIP_TRAILING_WHITESPACE)
# }}}
# {{{ Install path and configuration variables
if(DEFINED PREFIX)
set(PREFIX ${PREFIX} CACHE PATH "install prefix")
set(CMAKE_INSTALL_PREFIX ${PREFIX})
else()
set(PREFIX ${CMAKE_INSTALL_PREFIX} CACHE PATH "install prefix")
endif()
# set man path
if(DEFINED SONGBOOK_CLIENT_MAN_PATH)
set(SONGBOOK_CLIENT_MAN_PATH ${SONGBOOK_CLIENT_MAN_PATH} CACHE PATH "songbook-client manpage directory")
else()
set(SONGBOOK_CLIENT_MAN_PATH ${PREFIX}/share/man CACHE PATH "songbook-client manpage directory")
endif()
# Hide to avoid confusion
mark_as_advanced(CMAKE_INSTALL_PREFIX)
set(SONGBOOK_CLIENT_APPLICATION_NAME ${PROJECT_NAME})
set(SONGBOOK_CLIENT_VERSION ${VERSION})
set(SONGBOOK_CLIENT_COMPILE_MACHINE ${CMAKE_SYSTEM_PROCESSOR})
set(SONGBOOK_CLIENT_COMPILE_HOSTNAME ${BUILDHOSTNAME})
set(SONGBOOK_CLIENT_COMPILE_BY $ENV{USER})
set(SONGBOOK_CLIENT_RELEASE ${CODENAME})
set(SONGBOOK_CLIENT_DATA_PATH ${PREFIX}/share/${SONGBOOK_CLIENT_APPLICATION_NAME})
# }}}
# {{{ Configure files
set(SONGBOOK_CLIENT_CONFIGURE_FILES
config.hh.in
)
macro(a_configure_file file)
string(REGEX REPLACE ".in\$" "" outfile ${file})
message(STATUS "Configuring ${outfile}")
configure_file(${SOURCE_DIR}/${file}
${BUILD_DIR}/${outfile}
ESCAPE_QUOTE
@ONLY)
endmacro()
foreach(file ${SONGBOOK_CLIENT_CONFIGURE_FILES})
a_configure_file(${file})
endforeach()
#}}}