Development
- Freetz-NG Package Development Guide [EN]
- Directory Structure
- Naming Conventions
- SUPPORT Field
- SUPPORT:=YourGitHubUsername
- Step 1: Create Directory Structure
- Step 2: Create Config.in
- Step 3: Create Makefile (zip.mk)
- WEBSITE:=https://infozip.sourceforge.net/Zip.html
- SUPPORT:=YourUsername
- Additional Files in Makefile
- Externalization Support
- Makefile Structure
- SUPPORT:=YourUsername
- Step 1: Create Package Structure
- Step 2: Config.in
- Step 3: Makefile (python3-modulename.mk)
- WEBSITE:=https://pypi.org/project/modulename/
- SUPPORT:=YourUsername
- Step 4: Add to Python3 Menu
- Variable References
- Calling External Scripts
- Process Substitution in Makefiles
- Problem: "No rule to make target 'source/.../package-X.Y'"
- Problem: Makefile creates duplicate warnings
- Problem: Script fails with "file not found" in makefile
- Problem: Python 3.13 "No module named 'encodings'"
- Build Won't Start
- Problem: While loop in makefile doesn't modify files
- Shell Coding Standards
- Package Initialization Macros
- Standard Makefile Targets
- STARTLEVEL System
- Multi-Binary Packages Pattern
- Device Table Format
- Persistent Configuration
- Patch Format and Best Practices
- Build Won't Start
- Make Fail Strategies
- GCC Target Compilation Troubleshooting
- Target Suffix Reference
- How It Works
- User Perspective
- Developer Perspective: Updating a Host-Tool
- Debugging Host-Tools Issues
- Package Development
- Specific Topics
- Troubleshooting
- Examples
- Documentation Location
- When to Create Package Documentation
- Documentation Template
- Current Package Documentation
- Updating the Package Index
- Core Libraries (
/lib/) - AVM User Libraries (
/usr/lib/) - Standard Freetz Libraries (
/usr/lib/) - Separated Freetz Libraries (
/usr/lib/freetz/) - When to Use
/usr/lib/ - When to Use
/usr/lib/freetz/ - Configuration Variable:
FREETZ_SEPARATE_AVM_UCLIBC - What is RPATH?
- Freetz RPATH Configuration
- Complete Separation: No Conflicts Possible
- Dynamic Linker Override
- What is ABI?
- uClibc ABI Versions
- Freetz ABI Configuration
- Verification on a device
- What is Externalization?
- Directory Structure
- Externalization Paths
- Boot Order and External Dependencies
- Configuring Externalization
- 1. Choosing Library Location
- 2. Package Configuration
- 3. Library Dependencies
- 4. RPATH Configuration
- Creating external.in Files
- Alphabetical Ordering
- Key Configuration Principles
- Creating external.files
- Key Takeaways
- Quick Reference
- Configuration Quick Start
- Use ABANDON version when:
- Use CURRENT version when:
- 1. libiconv / iconv
- 2. libsqlite3 / sqlite
- 3. libreadline / readline
- 4. libusb-1.0 / libusb1
- 5. liblua / lua
- Makefile Implementation Pattern
- Config.in Pattern
- Understanding Shared Library Versioning
- Why This Matters
- libsqlite3
- libiconv
- libreadline
- libusb1
- Migrating from Single Version to Multi-Version
- Updating Existing Devices
- Changes Made in This Branch
- Total Changes
- Build Fails with "Hash Mismatch"
- Application Fails with "cannot open shared object file"
- Both Versions Selected in menuconfig
- Additional Libraries to Consider
- Automated Testing
- Eigene Programme kompilieren
- Cross-Compiler / Toolchain erstellen
- Device Table
- Freetz Build-Prozeß
- List of kernel sources [EN]
- Menükonfiguration pflegen
- Package Developing - Advanced Topics [EN]
- Package Development [EN]
- Package development config [EN]
- libmodcgi.sh
- Makefiles [EN]
- Example 1: Httptunnel [EN]
- Example 2: par2cmdline [EN]
- Example 3: NZBGet [EN]
- Wie baue ich ein eigenes Paket für Freetz?
- First steps - How to start your first freetz package [EN]
- Erstellen einer GUI für Pakete in Freetz
- Web-interface HTTPTunnel [EN]
- Aufbau eines Patches
- Shell Language [EN]
- SquashFS 4 (BE) [EN]
- STARTLEVEL of packages [EN]
- UI-Module und ctlmgr_ctl