{"id":13732292,"url":"https://github.com/elucideye/drishti","last_synced_at":"2025-04-06T10:11:34.680Z","repository":{"id":43921690,"uuid":"63539526","full_name":"elucideye/drishti","owner":"elucideye","description":"Real time eye tracking for embedded and mobile devices.","archived":false,"fork":false,"pushed_at":"2019-09-04T19:09:19.000Z","size":12790,"stargazers_count":396,"open_issues_count":67,"forks_count":83,"subscribers_count":39,"default_branch":"master","last_synced_at":"2025-03-30T08:12:08.251Z","etag":null,"topics":["acf","android","c-plus-plus","dlib","drishti","eye-tracking","face-detection","face-tracking","gradient-boosting","hunter","ios","object-detection","xgboost"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/elucideye.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-07-17T15:43:58.000Z","updated_at":"2025-02-25T03:07:57.000Z","dependencies_parsed_at":"2022-08-24T18:50:47.076Z","dependency_job_id":null,"html_url":"https://github.com/elucideye/drishti","commit_stats":null,"previous_names":[],"tags_count":27,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elucideye%2Fdrishti","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elucideye%2Fdrishti/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elucideye%2Fdrishti/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elucideye%2Fdrishti/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elucideye","download_url":"https://codeload.github.com/elucideye/drishti/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247464222,"owners_count":20942970,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["acf","android","c-plus-plus","dlib","drishti","eye-tracking","face-detection","face-tracking","gradient-boosting","hunter","ios","object-detection","xgboost"],"created_at":"2024-08-03T02:01:52.082Z","updated_at":"2025-04-06T10:11:34.650Z","avatar_url":"https://github.com/elucideye.png","language":"C++","funding_links":[],"categories":["GameProgramming"],"sub_categories":[],"readme":"drishti\n=======\n\n|Travis| |Appveyor| |License (3-Clause BSD)| |Hunter| |Gitter|\n\n.. figure:: https://user-images.githubusercontent.com/554720/28922218-3a005f9c-7827-11e7-839c-ef3e9a282f70.png\n   :alt: drishti\\_text\\_big\n\nReal time eye tracking for embedded and mobile devices in C++11.\n================================================================\n\n|eye models 1| |eye models 2| |eye models 3|\n\nNEWS (2018/08/10)\n-----------------\n\nNative iOS, Android, and \"desktop\" variants of the real-time\n``facefilter`` application have been added here:\n`src/examples/facefilter \u003chttps://github.com/elucideye/drishti/tree/master/src/examples/facefilter\u003e`__.\nThese applications link against the installed public ``drishti::drishti``\npackage interface, which is designed without external types in the API definition.\nThe ``facefilter`` demos are enabled by the ``DRISHTI_BUILD_EXAMPLES``\nCMake option, and the entire ``src/examples`` tree is designed to be relocatable,\nyou can ``cp -r src/examples ${HOME}/drishti_examples``, customize, and\nbuild, by simply updating the drishti package details.\n\niOS\n~~~\n\nThe ``iOS`` ``facefilter`` target requires Xcode 9 (beta 4) or above\n(Swift language requirements)  and will be generated directly as a standard CMake\n``add_executable()`` target as part of the usual top level project build --\n*if* you are using an appropriate CMake\n`iOS toolchain \u003chttps://polly.readthedocs.io/en/latest/toolchains/ios.html\u003e`__\nfor\n`cross compilation \u003chttps://gitlab.kitware.com/cmake/community/wikis/doc/cmake/CrossCompiling\u003e`__\nfrom your macOS + Xcode host for your ``iOS`` device.   Please see\n`Polly Based Build`_ and `iOS Build`_ below for more details.\n\nAndroid Studio\n~~~~~~~~~~~~~~\n\nUPDATE: Android NDK r19 is not currently supported due to significant structural changes in the android-ndk toolchain that conflict with CMake's internal Android support.  See this `_discussion \u003chttps://gitlab.kitware.com/cmake/cmake/issues/18787#note_520775\u003e`__ for more details.\n\nYou can download standalone NDK r18x toolchains or earlier and specify those directly in your gradle `local.properties`.\n\n**drishti/android-studio/local.properties** example:\n\n.. code-block:: none\n\n  ndk.dir=/Users/username/android/android-ndk-r18b\n  sdk.dir=/Users/username/Library/Android/sdk\n  cmake.dir=/usr/local\n\nThe top level Android Studio application is located in the ``android-studio`` directory.\nThis target will build and manage repository C++ sources directly as part of the project.\nAndroid Studio/Gradle is required to build the application layer,\nand the CMake build is managed directly by ``gradle``.  There are a\nfew platform specific configurations that must be addressed before building.\nPlease see `Android Studio Build`_ below for more details.\n\nOverview\n--------\n\nGoal: SDK size \u003c= 1 MB and combined resources (object detection +\nregression models) \u003c= 4 MB.\n\n-  `Hunter \u003chttps://github.com/ruslo/hunter\u003e`__ package management and\n   CMake build system by Ruslan Baratov, as well as CI and much of the\n   real time `facefilter` mobile application(s) layer: \"Organize Freedom!\" :)\n-  A C++ and OpenGL ES 2.0 implementation of\n   `Fast Feature Pyramids for Object Detection\n   \u003chttps://pdollar.github.io/files/papers/DollarPAMI14pyramids.pdf\u003e`__\n   (see `Piotr's Matlab Toolbox \u003chttps://pdollar.github.io/toolbox\u003e`__)\n   for face and eye detection -- the ACF library is available as a standalone\n   Hunter package `here \u003chttps://github.com/elucideye/acf\u003e`__\n-  Iris ellipse fitting via\n   `Cascaded Pose Regression \u003chttps://pdollar.github.io/files/papers/DollarCVPR10pose.pdf\u003e`__\n   (Piotr Dollar, et al) + `XGBoost \u003chttps://github.com/dmlc/xgboost\u003e`__\n   regression (Tianqi Chen, et al)\n-  Face landmarks and global eye models provided by\n   `\"One Millisecond Face Alignment with an Ensemble of Regression Trees \u003chttp://www.cvfoundation.org/openaccess/content_cvpr_2014/papers/Kazemi_One_Millisecond_Face_2014_CVPR_paper.pdf\u003e`__\n   (Kazemi, et al) using a modified implementation from\n   `Dlib \u003chttps://github.com/davisking/dlib\u003e`__ (Davis King)\n   (normalized pixel differences, line indexed features, PCA size reductions)\n-  OpenGL ES friendly GPGPU shader processing and efficient iOS +\n   Android texture handling using a modified version of\n   `ogles\\_gpgpu \u003chttps://github.com/hunter-packages/ogles_gpgpu\u003e`__\n   (Markus Kondrad) with a number of shader implementations taken\n   directly from `GPUImage \u003chttps://github.com/BradLarson/GPUImage\u003e`__\n   (Brad Larson)\n\n+---------------------------+\n| iPhone @ 30 FPS (VIDEO)   |\n+===========================+\n| |iPhone|                  |\n+---------------------------+\n\nDrishti Right Eye Annotation Scheme\n-----------------------------------\n\n+----------------+---------------------------------------------------------------+\n| FEATURE        | SPECIFICATION                                                 |\n+================+===============================================================+\n| eyelids        | 2D points 0-15                                                |\n+----------------+---------------------------------------------------------------+\n| crease         | 2D points 16-24                                               |\n+----------------+---------------------------------------------------------------+\n| iris center    | 2D point 25                                                   |\n+----------------+---------------------------------------------------------------+\n| outer limbus   | limbus intersection with ray from outer corner to iris center |\n+----------------+---------------------------------------------------------------+\n| inner limbus   | limbus intersection with ray from inner corner to iris center |\n+----------------+---------------------------------------------------------------+\n| iris ellipse   | 2D center, minor axis, major axis, angle (radians)            |\n+----------------+---------------------------------------------------------------+\n| pupil ellipse  | 2D center, minor axis, major axis, angle (radians)            |\n+----------------+---------------------------------------------------------------+\n\n* the left eye is obtained by Y axis mirroring\n* total (27*2)+(2*5) = 64 parameters\n* the eye crease is useful for pose indexing, but better guidelines are needed\n* the 2D limbus points are slightly redundant (given the ellipse iris model) but the intersection points are stable with respect to squinting and provide an efficient anchor for posed indexed features (accurate point-to-ellipse distances are non-trivial and are fairly computationally intensive)\n* currently 2D only (gaze angle ground truth would be beneficial)\n\n.. figure:: https://user-images.githubusercontent.com/554720/33522880-227e2468-d7c6-11e7-9705-13df5da04894.jpg\n   :alt: drishti\\_annotation\\_scheme\n\nQuick Start (i.e., How do I make this library work?)\n----------------------------------------------------\n\nGeneral\n~~~~~~~\n\nDrishti is a `CMake \u003chttps://github.com/kitware/CMake\u003e`__ based project\nthat uses the `Hunter \u003chttps://github.com/ruslo/hunter\u003e`__ package\nmanager to download and build project dependencies from source as\nneeded. Hunter contains `detailed\ndocumentation \u003chttps://docs.hunter.sh/en/latest\u003e`__, but a few high\nlevel notes and documentation links are provided here to help orient\nfirst time users. In practice, some working knowledge of CMake may also\nbe required. Hunter itself is written in CMake, and is installed as part\nof the build process from a single ``HunterGate()`` macro at the top of\nthe root ``CMakeLists.txt`` file (typically\n``cmake/Hunter/HunterGate.cmake``) (you don't have to build or install\nit). Each CMake dependency's ``find_package(FOO)`` call that is paired\nwith a ``hunter_add_package(FOO CONFIG REQUIRED)`` will be managed by\nHunter. In most cases, the only system requirement for building a Hunter\nproject is `a recent CMake \u003chttps://docs.hunter.sh/en/latest/quick-start/cmake.html\u003e`__\n, a working compiler corresponding to the operative toolchain and native build tool.\nIf you're not familiar with CMake, you can try to build\n`this minimal example \u003chttps://cgold.readthedocs.io/en/latest/first-step.html\u003e`__\nto get a basic understanding.\n\nHunter will maintain all dependencies in a\n`versioned \u003chttps://docs.hunter.sh/en/latest/overview/customization.html\u003e`__\nlocal\n`cache \u003chttps://docs.hunter.sh/en/latest/overview/shareable.html\u003e`__ by\ndefault (typically ``${HOME}/.hunter``) where they can be reused in\nsubsequent builds and shared between different projects. They can also\nbe stored in a server side `binary\ncache \u003chttps://docs.hunter.sh/en/latest/overview/binaries.html\u003e`__ --\nselect `toolchains \u003c#Toolchains\u003e`__ will be backed by a server side\nbinary cache (https://github.com/elucideye/hunter-cache) and will\nproduce faster first time builds (use them if you can!).\n\nGet Latest Sources\n~~~~~~~~~~~~~~~~~~\n\nClone this repository and initialize all submodules:\n\n.. code-block:: none\n\n  \u003e git clone https://github.com/elucideye/drishti\n  \u003e cd drishti\n  [drishti]\u003e git submodule update --init .\n\nor\n\n.. code-block:: none\n\n  \u003e git clone --recursive https://github.com/elucideye/drishti\n\nGenerate and Build\n~~~~~~~~~~~~~~~~~~\n\nDesktop platforms usually don't require a toolchain (a default toolchain with C++11 support will\nbe set by Drishti) and you can generate and build Drishti as a regular CMake project.\n\nLinux + GCC + Makefile with Drishti examples, Release:\n\n.. code-block:: none\n\n  cmake -H. -B_builds -DHUNTER_STATUS_DEBUG=ON -DDRISHTI_BUILD_EXAMPLES=ON -DCMAKE_BUILD_TYPE=Release\n  cmake --build _builds\n\nmacOS + Xcode with Drishti examples, Release:\n\n.. code-block:: none\n\n  cmake -H. -B_builds -GXcode -DHUNTER_STATUS_DEBUG=ON -DDRISHTI_BUILD_EXAMPLES=ON\n  cmake --build _builds --config Release\n\nWindows + Visual Studio 15 2017 with Drishti examples, Release:\n\n.. code-block:: none\n\n  cmake -H. -B_builds -G \"Visual Studio 15 2017\" -DHUNTER_STATUS_DEBUG=ON -DDRISHTI_BUILD_EXAMPLES=ON\n  cmake --build _builds --config Release\n\nTo run the install procedure add the ``CMAKE_INSTALL_PREFIX`` variable\nand use ``--target install``:\n\n.. code-block:: none\n\n  cmake -H. -B_builds -G \"Visual Studio 15 2017\" -DHUNTER_STATUS_DEBUG=ON -DCMAKE_INSTALL_PREFIX=_install\n  cmake --build _builds --config Release --target install\n\nPolly Based Build\n~~~~~~~~~~~~~~~~~\n\nTo support cross platform builds and testing, the CI scripts make use of\n`Polly \u003chttps://github.com/ruslo/polly\u003e`__: a set of common CMake\ntoolchains paired with a simple ``polly.py`` CMake build script.\nPolly is a Python script, make sure Python 3 is installed:\n\n.. code-block:: none\n\n  \u003e which python3\n  /usr/bin/python3\n\nClone Polly and add ``bin`` folder to ``PATH``:\n\n.. code-block:: none\n\n  \u003e git clone https://github.com/ruslo/polly\n  \u003e export PATH=`pwd`/polly/bin:$PATH\n\nCheck it:\n\n.. code-block:: none\n\n  \u003e which polly.py\n  /.../polly/bin/polly.py\n\n  \u003e polly.py --help\n  Python version: 3.5\n  usage: polly.py [-h]\n      [--toolchain ...\n\nNote: Polly is not a build requirement, CMake can always be used\ndirectly, but it is used here for convenience.\n\nAfter the environment is configured, you can build for any supported\n``Polly`` toolchain (below you can find some toolchains used in CI) with a command like this:\n\n.. code-block:: bash\n\n    polly.py --toolchain ${TOOLCHAIN} --config-all ${CONFIG} --install --verbose\n\nBuilding examples:\n\n.. code-block:: bash\n\n    polly.py --toolchain ${TOOLCHAIN} --config-all ${CONFIG} --install --verbose --reconfig --fwd DRISHTI_BUILD_EXAMPLES=ON\n\n::\n\n\nNote: The ``--reconfig`` flag is included in the example above, which will\nre-run the CMake configure step (to incorporate CMake changes) for you.  It is\na reasonable step to add in cases where you aren't sure if it is needed.\n\niOS Build\n~~~~~~~~~\n\nSince CMake contains an Xcode generator, building for ``iOS`` is fairly straightforward.\nIn practice, it is no different than the other `polly.py` toolchain builds.  As always,\nyou will need to have an Apple Developer Account to build and run on ``iOS`` devices.\nThere are a few setup steps associated with Apple code signing requirements.\nSince iOS 10.0, Xcode projects require a valid `Team ID` entry,\nwhich can be set through CMake using the `CMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM` CMake variable.\nIf you generate an Xcode project through a `polly.py` command (described below), it will initialize\nthe field for you if the\n`POLLY_IOS_DEVELOPMENT_TEAM \u003chttps://polly.readthedocs.io/en/latest/toolchains/ios/errors/polly_ios_development_team.html#polly-ios-development-team\u003e`__\nenvironment variable is set with your `Team ID`, which\ncan be found in your `Apple Developer Account \u003chttps://developer.apple.com/account/#/membership\u003e`__.\nIf you are using an Apple Enterprise Developer Account, the ``CMAKE_TRY_COMPILE`` step can\nfail with an error beginning with `No profiles for 'com.example' were found: ...`.\nYou can fix this with a one time Xcode initialization described in\n`POLLY_IOS_DEVELOPMENT_TEAM \u003chttps://polly.readthedocs.io/en/latest/toolchains/ios/errors/polly_ios_bundle_identifier.html#polly-ios-bundle-identifier\u003e`__.\n\nAndroid Studio Build\n~~~~~~~~~~~~~~~~~~~~\n\nFor Android Studio, there are additional requirements:\n\n* CMake 3.9.2+\n* Ninja\n* Android Studio 3.2.1\n\nNote: Polly will not be used here, because CMake is launched by Android Studio\nitself.\n\nNote: Host compiler is required for some parts of the build.\nE.g. on Windows you have to install\n`Visual Studio \u003chttps://cgold.readthedocs.io/en/latest/first-step/native-build-tool/visual-studio.html\u003e`__.\nPlease check that `minimal C++ example \u003chttps://cgold.readthedocs.io/en/latest/first-step/minimal-example.html\u003e`__\nis working.\n\nThe path to the CMake executable should be added to the ``local.properties``\nfile before opening ``drishti/android-studio`` in Android Studio, or before\ninvoking the Gradle build script.  If you do not have a ``local.properties``\nfile, it will be generated automatically by Android Studio in the top level\n``android-studio`` folder (usually ``drishti/android-studio/local.properites``),\nwhen it is launched, at which point you can add the ``cmake.dir=/path/to/native/cmake``\nCMake entry and rerun.  The ``local.properties`` file will look something like this:\n\n\n.. code-block:: none\n\n    ndk.dir=/home/username/Android/Sdk/ndk-bundle\n    sdk.dir=/home/username/Android/Sdk\n    cmake.dir=/opt/cmake\n\nThe ``cmake.dir`` entry should be set such that ``\u003ccmake.dir\u003e/bin/cmake`` points to a\nvalid ``cmake`` executable file.\n\nPlease check these instructions for details and useful notes:\n\n* https://docs.hunter.sh/en/latest/faq/android-studio.html\n\nThere is another entry point for Android Studio - ``src/examples/facefilter/android-studio``.\nIt should be used only for testing or as a template for starting your own project\nbased on Drishti.\n\nAndroid Studio Workarounds\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe following factors may contribute to some instability in the Android\nStudio managed build.\n\n* Using custom CMake 3.7+ in Android Studio is `a relatively new feature \u003chttps://developer.android.com/studio/projects/add-native-code#vanilla_cmake\u003e`__\n* Some issues are hard to track or confirm, some `issues \u003chttps://issuetracker.google.com/issues/75268076\u003e`__ are already reported but still **not fixed**\n\nWith support for official CMake binaries now in the Android Studio 3.2.1 release,\nthe Android build stability is very likely improved compared to earlier beta versions.\n\nFrom experience, the weakest part in the build has been communication between\nGradle and CMake. To minimize it, the following trick can be used:\n\n* Open the top-level ``CMakeLists.txt`` file\n* Find ``if(DRISHTI_DEBUG_STOP)`` `condition \u003chttps://github.com/elucideye/drishti/blob/d8b91e26eb1a1f62412bd2d56d1a229d646b6864/CMakeLists.txt#L102-L107\u003e`__\n* Substitute ``if(DRISHTI_DEBUG_STOP)`` with ``if(TRUE)``\n* Run Gradle build:\n\n.. code-block:: none\n\n  [drishti]\u003e cd android-studio\n  [drishti/android-studio]\u003e ./gradlew assembleDebug\n\nIf you're running it a first time there will be a high chance to hit this\nGradle issue:\n\n.. code-block:: none\n\n  * What went wrong:\n  Execution failed for task '...'.\n  \u003e Conversion = c, Flags =\n\nIn this case, just wait for few seconds and run Gradle again:\n\n.. code-block:: none\n\n  [drishti/android-studio]\u003e ./gradlew assembleDebug\n\n* Revert ``CMakeLists.txt`` file, i.e. substitute ``if(TRUE)`` with ``if(DRISHTI_DEBUG_STOP)``.\n\n* Run the CMake build without Gradle:\n\n.. code-block:: none\n\n  [drishti/android-studio]\u003e cmake --build ../src/examples/facefilter/android-studio/app/.externalNativeBuild/cmake/debug/arm64-v8a\n\nOnce the CMake build is ready, you can use ``./gradlew assembleDebug`` or open\nAndroid Studio IDE.\n\nApplications\n------------\n\nPlease see the README for the `drishti-hci \u003chttps://github.com/elucideye/drishti/blob/master/src/app/hci/README.rst\u003e`__\nconsole application to see an example of a full eye tracking pipeline with the GPGPU optimizations.\n\nIntegration\n-----------\n\nDrishti is also available as a Hunter package.  If you would like to integrate\nDrishti in your project, please see the Hunter\n`Drishti package documentation \u003chttps://docs.hunter.sh/en/latest/packages/pkg/drishti.html#pkg-drishti\u003e`__.\n\nSteps (check https://docs.hunter.sh/en/latest/quick-start.html):\n\nAdd ``cmake/HunterGate.cmake`` and a minimal ``cmake/Hunter/config.cmake`` to your project:\n\n.. code-block:: cmake\n\n    mkdir -p cmake/Hunter\n    wget https://raw.githubusercontent.com/hunter-packages/gate/master/cmake/HunterGate.cmake -O cmake/HunterGate.cmake\n    wget https://raw.githubusercontent.com/ruslo/hunter/master/examples/drishti/config.cmake -O cmake/Hunter/config.cmake\n\n::\n\nAdd ``HunterGate(URL \u003curl\u003e SHA1 \u003csha1\u003e)`` to the top of your ``CMakeLists.txt`` (You can find updated release information `here \u003chttps://github.com/ruslo/hunter/releases\u003e`__).\n\n.. code-block:: cmake\n\n    include(\"cmake/HunterGate.cmake\")\n    HunterGate(\n        URL \"https://github.com/ruslo/hunter/archive/v0.19.140.tar.gz\"\n        SHA1 \"f2c30348c05d0d424976648ce3560044e007496c\"\n        LOCAL # use cmake/Hunter/config.cmake\n    )\n\n::\n\nFinally, add the Drishti package to your CMakeLists.txt and link it to your target:\n\n.. code-block:: cmake\n\n    hunter_add_package(drishti)\n    find_package(drishti CONFIG REQUIRED)\n    target_link_libraries(your_app_or_lib PUBLIC drishti::drishti)\n\n::\n\nYou can customize the drishti package (and dependencies) by specifying a `VERSION` and/or `CMAKE_ARGS` (options) list for each package in ``cmake/Hunter/config.cmake``.\n\nPlease see https://github.com/elucideye/drishti_hunter_test for a minimal working example using the drishti hunter package.\n\nToolchains\n----------\n\nThe configurations listed below have all been tested. In general, most\nC++11 toolchains should work with minimal effort. A ``CI`` comment\nindicates that the configuration is part of the Travis or Appveyor CI\ntests, so all Hunter packages will be available in the server side\nbinary cache.\n\nLinux (Ubunty Trusty 14.04):\n\n* ``TOOLCHAIN=clang-fpic-hid-sections`` ``CONFIG=Release`` # CI\n* ``TOOLCHAIN=gcc-5-pic-hid-sections-lto`` ``CONFIG=Release`` # CI\n* ``TOOLCHAIN=libcxx`` ``CONFIG=Release`` # w/ clang 3.8\n\nOSX:\n\n* ``TOOLCHAIN=osx-10-13`` ``CONFIG=Release`` # CI\n* ``TOOLCHAIN=osx-10-12-sanitize-address-hid-sections`` ``CONFIG=Release`` # CI\n* ``TOOLCHAIN=xcode-hid-sections`` ``CONFIG=Release`` # generic\n\niOS:\n\n* ``TOOLCHAIN=ios-nocodesign-11-3-dep-9-3-arm64`` ``CONFIG=Release`` # CI\n* ``TOOLCHAIN=ios-10-1-arm64-dep-8-0-hid-sections`` ``CONFIG=Release``\n\nAndroid:\n\n* ``TOOLCHAIN=android-ndk-r17-api-19-armeabi-v7a-neon-clang-libcxx`` ``CONFIG=MinSizeRel`` # CI\n* ``TOOLCHAIN=android-ndk-r17-api-24-arm64-v8a-clang-libcxx14`` ``CONFIG=Release`` # CI\n* ``TOOLCHAIN=android-ndk-r10e-api-19-armeabi-v7a-neon-hid-sections-lto`` ``CONFIG=MinSizeRel``\n\nWindows:\n\n* ``TOOLCHAIN=vs-15-2017`` ``CONFIG=Release`` # CI\n* ``TOOLCHAIN=vs-14-2015-sdk-8-1`` ``CONFIG=Release`` # CI\n* ``TOOLCHAIN=vs-14-2015-win64-sdk-8-1`` ``CONFIG=Release`` # CI\n* ``TOOLCHAIN=vs-14-2015-win64-sdk-8-1`` ``CONFIG=Debug`` # CI\n\nThe polly out of source build trees are located in\n``_builds/${TOOLCHAIN}``, the final build products (the stuff you want)\nare installed in ``_install/${TOOLCHAIN}``, and the build logs are\ndumped in ``_logs/${TOOLCHAIN}``. The iOS frameworks are installed in\n``_frameworks/${TOOLCHAIN}``.\n\nChoosing simplest toolchain\n---------------------------\n\nOn Linux you will usually want ``--toolchain gcc-pic`` (GCC based toolchain with position independent code).\n\nOn Windows, the preferred toolchain will depend on the generator you want, e.g.,\nif you want \"Visual Studio 15 2017\", then use ``--toolchain vs-15-2017``, if you\nwant the 64 bit version use ``--toolchain vs-15-2017-win64``.\n\nOn macOS, the choice of toolchain depends on Xcode version you have installed.\nPlease check this table for Xcode versions and corresponding iOS/macOS SDK\nversions:\n\n* https://polly.readthedocs.io/en/latest/toolchains/ios.html\n\nE.g., if you have Xcode 8.3.1 installed, then the default SDK will be macOS\n10.12 SDK, hence you can use ``--toolchain osx-10-12``. Instead of the Xcode\ngenerator, you can use a Makefile toolchain - ``--toolchain osx-10-12-make``.\n\nIn the same table, you can find iOS SDK version. E.g., if you have installed\nXcode 9.4 with default iOS SDK 11.4, and you want to set the deployment SDK\nto version 9.3, you can use ``--toolchain ios-11-4-dep-9-3-arm64`` to build\nthe ARM64 architecture.  If you have several versions of Xcode installed, you\ncan use ``IOS_X_Y_DEVELOPER_DIR``/``OSX_X_Y_DEVELOPER_DIR`` environment\nvariables for switching. E.g., if ``OSX_10_13_DEVELOPER_DIR`` will be set to\nXcode 9.0 location, then Xcode 9.0 will be used with ``--toolchain osx-10-13``,\neven if Xcode 9.3 is installed and set as the default.\n\nYou can use Polly toolchains to build Android if you don't want to rely on\nAndroid Studio. The only requirement is an environment variable with the\nAndroid NDK location. Set the ``ANDROID_NDK_r17`` environment variable with\nthe path to the Android NDK r17, and you can use any\n``--toolchain android-ndk-r17-*`` variants.\n\n.. |Travis| image:: https://img.shields.io/travis/elucideye/drishti/master.svg?style=flat-square\u0026label=Linux%20OSX%20Android%20iOS\n   :target: https://travis-ci.org/elucideye/drishti/builds\n.. |Appveyor| image:: https://img.shields.io/appveyor/ci/headupinclouds/drishti.svg?style=flat-square\u0026label=Windows\n   :target: https://ci.appveyor.com/project/headupinclouds/drishti\n.. |License (3-Clause BSD)| image:: https://img.shields.io/badge/license-BSD%203--Clause-brightgreen.svg?style=flat-square\n   :target: http://opensource.org/licenses/BSD-3-Clause\n.. |Hunter| image:: https://img.shields.io/badge/hunter-drishti-blue.svg\n   :target: https://docs.hunter.sh/en/latest/packages/pkg/drishti.html\n.. |Gitter| image:: https://badges.gitter.im/elucideye/drishti.svg\n   :target: https://gitter.im/elucideye/drishti?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge\n.. |eye models 1| image:: https://user-images.githubusercontent.com/554720/28920911-d836e56a-7821-11e7-8b41-bc338f100cc1.png\n.. |eye models 2| image:: https://user-images.githubusercontent.com/554720/28920912-da9f3820-7821-11e7-848c-f526922e24ec.png\n.. |eye models 3| image:: https://user-images.githubusercontent.com/554720/28920920-dcd8e708-7821-11e7-8fc2-b9f375a9a550.png\n.. |iPhone| image:: https://goo.gl/1uLQ44\n   :target: https://vimeo.com/230351171\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felucideye%2Fdrishti","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felucideye%2Fdrishti","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felucideye%2Fdrishti/lists"}