blob: ca2eb85b5af117d80b714e3fb4fa7a92e0360aa8 (
plain)
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
|
if (IOS)
include (Depends-iOS.cmake)
return ()
endif ()
find_package (PkgConfig)
if (ENABLE_HARFBUZZ AND EXISTS ${CMAKE_SOURCE_DIR}/lib/harfbuzz/CMakeLists.txt)
# Find HarfBuzz with pkg-config.
if (NOT ENABLE_HARFBUZZ_MINIMAL AND PKG_CONFIG_FOUND)
pkg_check_modules (HARFBUZZ IMPORTED_TARGET harfbuzz)
endif ()
if (ENABLE_HARFBUZZ_MINIMAL OR NOT HARFBUZZ_FOUND)
# Build HarfBuzz with minimal dependencies.
set (HB_BUILD_SUBSET OFF CACHE BOOL "" FORCE)
set (HB_HAVE_CORETEXT OFF CACHE BOOL "" FORCE)
set (HB_HAVE_FREETYPE OFF CACHE BOOL "" FORCE)
set (HB_HAVE_GLIB OFF CACHE BOOL "" FORCE)
set (HB_HAVE_GOBJECT OFF CACHE BOOL "" FORCE)
set (HB_HAVE_ICU OFF CACHE BOOL "" FORCE)
set (SKIP_INSTALL_ALL YES CACHE BOOL "" FORCE)
add_subdirectory (${CMAKE_SOURCE_DIR}/lib/harfbuzz)
set (HARFBUZZ_LIBRARIES harfbuzz)
# HarfBuzz is C++ so must link with the standard library.
if (APPLE)
list (APPEND HARFBUZZ_LIBRARIES c++)
else ()
list (APPEND HARFBUZZ_LIBRARIES stdc++)
endif ()
set (HARFBUZZ_FOUND YES)
set (SKIP_INSTALL_ALL NO CACHE BOOL "" FORCE)
endif ()
endif ()
if (ENABLE_FRIBIDI AND EXISTS ${CMAKE_SOURCE_DIR}/lib/fribidi)
# Find FriBidi with pkg-config.
if (NOT ENABLE_FRIBIDI_BUILD AND PKG_CONFIG_FOUND)
pkg_check_modules (FRIBIDI IMPORTED_TARGET fribidi)
add_library (fribidi-lib ALIAS PkgConfig::FRIBIDI)
endif ()
if (ENABLE_FRIBIDI_BUILD OR NOT FRIBIDI_FOUND)
# Build FriBidi with Meson.
find_program (MESON_EXECUTABLE meson DOC "Meson build system")
find_program (NINJA_EXECUTABLE ninja DOC "Ninja build tool")
include (ExternalProject)
set (_dst ${CMAKE_BINARY_DIR}/lib/fribidi)
if (MESON_EXECUTABLE AND NINJA_EXECUTABLE)
ExternalProject_Add (fribidi
PREFIX ${CMAKE_BINARY_DIR}/fribidi-ext
SOURCE_DIR ${CMAKE_SOURCE_DIR}/lib/fribidi
CONFIGURE_COMMAND NINJA=${NINJA_EXECUTABLE} ${MESON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/lib/fribidi
-Dtests=false -Ddocs=false -Dbin=false
-Dc_flags=-Wno-macro-redefined
--prefix ${_dst}
BUILD_COMMAND ${NINJA_EXECUTABLE}
INSTALL_COMMAND ${NINJA_EXECUTABLE} install
)
else ()
message (FATAL_ERROR
"GNU FriBidi must be built with Meson. Please install Meson and Ninja and try again, or provide FriBidi via pkg-config.")
endif ()
add_library (fribidi-lib INTERFACE)
target_include_directories (fribidi-lib INTERFACE ${_dst}/include)
target_link_libraries (fribidi-lib INTERFACE -L${_dst}/lib fribidi)
set (FRIBIDI_FOUND YES)
endif ()
endif ()
if (NOT EXISTS ${CMAKE_SOURCE_DIR}/lib/the_Foundation/CMakeLists.txt)
set (INSTALL_THE_FOUNDATION YES)
find_package (the_Foundation REQUIRED)
else ()
if (EXISTS ${CMAKE_SOURCE_DIR}/lib/the_Foundation/.git)
# the_Foundation is checked out as a submodule, make sure it's up to date.
find_package (Git)
if (GIT_FOUND)
execute_process (
COMMAND ${GIT_EXECUTABLE} submodule update
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE subout
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if (subout)
message (FATAL_ERROR "'lib/the_Foundation' Git submodule has been updated, please re-run CMake.\n")
endif ()
endif ()
endif ()
set (INSTALL_THE_FOUNDATION OFF)
set (TFDN_STATIC_LIBRARY ON CACHE BOOL "")
set (TFDN_ENABLE_INSTALL OFF CACHE BOOL "")
set (TFDN_ENABLE_TESTS OFF CACHE BOOL "")
set (TFDN_ENABLE_WEBREQUEST OFF CACHE BOOL "")
add_subdirectory (lib/the_Foundation)
add_library (the_Foundation::the_Foundation ALIAS the_Foundation)
if (NOT OPENSSL_FOUND)
message (FATAL_ERROR "Lagrange requires OpenSSL for TLS. Please check if pkg-config can find 'openssl'.")
endif ()
if (NOT ZLIB_FOUND)
message (FATAL_ERROR "Lagrange requires zlib for reading compressed archives. Please check if pkg-config can find 'zlib'.")
endif ()
endif ()
find_package (PkgConfig REQUIRED)
pkg_check_modules (SDL2 REQUIRED sdl2)
pkg_check_modules (MPG123 IMPORTED_TARGET libmpg123)
|