forked from boringplace/kumir2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
139 lines (123 loc) · 6.68 KB
/
CMakeLists.txt
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
project(Kumir2)
cmake_minimum_required(VERSION 3.0)
find_package(PythonInterp 3.2.0 REQUIRED)
message(STATUS "Cmake prefix path: ${CMAKE_PREFIX_PATH}")
# Query for version info and pass it as compile definitions
if(EXISTS "${CMAKE_SOURCE_DIR}/version_info.cmake")
include(${CMAKE_SOURCE_DIR}/version_info.cmake)
message(STATUS "File-provided version info: HASH=${GIT_HASH}")
message(STATUS "File-provided version info: TIMESTAMP=${GIT_TIMESTAMP}")
message(STATUS "File-provided version info: TAG=${GIT_TAG}")
message(STATUS "File-provided version info: BRANCH=${GIT_BRANCH}")
elseif(PROVIDED_VERSION_INFO)
message(STATUS "Variable-provided version info: HASH=${GIT_HASH}")
message(STATUS "Variable-provided version info: TIMESTAMP=${GIT_TIMESTAMP}")
message(STATUS "Variable-provided version info: TAG=${GIT_TAG}")
message(STATUS "Variable-provided version info: BRANCH=${GIT_BRANCH}")
else()
execute_process(
COMMAND ${PYTHON_EXECUTABLE} "${CMAKE_SOURCE_DIR}/scripts/query_version_info.py" "--mode=cmake_version_info_tbht" "--toplevel=${CMAKE_SOURCE_DIR}"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE VERSION_DEFINITIONS
)
list(GET VERSION_DEFINITIONS 0 GIT_TAG)
list(GET VERSION_DEFINITIONS 1 GIT_BRANCH)
list(GET VERSION_DEFINITIONS 2 GIT_HASH)
list(GET VERSION_DEFINITIONS 3 GIT_TIMESTAMP)
message(STATUS "Queried version info: HASH=${GIT_HASH}")
message(STATUS "Queried version info: TIMESTAMP=${GIT_TIMESTAMP}")
message(STATUS "Queried version info: TAG=${GIT_TAG}")
message(STATUS "Queried version info: BRANCH=${GIT_BRANCH}")
endif()
if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/custom_variables.cmake")
include("${CMAKE_CURRENT_LIST_DIR}/custom_variables.cmake")
endif()
if(NOT DEFINED KUMIR2_ALL_TOOLS)
set(KUMIR2_ALL_TOOLS OFF)
endif(NOT DEFINED KUMIR2_ALL_TOOLS)
set(CMAKE_PREFIX_PATH "${CMAKE_SOURCE_DIR}/cmake")
set(KUMIR2_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
find_package(Kumir2 REQUIRED)
if (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
include_directories("/usr/include/c++/v1")
endif ()
include_directories("${CMAKE_SOURCE_DIR}/include")
include_directories("${CMAKE_SOURCE_DIR}/src")
add_subdirectory(src)
# Copy and create install targets for top-level resources
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${KUMIR2_RESOURCES_DIR}/userdocs")
file(GLOB_RECURSE resfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/userdocs ${CMAKE_CURRENT_SOURCE_DIR}/userdocs/*)
foreach(res IN ITEMS ${resfiles})
if(NOT ${res} MATCHES ^[.].*)
get_filename_component(subdir ${res} PATH)
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${KUMIR2_RESOURCES_DIR}/userdocs/${subdir}")
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/userdocs/${res}" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/${KUMIR2_RESOURCES_DIR}/userdocs/${subdir}")
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/userdocs/${res}" DESTINATION "${KUMIR2_RESOURCES_DIR}/userdocs/${subdir}")
endif()
endforeach(res)
# Courses in dist TODO move the code to function and reuse it
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${KUMIR2_RESOURCES_DIR}/courses")
file(GLOB_RECURSE resfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/courses ${CMAKE_CURRENT_SOURCE_DIR}/courses/*)
foreach(res IN ITEMS ${resfiles})
if(NOT ${res} MATCHES ^[.].*)
get_filename_component(subdir ${res} PATH)
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${KUMIR2_RESOURCES_DIR}/courses/${subdir}")
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/courses/${res}" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/${KUMIR2_RESOURCES_DIR}/courses/${subdir}")
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/courses/${res}" DESTINATION "${KUMIR2_RESOURCES_DIR}/courses/${subdir}")
endif()
endforeach(res)
# In-App icons TODO move the code to function and reuse it
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${KUMIR2_RESOURCES_DIR}/icons")
file(GLOB_RECURSE icons RELATIVE ${CMAKE_SOURCE_DIR}/share/kumir2/icons ${CMAKE_SOURCE_DIR}/share/kumir2/icons/*)
foreach(icon IN ITEMS ${icons})
get_filename_component(subdir ${icon} PATH)
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${KUMIR2_RESOURCES_DIR}/icons/${subdir}")
file(COPY "${CMAKE_SOURCE_DIR}/share/kumir2/icons/${icon}" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/${KUMIR2_RESOURCES_DIR}/icons/${subdir}")
install(FILES "${CMAKE_SOURCE_DIR}/${KUMIR2_RESOURCES_DIR}/icons/${icon}" DESTINATION "${KUMIR2_RESOURCES_DIR}/icons/${subdir}")
endforeach(icon)
# Development files
install(DIRECTORY include/ DESTINATION include/ FILES_MATCHING PATTERN "*.h*")
install(DIRECTORY src/kumir2-libs/ DESTINATION include/kumir2-libs/ FILES_MATCHING PATTERN "*.h*")
install(DIRECTORY src/kumir2-libs/ DESTINATION include/kumir2-libs/ FILES_MATCHING PATTERN "*.table")
install(
FILES scripts/gen_actor_source.py
DESTINATION ${KUMIR2_SDK_SCRIPTS_DIR}
PERMISSIONS
OWNER_EXECUTE OWNER_WRITE OWNER_READ
GROUP_EXECUTE GROUP_READ
WORLD_EXECUTE WORLD_READ
)
if(NOT DEFINED KUMIR2_SDK_SRC_DIR)
set(KUMIR2_SDK_SRC_DIR "${KUMIR2_RESOURCES_DIR}/src")
endif(NOT DEFINED KUMIR2_SDK_SRC_DIR) # sources required to build some components (launchers, etc.)
install(DIRECTORY cmake/ DESTINATION "${KUMIR2_SDK_CMAKE_DIR}")
install(FILES src/app/kumir2-launcher.cpp DESTINATION ${KUMIR2_SDK_SRC_DIR})
# Generate and install CMake file describing current build configuration
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/distribution_build_config.cmake" "# Installed build configuration\n")
file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/distribution_build_config.cmake"
"set(USE_QT ${USE_QT})\n"
# "set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE})\n"
"set(KUMIR2_ROOT ${CMAKE_INSTALL_PREFIX})\n"
"set(KUMIR2_SDK_SCRIPTS_DIR ${KUMIR2_SDK_SCRIPTS_DIR})\n"
"set(KUMIR2_SDK_SRC_DIR ${KUMIR2_SDK_SRC_DIR})\n"
"set(KUMIR2_ALL_TOOLS ${KUMIR2_ALL_TOOLS})\n"
"set(GIT_HASH ${GIT_HASH})\n"
"set(GIT_TAG ${GIT_TAG})\n"
"set(GIT_BRANCH ${GIT_BRANCH})\n"
"set(GIT_TIMESTAMP ${GIT_TIMESTAMP})\n"
)
install(
FILES "${CMAKE_CURRENT_BINARY_DIR}/distribution_build_config.cmake"
DESTINATION "${KUMIR2_SDK_CMAKE_DIR}/kumir2"
)
# XDG mime types handling
if(NOT WIN32 AND NOT APPLE)
set(ICONS_DIR "${CMAKE_SOURCE_DIR}/app_icons/linux/hicolor")
message(STATUS "icons dir : ${ICONS_DIR}")
file(GLOB_RECURSE icons RELATIVE ${ICONS_DIR} "${ICONS_DIR}/*/mimetypes/*.*")
foreach(icon IN ITEMS ${icons})
get_filename_component(subdir ${icon} PATH)
install(FILES "${ICONS_DIR}/${icon}" DESTINATION "${KUMIR2_XDG_ICONS_DIR}/hicolor/${subdir}")
endforeach(icon)
install(FILES "${CMAKE_SOURCE_DIR}/share/mime/packages/kumir2-mimetypes.xml" DESTINATION ${KUMIR2_XDG_MIME_PACKAGES_DIR})
endif(NOT WIN32 AND NOT APPLE)