Skip to content

Commit 1d38dff

Browse files
committed
cmake: make possible to build both game and engine against the engine Freetype submodule
1 parent d76ea58 commit 1d38dff

File tree

2 files changed

+35
-23
lines changed

2 files changed

+35
-23
lines changed

CMakeLists.txt

+13-10
Original file line numberDiff line numberDiff line change
@@ -769,17 +769,21 @@ endif()
769769
option(PREFER_EXTERNAL_LIBS "Tries to use system libs where possible." ON)
770770

771771
macro(prefer_package LIB_NAME LIB_CMAKE)
772-
if (PREFER_EXTERNAL_LIBS AND NOT NACL)
773-
find_package(${LIB_NAME})
772+
if (NOT ${LIB_NAME}_FOUND)
773+
if (PREFER_EXTERNAL_LIBS AND NOT NACL)
774+
find_package(${LIB_NAME})
774775

775-
if (NOT ${LIB_NAME}_FOUND)
776-
message(WARNING "PREFER_EXTERNAL_LIBS is enabled but external ${LIB_NAME} is not found, falling back to vendored ${LIB_NAME}.")
777-
endif()
778-
endif()
776+
if (NOT ${LIB_NAME}_FOUND)
777+
message(WARNING "PREFER_EXTERNAL_LIBS is enabled but external ${LIB_NAME} is not found, falling back to vendored ${LIB_NAME}.")
778+
endif()
779+
endif()
779780

780-
if (NOT ${LIB_NAME}_FOUND)
781-
include(${LIB_CMAKE})
782-
endif()
781+
if (NOT ${LIB_NAME}_FOUND)
782+
include(${LIB_CMAKE})
783+
784+
set(${LIB_NAME}_FOUND ON)
785+
endif()
786+
endif()
783787
endmacro()
784788

785789
if (BUILD_CLIENT)
@@ -808,7 +812,6 @@ if (BUILD_CLIENT)
808812
set(LIBS_CLIENT ${LIBS_CLIENT} ${PNG_LIBRARIES})
809813

810814
prefer_package(Freetype ${DAEMON_DIR}/freetype.cmake)
811-
812815
include_directories(${FREETYPE_INCLUDE_DIRS})
813816
set(LIBS_CLIENT ${LIBS_CLIENT} ${FREETYPE_LIBRARIES})
814817

freetype.cmake

+22-13
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,33 @@ set(FREETYPE_DIR ${DAEMON_DIR}/libs/freetype)
22
set(FREETYPE_INCLUDE_DIRS ${FREETYPE_DIR}/include)
33
set(FREETYPE_LIBRARIES freetype)
44

5-
option(FT_DISABLE_BROTLI "Disable Brotli" ON)
6-
option(FT_DISABLE_BZIP2 "Disable bzip2" ON)
7-
option(FT_DISABLE_HARFBUZZ "Disable HarfBuzz" ON)
8-
option(FT_DISABLE_PNG "Disable PNG" ON)
9-
105
if (PREFER_EXTERNAL_LIBS AND NOT NACL)
116
set(FREETYPE_INTERNAL_ZLIB OFF)
127
else()
138
set(FREETYPE_INTERNAL_ZLIB ON)
149
endif()
1510

16-
set(FT_DISABLE_ZLIB ${FREETYPE_INTERNAL_ZLIB} CACHE BOOL "Disable external zlib" FORCE)
11+
if (NOT ${FREETYPE_INTERNAL_ZLIB})
12+
find_package(ZLIB REQUIRED)
13+
set(FREETYPE_LIBRARIES ${FREETYPE_LIBRARIES} ${ZLIB_LIBRARIES})
14+
endif()
15+
16+
# Do not re-add the target if already set to be built.
17+
# For example both the engine and a native game may request Freetype
18+
# to be built, but we need to only build once for both.
19+
if (NOT TARGET freetype)
20+
option(FT_DISABLE_BROTLI "Disable Brotli" ON)
21+
option(FT_DISABLE_BZIP2 "Disable bzip2" ON)
22+
option(FT_DISABLE_HARFBUZZ "Disable HarfBuzz" ON)
23+
option(FT_DISABLE_PNG "Disable PNG" ON)
24+
set(FT_DISABLE_ZLIB ${FREETYPE_INTERNAL_ZLIB} CACHE BOOL "Disable external zlib" FORCE)
1725

18-
add_subdirectory(${FREETYPE_DIR})
26+
add_subdirectory(${FREETYPE_DIR})
1927

20-
mark_as_advanced(FT_DISABLE_BROTLI)
21-
mark_as_advanced(FT_DISABLE_BZIP2)
22-
mark_as_advanced(FT_DISABLE_HARFBUZZ)
23-
mark_as_advanced(FT_DISABLE_PNG)
24-
mark_as_advanced(FT_DISABLE_ZLIB)
25-
mark_as_advanced(FT_ENABLE_ERROR_STRINGS)
28+
mark_as_advanced(FT_DISABLE_BROTLI)
29+
mark_as_advanced(FT_DISABLE_BZIP2)
30+
mark_as_advanced(FT_DISABLE_HARFBUZZ)
31+
mark_as_advanced(FT_DISABLE_PNG)
32+
mark_as_advanced(FT_DISABLE_ZLIB)
33+
mark_as_advanced(FT_ENABLE_ERROR_STRINGS)
34+
endif()

0 commit comments

Comments
 (0)