Files
puzzles/cmake/platforms/osx.cmake
Simon Tatham d5b53853aa Permit building GUI helper tools.
These look like puzzles, in that they link against a frontend and
provide the usual 'struct game', but they don't count as a puzzle for
purposes of shipping, or even having to have descriptions and icons.

There's one of these buried in the code already under an ifdef, which
I'll re-enable in the next commit.
2021-05-25 10:45:40 +01:00

64 lines
2.0 KiB
CMake

set(CMAKE_OSX_DEPLOYMENT_TARGET 10.6)
find_program(HALIBUT halibut REQUIRED)
set(CPACK_GENERATOR DragNDrop)
set(CPACK_PACKAGE_FILE_NAME Puzzles)
set(CPACK_DMG_VOLUME_NAME "Simon Tatham's Puzzle Collection")
include(CPack)
set(build_individual_puzzles FALSE)
set(build_gui_programs FALSE) # they don't really fit in the OS X GUI model
function(get_platform_puzzle_extra_source_files OUTVAR NAME)
set(${OUTVAR} PARENT_SCOPE)
endfunction()
function(set_platform_gui_target_properties TARGET)
endfunction()
function(set_platform_puzzle_target_properties NAME TARGET)
endfunction()
function(build_platform_extras)
write_generated_games_header()
set(resources
${CMAKE_CURRENT_SOURCE_DIR}/osx/Puzzles.icns)
set_source_files_properties(${resources} PROPERTIES
MACOSX_PACKAGE_LOCATION Resources)
add_executable(puzzles MACOSX_BUNDLE
osx.m list.c ${puzzle_sources}
${resources})
set_target_properties(puzzles PROPERTIES
OUTPUT_NAME Puzzles
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/osx/Info.plist)
target_compile_definitions(puzzles PRIVATE COMBINED)
target_include_directories(puzzles PRIVATE ${generated_include_dir})
target_link_libraries(puzzles common ${platform_gui_libs} ${platform_libs}
"-framework Cocoa")
get_property(bundle_basename TARGET puzzles PROPERTY OUTPUT_NAME)
set(help_dir ${CMAKE_CURRENT_BINARY_DIR}/${bundle_basename}.app/Contents/Resources/Help)
message(${help_dir})
add_custom_command(OUTPUT ${help_dir}
COMMAND ${CMAKE_COMMAND} -E make_directory ${help_dir}
DEPENDS puzzles)
add_custom_command(OUTPUT ${help_dir}/index.html
COMMAND ${HALIBUT} --html
${CMAKE_CURRENT_SOURCE_DIR}/osx-help.but
${CMAKE_CURRENT_SOURCE_DIR}/puzzles.but
DEPENDS
${help_dir}
${CMAKE_CURRENT_SOURCE_DIR}/osx-help.but
${CMAKE_CURRENT_SOURCE_DIR}/puzzles.but
WORKING_DIRECTORY ${help_dir})
add_custom_target(osx_help ALL
DEPENDS ${help_dir}/index.html)
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Puzzles.app
USE_SOURCE_PERMISSIONS
DESTINATION .)
endfunction()