Use Cmake to generate app-bundle on Mac
- build the .plist using CMake features - update the nightly Mac packaging script for the new layout
This commit is contained in:
parent
826ea8139f
commit
7bc7197f6a
4 changed files with 74 additions and 67 deletions
36
CMakeModules/FlightGearBundleInfo.plist.in
Normal file
36
CMakeModules/FlightGearBundleInfo.plist.in
Normal file
|
@ -0,0 +1,36 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${MACOSX_BUNDLE_EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleGetInfoString</key>
|
||||
<string>${MACOSX_BUNDLE_INFO_STRING}</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>${MACOSX_BUNDLE_ICON_FILE}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>${MACOSX_BUNDLE_GUI_IDENTIFIER}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleLongVersionString</key>
|
||||
<string>${MACOSX_BUNDLE_LONG_VERSION_STRING}</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${MACOSX_BUNDLE_BUNDLE_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>${MACOSX_BUNDLE_SHORT_VERSION_STRING}</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>${MACOSX_BUNDLE_BUNDLE_VERSION}</string>
|
||||
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>10.6.0</string>
|
||||
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>${MACOSX_BUNDLE_COPYRIGHT}</string>
|
||||
</dict>
|
||||
</plist>
|
|
@ -20,10 +20,6 @@ puts "Code signing identity is #{$codeSignIdentity}"
|
|||
|
||||
puts "osgVersion=#{osgVersion}, so-number=#{$osgSoVersion}"
|
||||
|
||||
$svnLibs = ['svn_client', 'svn_wc', 'svn_delta', 'svn_diff', 'svn_ra',
|
||||
'svn_ra_local', 'svn_repos', 'svn_fs', 'svn_fs_fs', 'svn_fs_util',
|
||||
'svn_ra_svn', 'svn_subr', 'svn_ra_neon']
|
||||
|
||||
def fix_install_names(object)
|
||||
#puts "fixing install names for #{object}"
|
||||
|
||||
|
@ -46,6 +42,11 @@ puts "Erasing previous image dir"
|
|||
`rm -rf #{dmgDir}`
|
||||
|
||||
bundle=dmgDir + "/FlightGear.app"
|
||||
|
||||
puts "Moving & renaming app bundle"
|
||||
`mkdir -p #{dmgDir}`
|
||||
`mv #{$prefixDir}/fgfs.app #{bundle}`
|
||||
|
||||
contents=bundle + "/Contents"
|
||||
macosDir=contents + "/MacOS"
|
||||
$frameworksDir=contents +"/Frameworks"
|
||||
|
@ -53,25 +54,6 @@ resourcesDir=contents+"/Resources"
|
|||
osgPluginsDir=contents+"/PlugIns/osgPlugins-#{osgVersion}"
|
||||
volName="\"FlightGear Nightly Build\""
|
||||
|
||||
def fix_svn_install_names(object)
|
||||
$svnLibs.each do |l|
|
||||
fileName = "lib#{l}-1.0.dylib"
|
||||
newName = "@executable_path/../Frameworks/#{fileName}"
|
||||
`install_name_tool -change #{fileName} #{newName} #{object}`
|
||||
end
|
||||
end
|
||||
|
||||
def copy_svn_libs()
|
||||
puts "Copying Subversion client libraries"
|
||||
$svnLibs.each do |l|
|
||||
libFile = "lib#{l}-1.0.dylib"
|
||||
path = "#{$frameworksDir}/#{libFile}"
|
||||
`cp #{$prefixDir}/lib/#{libFile} #{$frameworksDir}`
|
||||
fix_svn_install_names(path)
|
||||
# `install_name_tool -id #{libFile} #{path}`
|
||||
end
|
||||
end
|
||||
|
||||
def code_sign(path)
|
||||
puts "Signing #{path}"
|
||||
`codesign -s "#{$codeSignIdentity}" #{path}`
|
||||
|
@ -82,7 +64,6 @@ fgVersion = File.read("#{srcDir}/version").strip
|
|||
dmgPath = Dir.pwd + "/fg_mac_nightly_#{fgVersion}.dmg"
|
||||
|
||||
puts "Creating directory structure"
|
||||
`mkdir -p #{macosDir}`
|
||||
`mkdir -p #{$frameworksDir}`
|
||||
`mkdir -p #{resourcesDir}`
|
||||
`mkdir -p #{osgPluginsDir}`
|
||||
|
@ -97,7 +78,6 @@ bins.each do |b|
|
|||
outPath = "#{macosDir}/#{b}"
|
||||
`cp #{$prefixDir}/bin/#{b} #{outPath}`
|
||||
fix_install_names(outPath)
|
||||
fix_svn_install_names(outPath)
|
||||
end
|
||||
|
||||
puts "copying libraries"
|
||||
|
@ -117,16 +97,6 @@ $osgPlugins.each do |p|
|
|||
fix_install_names("#{osgPluginsDir}/#{pluginFile}")
|
||||
end
|
||||
|
||||
copy_svn_libs()
|
||||
|
||||
# Info.plist
|
||||
template = File.read("#{srcDir}/package/mac/nightly.plist.in")
|
||||
output = ERB.new(template).result(binding)
|
||||
|
||||
File.open("#{contents}/Info.plist", 'w') { |f|
|
||||
f.write(output)
|
||||
}
|
||||
|
||||
`cp #{srcDir}/package/mac/nightly-readme.rtf #{dmgDir}/ReadMe.rtf`
|
||||
`cp #{srcDir}/package/mac/FlightGear.icns #{resourcesDir}/FlightGear.icns`
|
||||
`cp #{srcDir}/COPYING #{dmgDir}`
|
||||
|
|
|
@ -1,29 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>FlightGear.icns</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleGetInfoString</key>
|
||||
<string>FlightGear nightly build</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>FlightGear</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>org.flightgear.FlightGear</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string><%= fgVersion %></string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>unstable nightly build</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>10.6.0</string>
|
||||
<key>NSMainNibFile</key>
|
||||
<string>MainMenu</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string>NSApplication</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -70,7 +70,34 @@ source_group("Main\\Sources" FILES ${SOURCES})
|
|||
# important we pass WIN32 here so the console is optional. Other
|
||||
# platforms ignore this option. If a console is needed we allocate
|
||||
# it manually via AllocConsole()
|
||||
add_executable(fgfs WIN32 ${SOURCES} ${FG_SOURCES} ${FG_HEADERS} ${HEADERS})
|
||||
# similarly pass MACOSX_BUNDLE so we generate a .app on Mac
|
||||
add_executable(fgfs WIN32 MACOSX_BUNDLE
|
||||
${SOURCES} ${FG_SOURCES} ${FG_HEADERS} ${HEADERS})
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# MacOSX bundle packagaing
|
||||
|
||||
if(APPLE)
|
||||
execute_process(COMMAND date +%Y
|
||||
OUTPUT_VARIABLE CURRENT_YEAR
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
|
||||
# in our local CMakeModules dir
|
||||
set_target_properties(fgfs PROPERTIES
|
||||
MACOSX_BUNDLE_INFO_PLIST FlightGearBundleInfo.plist.in
|
||||
MACOSX_BUNDLE_GUI_IDENTIFIER "org.flightgear.FlightGear"
|
||||
MACOSX_BUNDLE_SHORT_VERSION_STRING ${FLIGHTGEAR_VERSION}
|
||||
MACOSX_BUNDLE_LONG_VERSION_STRING "FlightGear ${FLIGHTGEAR_VERSION} Nightly"
|
||||
MACOSX_BUNDLE_BUNDLE_VERSION ${FLIGHTGEAR_VERSION}
|
||||
MACOSX_BUNDLE_COPYRIGHT "FlightGear ${FLIGHTGEAR_VERSION} © 1997-${CURRENT_YEAR}, The FlightGear Project. Licensed under the GNU Public License version 2."
|
||||
MACOSX_BUNDLE_INFO_STRING "Nightly build of FlightGear ${FLIGHTGEAR_VERSION} for testing and development"
|
||||
MACOSX_BUNDLE_BUNDLE_NAME "FlightGear"
|
||||
MACOSX_BUNDLE_ICON_FILE "FlightGear.icns"
|
||||
)
|
||||
endif()
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
get_property(FG_LIBS GLOBAL PROPERTY FG_LIBS)
|
||||
#message(STATUS "fg libs ${FG_LIBS}")
|
||||
|
@ -110,7 +137,6 @@ target_link_libraries(fgfs
|
|||
${OPENSCENEGRAPH_LIBRARIES}
|
||||
${OPENGL_LIBRARIES}
|
||||
${PLIB_LIBRARIES}
|
||||
${JPEG_LIBRARY}
|
||||
${HLA_LIBRARIES}
|
||||
${EVENT_INPUT_LIBRARIES}
|
||||
${SIMGEAR_CORE_LIBRARY_DEPENDENCIES}
|
||||
|
@ -118,7 +144,11 @@ target_link_libraries(fgfs
|
|||
${PLATFORM_LIBS}
|
||||
)
|
||||
|
||||
install(TARGETS fgfs RUNTIME DESTINATION bin)
|
||||
if (APPLE)
|
||||
install(TARGETS fgfs BUNDLE DESTINATION .)
|
||||
else()
|
||||
install(TARGETS fgfs RUNTIME DESTINATION bin)
|
||||
endif()
|
||||
|
||||
if(ENABLE_METAR)
|
||||
add_executable(metar metar_main.cxx)
|
||||
|
|
Loading…
Add table
Reference in a new issue