Skip to content

Commit ba17be6

Browse files
V0.11.2 (#31)
- fix a use after free in getting resource files on OSX - fix package creation, likewise on OSX
1 parent 154390e commit ba17be6

File tree

3 files changed

+46
-15
lines changed

3 files changed

+46
-15
lines changed

CMakeLists.txt

Lines changed: 45 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.27)
33
find_package(Git)
44

55
project(the-arbor-gui
6-
VERSION 0.11.1
6+
VERSION 0.11.2
77
LANGUAGES C CXX)
88

99
set(EXPORT_COMPILE_COMMANDS ON)
@@ -186,22 +186,53 @@ if(ARBORGUI_BUILD_BUNDLE)
186186

187187
set(ARBORGUI_ICON arbor.icns)
188188
set(ARBORGUI_ICON_PATH ${CMAKE_SOURCE_DIR}/images/${ARBORGUI_ICON})
189-
set_source_files_properties(${ARBORGUI_ICON} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
190189

191-
add_executable(arbor-gui MACOSX_BUNDLE ${ARBORGUI_ICON_PATH} ${gui_srcs} $<TARGET_OBJECTS:imgui>)
192-
set_target_properties(arbor-gui PROPERTIES MACOSX_BUNDLE_ICONFILE ${ARBORGUI_ICON})
190+
set(arbgui_resources)
191+
set_source_files_properties(${CMAKE_SOURCE_DIR}/imgui.ini
192+
PROPERTIES
193+
MACOSX_PACKAGE_LOCATION Resources)
194+
list(APPEND arbgui_resources ${CMAKE_SOURCE_DIR}/imgui.ini)
195+
196+
file(GLOB_RECURSE shaders ${CMAKE_SOURCE_DIR}/glsl/*/*.glsl)
197+
foreach(SHADER_FILE ${shaders})
198+
list(APPEND arbgui_resources ${SHADER_FILE})
199+
file(RELATIVE_PATH SHADER_REL ${CMAKE_SOURCE_DIR}/glsl ${SHADER_FILE})
200+
get_filename_component(SHADER_DIR ${SHADER_REL} DIRECTORY)
201+
set_source_files_properties(${SHADER_FILE}
202+
PROPERTIES
203+
MACOSX_PACKAGE_LOCATION Resources/glsl/${SHADER_DIR})
204+
endforeach()
205+
206+
file(GLOB_RECURSE fonts ${CMAKE_SOURCE_DIR}/fonts/*/*.ttf)
207+
foreach(FONT_FILE ${fonts})
208+
list(APPEND arbgui_resources ${FONT_FILE})
209+
file(RELATIVE_PATH FONT_REL ${CMAKE_SOURCE_DIR}/fonts ${FONT_FILE})
210+
get_filename_component(FONT_DIR ${FONT_REL} DIRECTORY)
211+
set_source_files_properties(${FONT_FILE}
212+
PROPERTIES
213+
MACOSX_PACKAGE_LOCATION Resources/fonts/${FONT_DIR})
214+
endforeach()
215+
216+
set_source_files_properties(${CMAKE_SOURCE_DIR}/images/arbor.icns
217+
PROPERTIES
218+
MACOSX_PACKAGE_LOCATION Resources)
219+
220+
add_executable(arbor-gui MACOSX_BUNDLE ${gui_srcs} $<TARGET_OBJECTS:imgui> ${arbgui_resources} ${CMAKE_SOURCE_DIR}/images/arbor.icns)
221+
set_target_properties(arbor-gui
222+
PROPERTIES
223+
BUNDLE True
224+
MACOSX_BUNDLE_BUNDLE_NAME ${PROJECT_NAME}
225+
MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
226+
MACOSX_BUNDLE_ICONFILE ${ARBORGUI_ICON}
227+
MACOSX_BUNDLE_INFO_STRING "A GUI for Arbor"
228+
RESOURCE ${arbgui_resources})
193229
target_compile_definitions(arbor-gui PUBLIC FMT_HEADER_ONLY)
194230
target_include_directories(arbor-gui PRIVATE src ${CMAKE_CURRENT_BINARY_DIR})
195231
target_link_libraries(arbor-gui PRIVATE ${ARBORGUI_LIBS} arbor arborio glbinding glfw arbor-gui-deps)
196232

197233
install(TARGETS arbor-gui
198-
BUNDLE DESTINATION . COMPONENT Runtime
199-
RUNTIME DESTINATION bin COMPONENT Runtime)
200-
201-
install(FILES ${ARBORGUI_ICON_PATH} DESTINATION ${resource_path})
202-
install(FILES default.ini DESTINATION ${resource_path} RENAME imgui.ini)
203-
install(DIRECTORY glsl DESTINATION ${resource_path})
204-
install(DIRECTORY fonts DESTINATION ${resource_path})
234+
BUNDLE DESTINATION . COMPONENT Runtime
235+
RUNTIME DESTINATION bin COMPONENT Runtime)
205236

206237
set(CPACK_BINARY_DRAGNDROP ON)
207238
set(CPACK_GENERATOR "DragNDrop")
@@ -237,7 +268,7 @@ else()
237268
endif()
238269

239270
# install resources
240-
install(DIRECTORY glsl DESTINATION ${resource_path})
241-
install(DIRECTORY fonts DESTINATION ${resource_path})
242-
install(FILES default.ini DESTINATION ${resource_path} RENAME imgui.ini)
271+
install(DIRECTORY glsl DESTINATION ${resource_path})
272+
install(DIRECTORY fonts DESTINATION ${resource_path})
273+
install(FILES imgui.ini DESTINATION ${resource_path})
243274
endif()
File renamed without changes.

src/utils.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ std::filesystem::path get_resource_path(const std::filesystem::path& fn) {
2121
CFURLRef appUrlRef = CFBundleCopyBundleURL( CFBundleGetMainBundle() );
2222
CFStringRef macPath = CFURLCopyFileSystemPath( appUrlRef, kCFURLPOSIXPathStyle );
2323
CFStringEncoding encodingMethod = CFStringGetSystemEncoding();
24-
const char* path = CFStringGetCStringPtr(macPath, encodingMethod);
24+
auto path = std::string(CFStringGetCStringPtr(macPath, encodingMethod));
2525
CFRelease(appUrlRef);
2626
CFRelease(macPath);
2727
return std::filesystem::path{path} / "Contents/Resources" / fn;

0 commit comments

Comments
 (0)