Files
libwiiuse/cmake/MakeVRJugglerAppBundle.cmake

150 lines
4.6 KiB
CMake

# - A script to turn a VR Juggler app target into a Mac OS X bundle
#
# add_vrjuggler_bundle_sources(SOURCES_VAR_NAME) - run before add_executable
# finish_vrjuggler_bundle(TARGET_NAME LIB_DIRS) - run after add_executable
#
# Original Author:
# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
# http://academic.cleardefinition.com
# Iowa State University HCI Graduate Program/VRAC
#
# Copyright Iowa State University 2009-2010
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)
function(add_vrjuggler_bundle_sources _target_sources)
if(APPLE)
if(NOT MACOSX_PACKAGE_DIR)
set(MACOSX_PACKAGE_DIR ${CMAKE_SOURCE_DIR}/cmake/package/macosx)
endif()
set(_vj_base_dir .)
set(_vj_data_dir ${vj_base_dir}/share/vrjuggler-2.2)
# Append Mac-specific sources to source list
set(_vj_bundle_src
${MACOSX_PACKAGE_DIR}/Resources/vrjuggler.icns
${MACOSX_PACKAGE_DIR}/Resources/vrjuggler.plist
${MACOSX_PACKAGE_DIR}/Resources/en.lproj/MainMenu.nib/classes.nib
${MACOSX_PACKAGE_DIR}/Resources/en.lproj/MainMenu.nib/info.nib
${MACOSX_PACKAGE_DIR}/Resources/en.lproj/MainMenu.nib/keyedobjects.nib)
# Add and set destination of VR Juggler required files
# configFiles *.jconf
file(GLOB
_vj_config_files
${VRJ22_LIBRARY_DIR}/../share/vrjuggler-2.2/data/configFiles/*.jconf)
list(APPEND _vj_bundle_src ${_vj_config_files})
# definitions *.jdef
file(GLOB
_vj_defs_files
${VRJ22_LIBRARY_DIR}/../share/vrjuggler-2.2/data/definitions/*.jdef)
list(APPEND _vj_bundle_src ${_vj_defs_files})
# models *.flt
file(GLOB
_vj_model_files
${VRJ22_LIBRARY_DIR}/../share/vrjuggler-2.2/data/models/*.flt)
list(APPEND _vj_bundle_src ${_vj_model_files})
# sounds *.wav
file(GLOB
_vj_sound_files
${VRJ22_LIBRARY_DIR}/../share/vrjuggler-2.2/data/sounds/*.wav)
list(APPEND _vj_bundle_src ${_vj_sound_files})
# calibration.table - needed?
list(APPEND
_vj_bundle_src
${VRJ22_LIBRARY_DIR}/../share/vrjuggler-2.2/data/calibration.table)
message(STATUS "vjbundlesrc: ${_vj_bundle_src}")
set(${_target_sources}
${${_target_sources}}
${_vj_bundle_src}
PARENT_SCOPE)
# Set destination of nib files
set_source_files_properties(${MACOSX_PACKAGE_DIR}/Resources/en.lproj/MainMenu.nib/classes.nib
${MACOSX_PACKAGE_DIR}/Resources/en.lproj/MainMenu.nib/info.nib
${MACOSX_PACKAGE_DIR}/Resources/en.lproj/MainMenu.nib/keyedobjects.nib
PROPERTIES
MACOSX_PACKAGE_LOCATION
Resources/en.lproj/MainMenu.nib/)
# Set destination of Resources
set_source_files_properties(${MACOSX_PACKAGE_DIR}/Resources/vrjuggler.icns
${MACOSX_PACKAGE_DIR}/Resources/vrjuggler.plist
PROPERTIES
MACOSX_PACKAGE_LOCATION
Resources/)
set_source_files_properties(${_vj_config_files}
PROPERTIES
MACOSX_PACKAGE_LOCATION
${_vj_data_dir}/data/configFiles/)
set_source_files_properties(${_vj_defs_files}
PROPERTIES
MACOSX_PACKAGE_LOCATION
${_vj_data_dir}/data/definitions/)
set_source_files_properties(${_vj_model_files}
PROPERTIES
MACOSX_PACKAGE_LOCATION
${_vj_data_dir}/data/models/)
set_source_files_properties(${_vj_sound_files}
PROPERTIES
MACOSX_PACKAGE_LOCATION
${_vj_data_dir}/data/sounds/)
set_source_files_properties(${VRJ22_LIBRARY_DIR}/../share/vrjuggler-2.2/data/calibration.table
PROPERTIES
MACOSX_PACKAGE_LOCATION
${_vj_data_dir}/data/)
endif()
endfunction()
function(finish_vrjuggler_bundle _target _libdirs)
if(APPLE)
if(NOT MACOSX_PACKAGE_DIR)
set(MACOSX_PACKAGE_DIR ${CMAKE_SOURCE_DIR}/cmake/package/macosx)
endif()
set_target_properties(${_target}
PROPERTIES
MACOSX_BUNDLE
true
MACOSX_BUNDLE_INFO_PLIST
${MACOSX_PACKAGE_DIR}/VRJuggler22BundleInfo.plist.in
MACOSX_BUNDLE_ICON_FILE
vrjuggler.icns
MACOSX_BUNDLE_INFO_STRING
"${PROJECT_NAME} (VR Juggler Application) version ${CPACK_PACKAGE_VERSION}, created by ${CPACK_PACKAGE_VENDOR}"
MACOSX_BUNDLE_GUI_IDENTIFIER
org.vrjuggler.${PROJECT_NAME}
MACOSX_BUNDLE_SHORT_VERSION_STRING
${CPACK_PACKAGE_VERSION}
MACOSX_BUNDLE_BUNDLE_VERSION
${CPACK_PACKAGE_VERSION})
set(BUNDLE_LIBS
libboost_filesystem-1_34_1.dylib
libboost_signals-1_34_1.dylib)
set(BUNDLE_LIB_DIRS ${_libdirs})
configure_file(${MACOSX_PACKAGE_DIR}/fixupbundle.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/${_target}-fixupbundle.cmake
@ONLY)
add_custom_command(TARGET
${_target}
POST_BUILD
COMMAND
${CMAKE_COMMAND}
-P
${CMAKE_CURRENT_BINARY_DIR}/${_target}-fixupbundle.cmake
VERBATIM)
endif()
endfunction()