Skip to content

Commit e51437b

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

File tree

2 files changed

+35
-23
lines changed

2 files changed

+35
-23
lines changed

CMakeLists.txt

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -778,17 +778,21 @@ endif()
778778
option(PREFER_EXTERNAL_LIBS "Tries to use system libs where possible." ON)
779779

780780
macro(prefer_package LIB_NAME LIB_CMAKE)
781-
if (PREFER_EXTERNAL_LIBS AND NOT NACL)
782-
find_package(${LIB_NAME})
781+
if (NOT ${LIB_NAME}_FOUND)
782+
if (PREFER_EXTERNAL_LIBS AND NOT NACL)
783+
find_package(${LIB_NAME})
783784

784-
if (NOT ${LIB_NAME}_FOUND)
785-
message(WARNING "PREFER_EXTERNAL_LIBS is enabled but external ${LIB_NAME} is not found, falling back to vendored ${LIB_NAME}.")
786-
endif()
787-
endif()
785+
if (NOT ${LIB_NAME}_FOUND)
786+
message(WARNING "PREFER_EXTERNAL_LIBS is enabled but external ${LIB_NAME} is not found, falling back to vendored ${LIB_NAME}.")
787+
endif()
788+
endif()
788789

789-
if (NOT ${LIB_NAME}_FOUND)
790-
include(${LIB_CMAKE})
791-
endif()
790+
if (NOT ${LIB_NAME}_FOUND)
791+
include(${LIB_CMAKE})
792+
793+
set(${LIB_NAME}_FOUND ON)
794+
endif()
795+
endif()
792796
endmacro()
793797

794798
if (BUILD_CLIENT)
@@ -817,7 +821,6 @@ if (BUILD_CLIENT)
817821
set(LIBS_CLIENT ${LIBS_CLIENT} ${PNG_LIBRARIES})
818822

819823
prefer_package(Freetype ${DAEMON_DIR}/freetype.cmake)
820-
821824
include_directories(${FREETYPE_INCLUDE_DIRS})
822825
set(LIBS_CLIENT ${LIBS_CLIENT} ${FREETYPE_LIBRARIES})
823826

freetype.cmake

Lines changed: 22 additions & 13 deletions
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)