Merge commit '6481cc3d7534a34435e88d343eb5f499001032a0'
This commit is contained in:
146
cmake/MakeVRJugglerAppBundle30.cmake
Normal file
146
cmake/MakeVRJugglerAppBundle30.cmake
Normal file
@@ -0,0 +1,146 @@
|
||||
# - 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()
|
||||
Reference in New Issue
Block a user