147 lines
4.4 KiB
CMake
147 lines
4.4 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
|
|
# Updated for VR Juggler 3.0 by:
|
|
# Brandon Newendorp <brandon@newendorp.com>
|
|
|
|
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-3.0)
|
|
|
|
# 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
|
|
${VRJ30_LIBRARY_DIR}/../share/vrjuggler-3.0/data/configFiles/*.jconf)
|
|
list(APPEND _vj_bundle_src ${_vj_config_files})
|
|
|
|
# definitions *.jdef
|
|
file(GLOB
|
|
_vj_defs_files
|
|
${VRJ30_LIBRARY_DIR}/../share/vrjuggler-3.0/data/definitions/*.jdef)
|
|
list(APPEND _vj_bundle_src ${_vj_defs_files})
|
|
|
|
# models *.flt
|
|
file(GLOB
|
|
_vj_model_files
|
|
${VRJ30_LIBRARY_DIR}/../share/vrjuggler-3.0/data/models/*.flt)
|
|
list(APPEND _vj_bundle_src ${_vj_model_files})
|
|
|
|
# sounds *.wav
|
|
file(GLOB
|
|
_vj_sound_files
|
|
${VRJ30_LIBRARY_DIR}/../share/vrjuggler-3.0/data/sounds/*.wav)
|
|
list(APPEND _vj_bundle_src ${_vj_sound_files})
|
|
|
|
# calibration.table - needed?
|
|
list(APPEND
|
|
_vj_bundle_src
|
|
${VRJ30_LIBRARY_DIR}/../share/vrjuggler-3.0/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(${VRJ30_LIBRARY_DIR}/../share/vrjuggler-3.0/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}/VRJuggler30BundleInfo.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-mt.dylib
|
|
libboost_signals-mt.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()
|