| JamPlus manual
    | 
The iOS module contains special build rules to create a C/C++/Objective C/Objective C++ iOS application from start to finish.
The ios module will automatically detect the appropriate compilers and set up some architecture-specific items.
Next, some combination of the following rule calls (and any others described below) are needed to build a full iOS .ipa for installation and distribution.
An iOS build is initiated with a C.TOOLCHAIN of ios/CONFIG. This will build the application bundle, but it will not build the .ipa.
To bundle up an .ipa, build the archive:TARGET target.
To install the .ipa, build the install:TARGET target. Be sure to have the ideviceinstaller.exe binaries in bin/PLATFORM/libimobiledevice/.
For the given project TARGET, assign the framework search DIRECTORIES to the current toolchain.
| TARGET | The target to assign the link DIRECTORIESto.TARGETis optional if rule ActiveTarget TARGET has been specified. IfTARGETis*, the framework search directories are made available globally. | 
| DIRECTORIES | The list of framework search directories to apply. Absolute paths are used directly. Relative paths are local to . That is, they are relative to the subdirectory specified via SubDir. | 
Links TARGET against the FRAMEWORKS specified. No dependencies are set, so changes to the framework will not be relinked.
| TARGET | The target to link LIBRARIESto.TARGETis optional if rule ActiveTarget TARGET has been specified. | 
| FRAMEWORKS | The list of frameworks to link. The frameworks are specified without an extension. | 
Weak links TARGET against the FRAMEWORKS specified. No dependencies are set, so changes to the framework will not be relinked.
| TARGET | The target to link LIBRARIESto.TARGETis optional if rule ActiveTarget TARGET has been specified. | 
| FRAMEWORKS | The list of frameworks to link. The frameworks are specified without an extension. | 
In order to output a final .ipa to be installed on an iOS device, ios.Archive must be called for the TARGET.
| TARGET | The target to convert to an .ipa.TARGETis optional if rule ActiveTarget TARGET has been specified. | 
| OUTPUT_PATH | The final resting place of the .ipa. | 
| ITUNES_ARTWORK | The path to a .jpgto be used as the icon within iTunes. | 
| OPTIONS | The list of options applied when building the .ipa. | 
install- Installs the .ipa on the USB-connected iOS device. Requireslibimobiledeviceinstalled installed within thejamplus/bin/libimobiledevicedirectory.
run- Installs and runs the application on the USB-connected iOS device. Requireslibimobiledeviceinstalled within thejamplus/bin/libimobiledevicedirectory.
Takes a provided asset catalog and builds it into its individual components. ios.AssetCatalog currently handles .appiconset, .imageset, and .launchimage directories.
| TARGET | The target to build the asset catalog for. TARGETis optional if rule ActiveTarget TARGET has been specified. | 
| ASSET_CATALOG_PATH | The path to the .xcassetsdirectory containing the asset catalog components. | 
| DESTINATION_PATH | (optional) The output directory for the generated assets. Defaults to the bundle path. | 
In order to output an application bundle, the ios.Bundle rule must be called. If TOOLCHAINS is specified, those requested toolchain link targets are run through C.ios.Lipo, and all necessary components are bundled together.
ios.Bundle should be the last rule called in a sequence of rule calls describing the build of an iOS application.
| TARGET | The target to build. TARGETis optional if rule ActiveTarget TARGET has been specified. | 
| TOOLCHAINS | (optional) The list of toolchains used to build multiple architectures for the bundle. The default toolchain is used if none are specified. | 
For the given bundle TARGET, begin an array entry within the Info.plist. Call rule ios.BundleInfoArrayEnd TARGET to complete the array entry.
| TARGET | The bundle target to affect the Info.plistfor.TARGETis optional if rule ActiveTarget TARGET has been specified. | 
| KEY | The key name of the array entry within the Info.plist. | 
For the given bundle TARGET, assign KEY=VALUE as an array of booleans to the bundle's Info.plist.
| TARGET | The bundle target to affect the Info.plistfor.TARGETis optional if rule ActiveTarget TARGET has been specified. | 
| KEY | The key portion of the key/value pair to set within the Info.plist. | 
| VALUE | The boolean array value portion of the key/value pair to set within the Info.plist. | 
| NO_OVERRIDE | Pass 1ortrueto not affect an already existing entry. | 
For the given bundle TARGET, begin a array dict entry within the Info.plist. Call rule C.ios.BundleInfoArrayDictEnd TARGET to complete the dict entry.
| TARGET | The bundle target to affect the Info.plistfor.TARGETis optional if rule ActiveTarget TARGET has been specified. | 
For the given bundle TARGET, end the current array entry begun with rule ios.BundleInfoArrayDictBegin TARGET within the Info.plist.
| TARGET | The bundle target to affect the Info.plistfor.TARGETis optional if rule ActiveTarget TARGET has been specified. | 
For the given bundle TARGET, end the current array entry begun with rule ios.BundleInfoArrayBegin TARGET : KEY within the Info.plist.
| TARGET | The bundle target to affect the Info.plistfor.TARGETis optional if rule ActiveTarget TARGET has been specified. | 
For the given bundle TARGET, assign KEY=VALUE as an array of integers to the bundle's Info.plist.
| TARGET | The bundle target to affect the Info.plistfor.TARGETis optional if rule ActiveTarget TARGET has been specified. | 
| KEY | The key portion of the key/value pair to set within the Info.plist. | 
| VALUE | The integer array value portion of the key/value pair to set within the Info.plist. | 
| NO_OVERRIDE | Pass 1ortrueto not affect an already existing entry. | 
For the given bundle TARGET, assign KEY=VALUE as an array of strings to the bundle's Info.plist.
| TARGET | The bundle target to affect the Info.plistfor.TARGETis optional if rule ActiveTarget TARGET has been specified. | 
| KEY | The key portion of the key/value pair to set within the Info.plist. | 
| VALUE | The string array value portion of the key/value pair to set within the Info.plist. | 
| NO_OVERRIDE | Pass 1ortrueto not affect an already existing entry. | 
For the given bundle TARGET, assign KEY=VALUE as a boolean type to the bundle's Info.plist.
| TARGET | The bundle target to affect the Info.plistfor.TARGETis optional if rule ActiveTarget TARGET has been specified. | 
| KEY | The key portion of the key/value pair to set within the Info.plist. | 
| VALUE | The value portion of the key/value pair to set within the Info.plist. | 
| NO_OVERRIDE | Pass 1ortrueto not affect an already existing entry. | 
For the given bundle TARGET, begin a dict entry within the Info.plist. Call rule ios.BundleInfoDictEnd TARGET to complete the dict entry.
| TARGET | The bundle target to affect the Info.plistfor.TARGETis optional if rule ActiveTarget TARGET has been specified. | 
| KEY | The key name of the dict entry within the Info.plist. | 
For the given bundle TARGET, end the current dict entry begun with rule ios.BundleInfoDictBegin TARGET : KEY within the Info.plist.
| TARGET | The bundle target to affect the Info.plistfor.TARGETis optional if rule ActiveTarget TARGET has been specified. | 
For the given bundle TARGET, assign KEY=VALUE as an integer type to the bundle's Info.plist.
| TARGET | The bundle target to affect the Info.plistfor.TARGETis optional if rule ActiveTarget TARGET has been specified. | 
| KEY | The key portion of the key/value pair to set within the Info.plist. | 
| VALUE | The value portion of the key/value pair to set within the Info.plist. | 
| NO_OVERRIDE | Pass 1ortrueto not affect an already existing entry. | 
For the given bundle TARGET, assign KEY=VALUE as string type to the bundle's Info.plist.
| TARGET | The bundle target to affect the Info.plistfor.TARGETis optional if rule ActiveTarget TARGET has been specified. | 
| KEY | The key portion of the key/value pair to set within the Info.plist. | 
| VALUE | The value portion of the key/value pair to set within the Info.plist. | 
| NO_OVERRIDE | Pass 1ortrueto not affect an already existing entry. | 
For the given bundle TARGET, assign KEY=VALUE as an array of strings to the bundle's Info.plist.
| TARGET | The bundle target to affect the Info.plistfor.TARGETis optional if rule ActiveTarget TARGET has been specified. | 
| KEY | The key portion of the key/value pair to set within the Info.plist. | 
| VALUE | The value portion of the key/value pair to set within the Info.plist. | 
| NO_OVERRIDE | Pass 1ortrueto not affect an already existing entry. | 
info- Runs:ios.BundleInfoString : CFBundleGetInfoString : ;
iconfile- Runs:ios.BundleInfoString : CFBundleIconFile : ;
iconfiles- Runs:ios.BundleInfoArrayString : CFBundleIconFiles : ;
longversion- Runs:ios.BundleInfoString : CFBundleLongVersionString : ;
bundlename- Runs:ios.BundleInfoString : CFBundleName : ;
displayname- Runs:ios.BundleInfoString : CFBundleDisplayName : ;
executable- Runs:ios.BundleInfoString : CFBundleExecutable : ;
identifier- Runs:ios.BundleInfoString : CFBundleIdentifier : ;
shortversion- Runs:ios.BundleInfoString : CFShortVersionString : ;
bundleversion- Runs:ios.BundleInfoString : CFBundleVersion : ;
copyright- Runs:ios.BundleInfoString : NSHumanReadableCopyright : ;
mainnibfile- Runs:ios.BundleInfoString : NSMainNibFile : ;
supportedplatforms- Runs:ios.BundleInfoArrayString : CFBundleSupportedPlatforms : ;
minimumosversion- Runs:ios.BundleInfoString : MinimumOSVersion : ;
uidevicefamily-VALUEmay beipadoriphone. Runs:ios.BundleInfoArrayInteger : UIDeviceFamily : ;
uiprerenderedicon- Runs:ios.BundleInfoBoolean : UIPrerenderedIcon : ;
uistatusbarhidden- Runs:ios.BundleInfoBoolean : UIStatusBarHidden : ;
uiviewcontrollerbasedstatusbarappearance- Runs:ios.BundleInfoBoolean : UIViewControllerBasedStatusBarAppearance : ;
uiinterfaceorientation-VALUEmay beportrait,portraitupsidedown,landscapeleft,landscaperight. Runs:ios.BundleInfoString : UIInterfaceOrientation : ;
uisupportedinterfaceorientations-VALUEmay beportrait,portraitupsidedown,landscapeleft,landscaperight. Runs:ios.BundleInfoString : UISupportedInterfaceOrientations : ;
For the given bundle TARGET, set the output location for the bundle via BUNDLE_PATH.
| TARGET | The target to set the bundle path against. TARGETis optional if rule ActiveTarget TARGET has been specified. | 
| BUNDLE_PATH | The output path for the bundle. If the path is absolute, it is used as is. If it is relative, the path will be rooted against $(SUBDIR). | 
For TARGET, use the provided SIGNING_IDENTITY and CERTIFICATE_CHAIN to sign the application bundle.
| TARGET | The target to code sign. TARGETis optional if rule ActiveTarget TARGET has been specified. | 
| SIGNING_IDENTITY | The name on the certificate. | 
| CERTIFICATE_CHAIN | This is only used with the iOS Build Environment for Windows. Generally, it is best to just use: "ios_development.cer:AppleIncRootCertificate.cer:AppleWWDRCA.cer:my_key.key:" | 
For the given bundle TARGET, return the output location for the bundle.
| TARGET | The target to retrieve the bundle path for. TARGETis optional if rule ActiveTarget TARGET has been specified. | 
For the given bundle TARGET, return the actual dependency graph target name of the bundle.
| TARGET | The bundle target to affect the Info.plistfor.TARGETis optional if rule ActiveTarget TARGET has been specified. | 
For the given bundle TARGET, use the Info.plist file found at SOURCE. Run it through the rule C.ConfigureFile TARGET : DESTINATION : SOURCE : OPTIONS rule to expand any variables. Use the result in the TARGET bundle.
| TARGET | The bundle target to configure the Info.plistfor.TARGETis optional if rule ActiveTarget TARGET has been specified. | 
| SOURCE | The source Info.plistfile. | 
For the given TARGET, take the LINK_TARGETS, run lipo, and output the end result at OUTPUT_PATH.
This rule does not need to be called if using rule ios.Bundle TARGET [ : TOOLCHAINS ].
| TARGET | The target to perform the Lipo operation on. TARGETis optional if rule ActiveTarget TARGET has been specified. | 
| LINK_TARGETS | A list of link targets returned from rule C.Application TARGET : SOURCES [ : OPTIONS ], rule C.Library TARGET : SOURCES [ : OPTIONS ], or rule C.GetLinkTargets TARGET : TOOLCHAIN_SPEC. | 
| OUTPUT_PATH | The output location for the Lipo'ed target. | 
For the given bundle TARGET, merge the Info.plist-style file found at SOURCE into the main Info.plist.
| TARGET | The bundle target to affect the Info.plistfor.TARGETis optional if rule ActiveTarget TARGET has been specified. | 
| SOURCE | The source file to merge into the current generated Info.plist. | 
Sets the minimum iOS version for the TARGET.
| TARGET | The target to assign a minimum OS version to. TARGETis optional if rule ActiveTarget TARGET has been specified. | 
| SDK_VERSION_MIN | The minimum OS version allowable in the format major.minor. | 
For TARGET, uses the specified .mobileprovision file at FILENAME as the bundle's embedded.mobileprovision.
| TARGET | The target to use the .mobileprovisionfile for.TARGETis optional if rule ActiveTarget TARGET has been specified. | 
| FILENAME | The filename of the .mobileprovisionfile. If the filename is a relative path, it becomes rooted against$(SUBDIR). | 
For TARGET, uses the specified PROFILE_ID to look up a matching .mobileprovision file from $(HOME)/Library/MobileDevice/Provisioning Profiles on the Mac. This rule does not work on Windows.
In general, store your application's .mobileprovision file with the application and use rule ios.ProvisionFile TARGET : FILENAME instead.
| TARGET | The target to assign the found .mobileprovisionfile.TARGETis optional if rule ActiveTarget TARGET has been specified. | 
| PROFILE_ID | The profile name. | 
Sets the iOS SDK_VERSION for the toolchain. Call this before any other ios.* rules.
| SDK_VERSION | Defaults to 9.3. | 
Compiles a directory of storyboards.
| TARGET | The target to build the storyboards for. TARGETis optional if rule ActiveTarget TARGET has been specified. | 
| LANGUAGE_DIRECTORY | The path to the (generally) Base.lprojdirectory containing the.storyboardfiles. | 
| STORYBOARD_FILES | (optional) The names of the launch image storyboard and the main storyboard, generally LaunchImageandMain. Automatically adds them to theInfo.plist. | 
After ios.Archive, launch a secure webserver for TARGET to install the .ipa onto the device.
| TARGET | The target to launch a webserver for. TARGETis optional if rule ActiveTarget TARGET has been specified. |