- C 74.9%
- C++ 22.9%
- CMake 1.2%
- Batchfile 0.3%
- Shell 0.2%
- Other 0.4%
|
All checks were successful
Documentation / doc-doxygen (push) Successful in 19s
CONAN builds / conan-test (push) Successful in 2m25s
CONAN builds / conan-create (push) Successful in 49s
Platform builds / build-efi-x64 (push) Successful in 45s
Platform builds / build-dos-086 (push) Successful in 1m13s
Platform builds / build-android-arm64 (push) Successful in 1m30s
Platform builds / build-linux-riscv64 (push) Successful in 2m0s
Platform builds / build-linux-x86 (push) Successful in 1m19s
Platform builds / build-linux-x64 (push) Successful in 2m6s
Platform builds / build-linux-armhf (push) Successful in 1m24s
Platform builds / build-linux-aarch64 (push) Successful in 1m40s
Platform builds / build-wince-arm (push) Successful in 2m37s
Platform builds / build-win-x64 (push) Successful in 2m32s
Platform builds / build-win-x32 (push) Successful in 1m44s
Platform builds / build-wince-i386 (push) Successful in 5m56s
Platform builds / build-wasm (push) Successful in 6m35s
Platform builds / build-zig-linux-x64-musl (push) Successful in 9m37s
Platform builds / build-zig-freebsd-x64 (push) Successful in 9m3s
|
||
|---|---|---|
| .gitea/workflows | ||
| .vscode | ||
| cmake | ||
| extlibs@9d727ee3ec | ||
| licenses | ||
| scripts | ||
| src | ||
| tests | ||
| .gitattributes | ||
| .gitignore | ||
| .gitmodules | ||
| build-debug.bat | ||
| build-debug.sh | ||
| build.bat | ||
| build.sh | ||
| build.zig | ||
| build.zig.zon | ||
| CMakeLists.txt | ||
| conanfile.py | ||
| Doxyfile | ||
| gate.code-workspace | ||
| gate.ico | ||
| gateversion.txt | ||
| LICENSE | ||
| README.md | ||
| vcpkg-configuration.json | ||
| vcpkg.json | ||
| xmake.lua | ||
GATE Framework
The GATE project is a private C library framework including a C++ high level
layer to reclaim and preserve C and C++ software technologies from classic
desktop application development and to unite it with modern target platforms.
It is also an interface study to test the integration of modern coding
patterns into elder compilers and to find advantages and limits of direct
bindings to platform specific APIs.
History
I have worked for several companies during the last 20 years as a software
developer and did implement services and user interfaces running in different
environments.
Frameworks have changed with the arrival of mobile devices and desktop
machines are not the focus of software development anymore.
Documentation regarding classic coding is already vanishing from the
internet due to company dissolutions and closed websites.
On the other hand we see divergent ABIs in different compilers on the same platform which brings barriers between software components. Especially C++ codes suffer from disagreement about what technology should be standard and what is removed from it.
Mission
The C programming language as the only light weighted utility to write code
for every platform and to be consistent regarding code composition and binary
compatibility.
We need to wrap platform details into stable C-function interfaces and
utilize any other programming language with them to implement high-level
easy-to-use application code.
The GATE project is:
- a C library (C90) to wrap platform details into a generic platform-independent interface.
- compatible with a great amount of current and ancient C compilers.
- specialized to run with different OS variants from the past 30 years.
- supporting static or dynamic (shared library) bindings.
- based on free open-source algorithms and public domain knowledge.
- bringing modern concepts (shared pointers, delegates, etc.) into the C world.
The GATE project is also (or will be):
- a thin C++03 wrapper library based on C based GATE code (without STL requirements).
- compatible with newer C++ language features when they are available (C++11).
- able to run with or without C++ exception semantics.
- a host for LUA and Python code execution.
- a collection of demo applications showing text, UI, 2D and 3D programming.
Building GATE code
The GATE framework was developed with CMAKE as its primary build environment generator. Meanwhile also CONAN and XMAKE are supported.
Prepare build environment
- Clone the GATE project
git clone https://codeberg.org/GateNetwork/gate.gitcd gate
- Run setup script for your host environment in the
/scriptsfoldercd scriptssudo ./setup-debian.sh
Dependencies
The GATE project does not implement complex compression and encryption algorithms. Therefore those features are coming from external open source libraries.
External library dependencies
- ZLIB: GZ compression
- MINIZIP: ZIP compression
- BZIP2: BZ2 compression
- LZMA: XZ compression
- LIBJPEG: JPEG image file format
- GIFLIB: GIF image file format
- LIBPNG: PNG image file format
- OPENSSL: SSL/TLS communication and encryption
- LIBSSH2: SSH communication protocol
- LUA: The LUA scripting language
- QUIRC: QR code scanner
- LIBDMTX: Datamatrix code scanner
Initialize exlibs submodule
CMake builds require external libraries from the extlibs repository.
Run following commands in the project'S root folder:
git submodule initgit submodule update
Target platform builds
Supported platforms
- Windows (WinAPI)
- All MSVC compilers since 2003, MinGW, TinyCC, LLVM.
- Windows NT 6+ (Vista to 11, Server 2008 to 2022)
- All features are implemented.
- Windows NT4 to XP/Server 2003
- Some NT6+ features are not available or replaced by fallbacks.
- Windows 95-ME
- Only basic functionality is provided.
- Windows 3.1 16 bit
- Only some UI and graphics demos will be available.
- Universal Windows Platform
- MSVC compilers since 2017.
- Experimental support for UWP 10.
- 2D and 3D graphics (DirectX) are supported.
- Windows CE 5.0 (ARMv4)
- MSVC 2005 compiler.
- An intersecting set with NT APIs is provided including some special implementations only available on Windows CE 5/Windows Mobile 6.x.
- POSIX
- All GCC compilers since 4.8, TinyCC, LLVM
- Generic POSIX platform features are covered.
- X11 UI support on all POSIX platforms is available.
- Linux
- All features are implemented
- ProcFS and SysFS are improving the generic POSIX support.
- BSD
- Some special FreeBSD, OpenBSD and NetBSD implementations are improving the generic POSIX support.
- Android
- 2D and 3D graphics (OpenGL) are supported.
- DOS
- Text mode and 2D graphics (Mode 13) apps are supported.
- EFI (x64)
- Text mode and 2D graphics (GOP) apps are supported.
- WASM Emscripten Webassembly
- Experimental support for libraries, possibly 2D/3D graphics.
Build with CONAN
- Install Python and use PIP to install CONAN
pip install conan
- Setup CONAN default profile and settings by conan setup script:
./setup-conan.sh
- Run the conan build script from the /scripts folder
./build-conan.sh
- Find generated binaries in
/build/conan/deploy/bin
Build with CMAKE
- Linux (GCC)
- Run
makebuild script./build-make.sh
- Find generated binaries in
/build/make/deploy/bin
- Run
- Windows (MSVC 2015+)
- Run the desired target output script (win32/win64/arm32/arm64)
build-msbuild_win64.bat
- Find generated binaries in
\build\msbuild_win64\deploy\bin
- Run the desired target output script (win32/win64/arm32/arm64)
- DOS (WATCOM)
- Run the WMAKE build script
build-wmake_dos.bat
- Find generated binaries in
\build\wmake_dos\deploy\bin
- Run the WMAKE build script