Skip to content

Commit 3412a87

Browse files
AnyOldName3elsid
andauthored
[mygui] Support dynamic linking for MyGUI (#41840)
Co-authored-by: elsid <[email protected]>
1 parent 15a18ed commit 3412a87

File tree

5 files changed

+131
-7
lines changed

5 files changed

+131
-7
lines changed

ports/mygui/platform-lib-static.patch

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
diff --git a/Platforms/DirectX/DirectXPlatform/CMakeLists.txt b/Platforms/DirectX/DirectXPlatform/CMakeLists.txt
2+
index 169a2afe4..2ea45af2b 100644
3+
--- a/Platforms/DirectX/DirectXPlatform/CMakeLists.txt
4+
+++ b/Platforms/DirectX/DirectXPlatform/CMakeLists.txt
5+
@@ -9,7 +9,7 @@ include_directories(
6+
7+
include(${PROJECTNAME}.list)
8+
9+
-add_library(${PROJECTNAME} ${HEADER_FILES} ${SOURCE_FILES})
10+
+add_library(${PROJECTNAME} STATIC ${HEADER_FILES} ${SOURCE_FILES})
11+
12+
add_dependencies(${PROJECTNAME} MyGUIEngine)
13+
14+
diff --git a/Platforms/DirectX11/DirectX11Platform/CMakeLists.txt b/Platforms/DirectX11/DirectX11Platform/CMakeLists.txt
15+
index 251fcdbe3..16d4f33a5 100644
16+
--- a/Platforms/DirectX11/DirectX11Platform/CMakeLists.txt
17+
+++ b/Platforms/DirectX11/DirectX11Platform/CMakeLists.txt
18+
@@ -9,7 +9,7 @@ include_directories(
19+
20+
include(${PROJECTNAME}.list)
21+
22+
-add_library(${PROJECTNAME} ${HEADER_FILES} ${SOURCE_FILES})
23+
+add_library(${PROJECTNAME} STATIC ${HEADER_FILES} ${SOURCE_FILES})
24+
25+
add_dependencies(${PROJECTNAME} MyGUIEngine)
26+
27+
diff --git a/Platforms/Dummy/DummyPlatform/CMakeLists.txt b/Platforms/Dummy/DummyPlatform/CMakeLists.txt
28+
index 1055694f2..625391132 100644
29+
--- a/Platforms/Dummy/DummyPlatform/CMakeLists.txt
30+
+++ b/Platforms/Dummy/DummyPlatform/CMakeLists.txt
31+
@@ -8,7 +8,7 @@ include_directories(
32+
33+
include(${PROJECTNAME}.list)
34+
35+
-add_library(${PROJECTNAME} ${HEADER_FILES} ${SOURCE_FILES})
36+
+add_library(${PROJECTNAME} STATIC ${HEADER_FILES} ${SOURCE_FILES})
37+
38+
add_dependencies(${PROJECTNAME} MyGUIEngine)
39+
40+
diff --git a/Platforms/Ogre/OgrePlatform/CMakeLists.txt b/Platforms/Ogre/OgrePlatform/CMakeLists.txt
41+
index a151abcf8..23f8a2373 100644
42+
--- a/Platforms/Ogre/OgrePlatform/CMakeLists.txt
43+
+++ b/Platforms/Ogre/OgrePlatform/CMakeLists.txt
44+
@@ -8,7 +8,7 @@ include_directories(
45+
46+
include(${PROJECTNAME}.list)
47+
48+
-add_library(${PROJECTNAME} ${HEADER_FILES} ${SOURCE_FILES})
49+
+add_library(${PROJECTNAME} STATIC ${HEADER_FILES} ${SOURCE_FILES})
50+
51+
add_dependencies(${PROJECTNAME} MyGUIEngine)
52+
53+
diff --git a/Platforms/OpenGL/OpenGLPlatform/CMakeLists.txt b/Platforms/OpenGL/OpenGLPlatform/CMakeLists.txt
54+
index 0d58d3d71..78eaf0267 100644
55+
--- a/Platforms/OpenGL/OpenGLPlatform/CMakeLists.txt
56+
+++ b/Platforms/OpenGL/OpenGLPlatform/CMakeLists.txt
57+
@@ -19,7 +19,7 @@ if (NOT MYGUI_USE_SYSTEM_GLEW)
58+
endif ()
59+
add_definitions(-DGL_GLEXT_PROTOTYPES)
60+
61+
-add_library(${PROJECTNAME} ${HEADER_FILES} ${SOURCE_FILES})
62+
+add_library(${PROJECTNAME} STATIC ${HEADER_FILES} ${SOURCE_FILES})
63+
64+
add_dependencies(${PROJECTNAME} MyGUIEngine)
65+
66+
diff --git a/Platforms/OpenGL3/OpenGL3Platform/CMakeLists.txt b/Platforms/OpenGL3/OpenGL3Platform/CMakeLists.txt
67+
index 27d96da3e..4dcee1601 100644
68+
--- a/Platforms/OpenGL3/OpenGL3Platform/CMakeLists.txt
69+
+++ b/Platforms/OpenGL3/OpenGL3Platform/CMakeLists.txt
70+
@@ -19,7 +19,7 @@ if (NOT MYGUI_USE_SYSTEM_GLEW)
71+
endif ()
72+
add_definitions(-DGL_GLEXT_PROTOTYPES)
73+
74+
-add_library(${PROJECTNAME} ${HEADER_FILES} ${SOURCE_FILES})
75+
+add_library(${PROJECTNAME} STATIC ${HEADER_FILES} ${SOURCE_FILES})
76+
77+
add_dependencies(${PROJECTNAME} MyGUIEngine)
78+
79+
diff --git a/Platforms/OpenGLES/OpenGLESPlatform/CMakeLists.txt b/Platforms/OpenGLES/OpenGLESPlatform/CMakeLists.txt
80+
index bd6d9657b..ad31fc158 100644
81+
--- a/Platforms/OpenGLES/OpenGLESPlatform/CMakeLists.txt
82+
+++ b/Platforms/OpenGLES/OpenGLESPlatform/CMakeLists.txt
83+
@@ -9,7 +9,7 @@ include_directories(
84+
85+
include(${PROJECTNAME}.list)
86+
add_definitions(-DGL_GLEXT_PROTOTYPES)
87+
-add_library(${PROJECTNAME} ${HEADER_FILES} ${SOURCE_FILES})
88+
+add_library(${PROJECTNAME} STATIC ${HEADER_FILES} ${SOURCE_FILES})
89+
90+
add_dependencies(${PROJECTNAME} MyGUIEngine)
91+
92+
From 32e39f8de4b750ed5d2332ee18846f23b7e98df5 Mon Sep 17 00:00:00 2001
93+
From: AnyOldName3 <[email protected]>
94+
Date: Tue, 29 Oct 2024 14:53:52 +0000
95+
Subject: [PATCH] Explicitly mark another library as static
96+
97+
I've also figured out why this problem wasn't obvious.
98+
It only happens when someone's used the CMake-standard BUILD_SHARED_LIBS option, which controls the default behaviour for add_library.
99+
When MyGUI is built as a standalone project, this won't be set (unless someone's done it manually) so it's fine.
100+
When MyGUI is built as part of a larger project (e.g. package manager like vcpkg or CPM, or as a nested project with FetchContent), it's likely to have been set by something else.
101+
102+
It might be a good idea to pick the default value of MYGUI_STATIC to match BUILD_SHARED_LIBS if it's set, but I've not done that in this PR.
103+
---
104+
Common/CMakeLists.txt | 2 +-
105+
1 file changed, 1 insertion(+), 1 deletion(-)
106+
107+
diff --git a/Common/CMakeLists.txt b/Common/CMakeLists.txt
108+
index e97507019..87a16290f 100644
109+
--- a/Common/CMakeLists.txt
110+
+++ b/Common/CMakeLists.txt
111+
@@ -99,7 +99,7 @@ SOURCE_GROUP("Base" FILES
112+
Input/SDL/ResourceSDLPointer.cpp
113+
)
114+
115+
-add_library(${PROJECTNAME} ${HEADER_FILES} ${SOURCE_FILES})
116+
+add_library(${PROJECTNAME} STATIC ${HEADER_FILES} ${SOURCE_FILES})
117+
118+
mygui_set_platform_name(${MYGUI_RENDERSYSTEM})
119+
add_dependencies(${PROJECTNAME} MyGUI.${MYGUI_PLATFORM_NAME}Platform)

ports/mygui/portfile.cmake

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
# MyGUI supports compiling itself as a DLL,
2-
# but it seems platform-related stuff doesn't support dynamic linkage
3-
vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
4-
51
vcpkg_from_github(
62
OUT_SOURCE_PATH SOURCE_PATH
73
REPO MyGUI/mygui
@@ -14,6 +10,7 @@ vcpkg_from_github(
1410
opengl.patch
1511
sdl2-static.patch
1612
fix-tools-lnk2005.patch
13+
platform-lib-static.patch
1714
)
1815

1916
if(VCPKG_TARGET_ARCHITECTURE STREQUAL "wasm32")
@@ -30,10 +27,12 @@ vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
3027
tools MYGUI_BUILD_TOOLS
3128
)
3229

30+
string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" MYGUI_STATIC)
31+
3332
vcpkg_cmake_configure(
3433
SOURCE_PATH "${SOURCE_PATH}"
3534
OPTIONS
36-
-DMYGUI_STATIC=TRUE
35+
-DMYGUI_STATIC=${MYGUI_STATIC}
3736
-DMYGUI_BUILD_DEMOS=FALSE
3837
-DMYGUI_BUILD_PLUGINS=TRUE
3938
-DMYGUI_BUILD_UNITTESTS=FALSE
@@ -52,6 +51,7 @@ file(REMOVE_RECURSE
5251
)
5352

5453
vcpkg_fixup_pkgconfig()
54+
vcpkg_copy_pdbs()
5555

5656
if("tools" IN_LIST FEATURES)
5757
vcpkg_copy_tools(TOOL_NAMES FontEditor ImageEditor LayoutEditor SkinEditor AUTO_CLEAN)

ports/mygui/vcpkg.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "mygui",
33
"version": "3.4.3",
4-
"port-version": 1,
4+
"port-version": 2,
55
"description": "Fast, flexible and simple GUI",
66
"homepage": "http://mygui.info",
77
"license": "MIT",

versions/baseline.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6178,7 +6178,7 @@
61786178
},
61796179
"mygui": {
61806180
"baseline": "3.4.3",
6181-
"port-version": 1
6181+
"port-version": 2
61826182
},
61836183
"mysql-connector-cpp": {
61846184
"baseline": "8.0.32",

versions/m-/mygui.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
{
22
"versions": [
3+
{
4+
"git-tree": "7efdf991088c6e26ca97c11bb8ef00c94d690a9b",
5+
"version": "3.4.3",
6+
"port-version": 2
7+
},
38
{
49
"git-tree": "30a391b5c1365596bafe3acb6739c67ce18c6632",
510
"version": "3.4.3",

0 commit comments

Comments
 (0)