{"id":21030333,"url":"https://github.com/fuse-open/legacy-cpp-framework","last_synced_at":"2025-05-15T11:32:32.907Z","repository":{"id":84725561,"uuid":"131840555","full_name":"fuse-open/legacy-cpp-framework","owner":"fuse-open","description":"Uno/C++ base framework","archived":false,"fork":false,"pushed_at":"2022-10-08T18:31:50.000Z","size":564,"stargazers_count":8,"open_issues_count":0,"forks_count":5,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-05-13T20:37:37.053Z","etag":null,"topics":["c-plus-plus","uno"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fuse-open.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2018-05-02T11:23:11.000Z","updated_at":"2025-02-28T16:39:38.000Z","dependencies_parsed_at":"2023-09-26T14:09:06.980Z","dependency_job_id":null,"html_url":"https://github.com/fuse-open/legacy-cpp-framework","commit_stats":{"total_commits":17,"total_committers":2,"mean_commits":8.5,"dds":0.05882352941176472,"last_synced_commit":"aff4d462158bb595b62be2fec18e5b33a6f02f43"},"previous_names":["fuse-open/uno-base"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fuse-open%2Flegacy-cpp-framework","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fuse-open%2Flegacy-cpp-framework/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fuse-open%2Flegacy-cpp-framework/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fuse-open%2Flegacy-cpp-framework/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fuse-open","download_url":"https://codeload.github.com/fuse-open/legacy-cpp-framework/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254254038,"owners_count":22039792,"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":["c-plus-plus","uno"],"created_at":"2024-11-19T12:17:40.272Z","updated_at":"2025-05-15T11:32:27.893Z","avatar_url":"https://github.com/fuse-open.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"Xli is a modular and cross-platform app development framework for C++. It is being used to implement the Uno C++ runtime and core library among some other things.\n\nXli is officially supported on **Android**, **iOS**, **OS X** and **Windows**. The build system also implements support for **Linux** and **Raspberry PI**, but these are not regularly tested. Additionally we're using [SDL2] as fallback, so any other platforms supported by [SDL2] could be added with some tweaks here and there.\n\nHeader documentation can be generated using `doxygen`.\n\nPlease see the \u003ca href=\"modules.html\"\u003eModules\u003c/a\u003e page for an overview of the functionality.\n\nQuestions and other feedback can be posted in the beta zone forum.\n\n### Table of Contents\n\n1. [Build instructions](#build-instructions)\n    1. [Android](#android)\n    2. [iOS](#ios)\n    3. [Linux](#linux)\n    4. [OS X](#os-x)\n    5. [Raspberry PI](#raspberry-pi)\n    6. [Windows](#windows)\n\n\n# \u003ca name=\"build-instructions\"\u003e\u003c/a\u003eBuild instructions\n\nXli uses [CMake] as its underlying build system for all platforms. If you are familiar with [CMake] you can use the provided `CMakeLists.txt` and do your thing, or follow the instructions presented here for the supported platforms. **Note:** Some platforms (i.e. Linux) may require additional libraries to be installed on the system.\n\n### Clean build\n\nTo clean up any old builds from the source tree, delete the directories `build` and `lib`.\n\n## \u003ca name=\"android\"\u003e\u003c/a\u003eAndroid\n\n### Prerequisites\n\n- [CMake]\n- Android NDK (`ndk-build` must be available in *PATH*)\n- Unix Shell\n\n### Instructions - OS X, Linux, MSYS\n\n1. Open terminal and `cd` to Xli directory\n2. Execute `./build-android.sh`\n   * This should produce .so files located here:\n     - `lib/android/armeabi-v7a`\n\nDebug binaries can be produced by replacing command in step 2 with `./build-android.sh --debug`.\n\nSpecific architectures can be built by providing the `--archs=` option in step 2 (`armeabi-v7a`).\n\nList of available options can be shown using `./build-android.sh --help`.\n\n### Instructions - Windows\n\nWindows users need a way to execute unix shell scripts. This can be done using [MSYS].\n\nUno users can use the *Uno Native Build environment* provided by Outracks, containing both [CMake], [MSYS] and the Android SDK + NDK. Open `start.bat`, type `bash -li` to get an [MSYS] shell, then follow the instructions given above.\n\n\n## \u003ca name=\"ios\"\u003e\u003c/a\u003eiOS\n\n### Prerequisites\n\n- [CMake]\n- Xcode with most recent iOS SDK\n- Xcode command line tools\n- OS X (\u003e= 10.7)\n\n### Instructions\n\n1. Open terminal and `cd` to Xli directory\n2. Execute `./build-iOS.sh`\n   * This should produce static libraries located here:\n     - `lib/iOS/Debug-iphoneos/`\n     - `lib/iOS/Debug-iphonesimulator/`\n     - `lib/iOS/Release-iphoneos/`\n     - `lib/iOS/Release-iphonesimulator/`\n   * Generated Xcode projects located here:\n     - `build/iOS/OS/Xli.xcodeproj`\n     - `build/iOS/SIMULATOR/Xli.xcodeproj`\n\nSpecific architectures can be built by providing the `--archs=` option in step 2 (`OS`, `SIMULATOR`).\n\n\n## \u003ca name=\"linux\"\u003e\u003c/a\u003eLinux\n\n### Prerequisites\n\n- [CMake]\n- GNU make, C++ compiler, etc\n- libcurl (with OpenSSL support)\n- libfreetype\n- libglew\n- libjpeg\n- libpng\n- libsdl2\n\n**APT** users can execute `sudo apt-get install -y libpng-dev libjpeg-dev libfreetype6-dev libsdl2-dev libglew-dev libcurl4-openssl-dev cmake g++`\n\n### Instructions\n\n1. Open terminal and `cd` to Xli directory\n2. Execute `./build.sh`\n   * This should produce .so files located here:\n     - `lib/linux/x86_32/` *OR* `lib/linux/x86_64/`\n3. Optional step: `sudo ./build.sh install`\n\nDebug binaries can be produced by replacing command in step 2 with `./build.sh --debug`.\n\nList of available options can be shown using `./build.sh --help`.\n\n\n## \u003ca name=\"os-x\"\u003e\u003c/a\u003eOS X\n\n### Prerequisites\n\n- [CMake]\n- Xcode\n- Xcode command line tools\n- OS X (\u003e= 10.7)\n\n### Instructions\n\n1. Open terminal and `cd` to Xli directory\n2. Execute `./build.sh`\n   * This should produce universal binaries located here:\n     - `lib/OSX/x86/`\n3. Optional step: `sudo ./build.sh install`\n\nDebug binaries can be produced by replacing command in step 2 with `./build.sh --debug`.\n\nList of available options can be shown using `./build.sh --help`.\n\n**Note:** When building applications using Xcode, it would be useful to also build Xli using Xcode for better integration with debugger and such. This can be achieved using these alternative instructions:\n\n1. Open terminal and `cd` to Xli directory\n2. Execute `./build.sh --platform=xcode`\n   * This should produce universal binaries located here:\n     - `lib/OSX/x86/Debug/`\n     - `lib/OSX/x86/Release/`\n   * Generated Xcode project located here:\n     - `build/Xcode/Xli.xcodeproj`\n\n\n## \u003ca name=\"raspberry-pi\"\u003e\u003c/a\u003eRaspberry PI\n\n### Prerequisites\n\n- [CMake]\n- GNU make, C++ compiler, etc\n- libcurl (with OpenSSL support)\n- libfreetype\n- libjpeg\n- libpng\n- libsdl2\n\n**APT** users can execute `sudo apt-get install -y libpng12-dev libjpeg-dev libfreetype6-dev libcurl4-openssl-dev cmake g++`\n\n[SDL2] can be built and installed from source. To install from Mercurial, do this:\n\n    hg clone http://hg.libsdl.org/SDL\n    cd SDL\n    ./configure\n    make -j 2\n    sudo make install\n\n### Instructions\n\n1. Open terminal and `cd` to Xli directory\n2. Execute `./build.sh`\n   * This should produce .so files located here:\n     - `lib/linux/arm/`\n3. Optional step: `sudo ./build.sh install`\n\nDebug binaries can be produced by replacing command in step 2 with `./build.sh --debug`.\n\nList of available options can be shown using `./build.sh --help`.\n\n\n## \u003ca name=\"windows\"\u003e\u003c/a\u003eWindows\n\n### Prerequisites\n\n- [CMake] \\(must be in *PATH*)\n- Visual Studio 2013 (or any version down to 2010)\n- Windows (\u003e= Vista)\n\n### Instructions - VS2013\n\n1. Execute `build-vs2013.bat`\n   * This should produce static libraries located here:\n     - `lib\\vs2013\\x86\\Debug\\`\n     - `lib\\vs2013\\x86\\Release\\`\n     - `lib\\vs2013\\x64\\Debug\\`\n     - `lib\\vs2013\\x64\\Release\\`\n   * Generated Visual Studio 2013 solutions located here:\n     - `build\\vs2013\\x64\\Xli.sln`\n     - `build\\vs2013\\x86\\Xli.sln`\n\n### Instructions - Other versions\n\n1. Open CMake GUI\n2. Browse to Xli directory\n3. Configure using one of the Visual Studio generators\n4. Open the generated solution in Visual Studio\n5. Build\n\n### VS debugger integration\n\nUse a text editor and copy the contents of `vsconfig\\autoexp.dat` and paste at the end of your `\u003cVisualStudioFolder\u003e\\Common7\\Packages\\Debugger\\autoexp.dat`. Now Visual Studio should be able to more easily inspect instances of Xli types.\n\n\n\n[CMake]: http://www.cmake.org/\n[MSYS]: http://www.mingw.org/wiki/MSYS\n[SDL2]: http://libsdl.org/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffuse-open%2Flegacy-cpp-framework","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffuse-open%2Flegacy-cpp-framework","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffuse-open%2Flegacy-cpp-framework/lists"}