serenity/Meta/Lagom/Contrib/MacPDF/CMakeLists.txt
2023-10-10 09:50:08 -04:00

59 lines
2.3 KiB
CMake

# This has the effect of making LC_RPATH absolute.
# Since the binary is in Build/lagom/bin/MacPDF.app/Contents/MacOS/MacPDF,
# the default "@executable_path/../lib" doesn't work to get from the binary
# to Build/lagom/lib.
# FIXME: Pass "-Wl,-rpath,@executable_path/../../../../lib" instead for a relative path?
# Long-term, probably want to copy the dylibs into the bundle instead.
set(CMAKE_SKIP_BUILD_RPATH FALSE)
set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
add_compile_options(-DAK_DONT_REPLACE_STD)
set(RESOURCES
MainMenu.xib
)
add_executable(MacPDF MACOSX_BUNDLE
main.mm
AppDelegate.mm
MacPDFDocument.mm
MacPDFOutlineViewDataSource.mm
MacPDFView.mm
MacPDFWindowController.mm
)
target_compile_options(MacPDF PRIVATE
-fobjc-arc
)
target_link_libraries(MacPDF PRIVATE LibCore LibGfx LibPDF)
target_link_libraries(MacPDF PRIVATE
"-framework Cocoa"
"-framework UniformTypeIdentifiers"
)
set_target_properties(MacPDF PROPERTIES
MACOSX_BUNDLE TRUE
# FIXME: Apparently the Info.plist is only copied when the binary relinks,
# not if only the Info.plist contents changes and you rebuild?
MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/Info.plist"
)
# Normally you'd set `RESOURCE "${RESOURCES}"` on the MacPDF target properties
# and add `"${RESOURCES}" to the sources in add_executable()
# and CMake would add build steps to compile the xib files to nib files and
# add them to the bundle.
# But with CMake's ninja generator that seems to not work, so do it manually.
# See also https://github.com/dolphin-emu/dolphin/blob/2e39c79984490e/Source/Core/MacUpdater/CMakeLists.txt#L49-L56
find_program(IBTOOL ibtool HINTS "/usr/bin" "${OSX_DEVELOPER_ROOT}/usr/bin")
foreach(xib ${RESOURCES})
string(REGEX REPLACE "[.]xib$" ".nib" nib "${xib}")
# FIXME: This is gross! It makes the link at least as slow as compiling all xib files.
# Better to have a separate command for the compiles and to only do the copying in the postbuild.
add_custom_command(TARGET MacPDF POST_BUILD
COMMAND ${IBTOOL} --errors --warnings --notices --output-format human-readable-text
--compile "$<TARGET_BUNDLE_DIR:MacPDF>/Contents/Resources/${nib}"
"${CMAKE_CURRENT_SOURCE_DIR}/${xib}"
COMMENT "Compiling ${CMAKE_CURRENT_SOURCE_DIR}/${xib}.xib")
endforeach()