Skip to content

Commit 04392d9

Browse files
committed
[ftgl] Download instead of bundle and bump from 2.1.2 to 2.4, and use CMake target
1 parent 4aacb18 commit 04392d9

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+127
-5317
lines changed

.github/workflows/root-ci-config/buildconfig/alma10-clang_ninja.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ CMAKE_C_COMPILER=clang
22
CMAKE_CXX_COMPILER=clang++
33
CMAKE_GENERATOR=Ninja
44
builtin_freetype=ON
5+
builtin_ftgl=ON
56
builtin_gif=ON
67
builtin_jpeg=ON
78
builtin_lz4=ON
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
From b043877060efafcfa00f1d07c264d69e32e5d3a9 Mon Sep 17 00:00:00 2001
2+
From: Frank Heckenbach <f.heckenbach@fh-soft.de>
3+
Date: Tue, 21 May 2019 23:09:18 +0200
4+
Subject: [PATCH] src/CMakeLists.txt: remove FTLibrary.h from
5+
libftgl_la_SOURCES (it's only in ftgl_headers)
6+
7+
---
8+
src/CMakeLists.txt | 1 -
9+
1 file changed, 1 deletion(-)
10+
11+
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
12+
index 693e49f..b0f26f6 100644
13+
--- a/src/CMakeLists.txt
14+
+++ b/src/CMakeLists.txt
15+
@@ -26,7 +26,6 @@ SET(libftgl_la_SOURCES
16+
FTGlyphContainer.h
17+
FTInternals.h
18+
FTLibrary.cpp
19+
- FTLibrary.h
20+
FTList.h
21+
FTPoint.cpp
22+
FTSize.cpp
23+
--
24+
2.34.1
25+

builtins/ftgl/CMakeLists.txt

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
# Copyright (C) 1995-2019, Rene Brun and Fons Rademakers.
2+
# All rights reserved.
3+
#
4+
# For the licensing terms see $ROOTSYS/LICENSE.
5+
# For the list of contributors see $ROOTSYS/README/CREDITS.
6+
7+
# **PLEASE UPDATE ALSO THE FOLLOWING LINE WHEN UPDATING THE VERSION**
8+
# 7 Feb 2019, https://github.com/frankheckenbach/ftgl/releases/tag/v2.4.0
9+
set(ROOT_FTGL_VERSION 2.4.0)
10+
set(ROOT_FTGL_HASH "aa97da1c3442a8fd3941037655df18016d70b5266381c81d81e8b5335f196ea8")
11+
# Cherry-pick https://github.com/frankheckenbach/ftgl/commit/835f2ba7911a6c15a1a314d5e3267fa089b5a319 :
12+
set(ROOT_FTGL_PATCH_FILE "${CMAKE_CURRENT_SOURCE_DIR}/0001-src-CMakeLists.txt-remove-FTLibrary.h-from-libftgl_l.patch")
13+
set(ROOT_FTGL_PREFIX ${CMAKE_BINARY_DIR}/builtins/FTGL-prefix)
14+
set(ROOT_FTGL_LIBRARY ${ROOT_XXHASH_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}xxhash${CMAKE_STATIC_LIBRARY_SUFFIX})
15+
16+
include(ExternalProject)
17+
18+
# Clear cache variables set by find_package(FTGL)
19+
# to ensure that we use the builtin version
20+
foreach(var FTGL_LIBRARIES FTGL_LIBRARY FTGL_LIBRARY_DEBUG FTGL_LIBRARY_RELEASE FTGL_FOUND FTGL_VERSION FTGL_INCLUDE_DIR FTGL_LIBRARY FTGL_LIBRARIES)
21+
unset(${var})
22+
unset(${var} CACHE)
23+
endforeach()
24+
25+
if(WIN32 AND NOT CMAKE_GENERATOR MATCHES Ninja)
26+
if(winrtdebug)
27+
set(ROOT_FTGL_BUILD_COMMAND_FLAGS "--config Debug")
28+
else()
29+
set(ROOT_FTGL_BUILD_COMMAND_FLAGS "--config $<IF:$<CONFIG:Debug,RelWithDebInfo>,RelWithDebInfo,Release>")
30+
endif()
31+
endif()
32+
33+
ExternalProject_Add(BUILTIN_FTGL
34+
URL ${lcgpackages}/ftgl-${ROOT_FTGL_VERSION}.tar.gz
35+
URL_HASH SHA256=${ROOT_FTGL_HASH}
36+
PATCH_COMMAND git apply ${ROOT_FTGL_PATCH_FILE}
37+
38+
LOG_DOWNLOAD TRUE
39+
LOG_CONFIGURE TRUE
40+
LOG_BUILD TRUE
41+
LOG_INSTALL TRUE
42+
LOG_OUTPUT_ON_FAILURE TRUE
43+
44+
CMAKE_CACHE_ARGS
45+
-DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
46+
-DCMAKE_GENERATOR:STRING=${CMAKE_GENERATOR}
47+
-DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
48+
-DCMAKE_C_COMPILER:STRING=${CMAKE_C_COMPILER}
49+
-DCMAKE_CXX_COMPILER:STRING=${CMAKE_CXX_COMPILER}
50+
-DCMAKE_BUILD_SHARED_LIBS:BOOL=FALSE
51+
-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=TRUE
52+
BUILD_COMMAND ${CMAKE_COMMAND} --build . ${ROOT_FTGL_BUILD_COMMAND_FLAGS}
53+
INSTALL_COMMAND ${CMAKE_COMMAND} --build . ${ROOT_FTGL_BUILD_COMMAND_FLAGS} --target install
54+
55+
BUILD_BYPRODUCTS
56+
${ROOT_FTGL_LIBRARY}
57+
58+
INSTALL_COMMAND ""
59+
TIMEOUT 600
60+
)
61+
62+
file(MAKE_DIRECTORY ${ROOT_FTGL_PREFIX}/include)
63+
add_library(FTGL::FTGL IMPORTED STATIC GLOBAL)
64+
set_target_properties(FTGL::FTGL PROPERTIES
65+
IMPORTED_LOCATION ${ROOT_FTGL_LIBRARY}
66+
INTERFACE_INCLUDE_DIRECTORIES ${ROOT_FTGL_PREFIX}/include)
67+
if(builtin_freetype)
68+
add_dependencies(BUILTIN_FTGL BUILTIN_FREETYPE)
69+
endif()
70+
if(builin_zlib)
71+
add_dependencies(BUILTIN_FTGL BUILTIN_ZLIB)
72+
endif()
73+
target_link_libraries(FTGL::FTGL INTERFACE Freetype::Freetype) # private: OpenGL::GL OpenGL::GLU ZLIB::ZLIB
74+
75+
# Set the canonical output of find_package according to
76+
# https://cmake.org/cmake/help/latest/manual/cmake-developer.7.html#standard-variable-names
77+
set(FTGL_INCLUDE_DIRS ${ROOT_FTGL_PREFIX}/include PARENT_SCOPE)
78+
set(FTGL_LIBRARIES ${ROOT_FTGL_LIBRARY} PARENT_SCOPE)
79+
set(FTGL_FOUND TRUE PARENT_SCOPE)
80+
set(FTGL_VERSION ${ROOT_FTGL_VERSION} PARENT_SCOPE)
81+
set_property(GLOBAL APPEND PROPERTY ROOT_BUILTIN_TARGETS BUILTIN_FTGL)
82+
83+

cmake/modules/SearchInstalledSoftware.cmake

Lines changed: 14 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,8 @@ foreach(suffix FOUND INCLUDE_DIR LIBRARY LIBRARY_DEBUG LIBRARY_RELEASE LIBRARIES
109109
endforeach()
110110

111111
# Request explicit user opt-in for required dependencies
112+
ROOT_FIND_REQUIRED_DEP(Freetype builtin_freetype)
112113
if(asimage)
113-
ROOT_FIND_REQUIRED_DEP(Freetype builtin_freetype)
114114
ROOT_FIND_REQUIRED_DEP(GIF builtin_gif)
115115
ROOT_FIND_REQUIRED_DEP(JPEG builtin_jpeg)
116116
# We cannot PNG here because while searching PNG, CMake will also find ZLIB.
@@ -875,29 +875,19 @@ if(dcache)
875875
endif()
876876

877877
#---Check for ftgl if needed----------------------------------------------------------
878-
if(opengl AND NOT builtin_ftgl)
879-
find_package(FTGL)
880-
if(NOT FTGL_FOUND)
881-
if(fail-on-missing)
882-
message(SEND_ERROR "ftgl library not found and is required ('builtin_ftgl' is OFF). Set variable FTGL_ROOT_DIR to installation location")
883-
else()
884-
message(STATUS "ftgl library not found. Set variable FTGL_ROOT_DIR to point to your installation")
885-
message(STATUS "For the time being switching ON 'builtin_ftgl' option")
886-
set(builtin_ftgl ON CACHE BOOL "Enabled because ftgl not found but opengl requested (${builtin_ftgl_description})" FORCE)
887-
endif()
888-
endif()
889-
endif()
890-
891-
if(builtin_ftgl)
892-
# clear variables set to NOTFOUND to allow builtin FTGL to override them
893-
foreach(var FTGL_LIBRARIES FTGL_LIBRARY FTGL_LIBRARY_DEBUG FTGL_LIBRARY_RELEASE)
894-
unset(${var})
895-
unset(${var} CACHE)
896-
endforeach()
897-
set(FTGL_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/graf3d/ftgl/inc)
898-
set(FTGL_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/graf3d/ftgl/inc)
899-
set(FTGL_CFLAGS -DBUILTIN_FTGL)
900-
set(FTGL_LIBRARIES FTGL)
878+
if(opengl)
879+
ROOT_FIND_REQUIRED_DEP(FTGL builtin_ftgl)
880+
if (builtin_ftgl)
881+
add_subdirectory(builtins/ftgl)
882+
list(APPEND ROOT_BUILTINS BUILTIN_FTGL)
883+
elseif(NOT TARGET FTGL::FTGL) # system-package was found but no full CMake target
884+
add_library(FTGL::FTGL SHARED IMPORTED)
885+
set_target_properties(FTGL::FTGL PROPERTIES IMPORTED_LOCATION ${FTGL_LIBRARIES})
886+
target_include_directories(FTGL::FTGL SYSTEM INTERFACE $<BUILD_INTERFACE:${FTGL_INCLUDE_DIRS}>)
887+
target_link_libraries(FTGL::FTGL PUBLIC Freetype::Freetype)
888+
endif()
889+
elseif(builtin_ftgl)
890+
message(SEND_ERROR "FTGL features enabled with \"builtin_ftgl=ON\" require \"opengl=ON\"")
901891
endif()
902892

903893
#---Check for R/Rcpp/RInside--------------------------------------------------------------------

graf3d/CMakeLists.txt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,6 @@ endif()
1212
add_subdirectory(csg) # special CMakeLists.txt
1313

1414
if (opengl)
15-
if(builtin_ftgl)
16-
add_subdirectory(ftgl)
17-
endif()
1815
if(geom)
1916
add_subdirectory(eve)
2017
add_subdirectory(gviz3d)

graf3d/ftgl/CMakeLists.txt

Lines changed: 0 additions & 56 deletions
This file was deleted.

graf3d/ftgl/inc/FTBBox.h

Lines changed: 0 additions & 124 deletions
This file was deleted.

0 commit comments

Comments
 (0)