archive init

This commit is contained in:
lazzite 2026-08-15 22:25:12 +02:00
parent 308c49544f
commit 24325126e2
104 changed files with 14827 additions and 0 deletions

View file

@ -0,0 +1,5 @@
## ares Emulator Status
At this time, the ares emulator provides limited additional value relative to existing supported options inside of RetroDECK.
Should user demand increase significantly in the future, we can revisit adding ares support at that time.

View file

@ -0,0 +1,52 @@
#!/bin/bash
## ares keeps it's config in $XDG_DATA_HOME/ares/
export ares_config="$XDG_DATA_HOME/ares/settings.bml"
_prepare_component::ares() {
local action="$1"
shift
local component_config="$(get_own_component_path)/rd_config"
case "$action" in
reset)
log i "----------------------"
log i "Resetting ares"
log i "----------------------"
create_dir -d "$XDG_DATA_HOME/ares/hiro"
create_dir -d "$XDG_CONFIG_HOME/ares/"
create_dir -d "$logs_path/ares"
create_dir -d "$saves_path/ares/"
create_dir -d "$screenshots_path/ares/"
cp -fr "$component_config/"* "$XDG_DATA_HOME/ares/"
sed -i "s|RETRODECKROMSDIR|$roms_path|" $ares_config
sed -i "s|RETRODECKBIOSDIR|$bios_path|" $ares_config
sed -i "s|RETRODECKSAVESDIR|$saves_path|" $ares_config
sed -i "s|RETRODECKSCREENSHORTSDIR|$screenshots_path|" $ares_config
sed -i "s|RETRODECKLOGSDIR|$logs_path|" $ares_config
;;
postmove)
log i "----------------------"
log i "Post-moving ares"
log i "----------------------"
sed -i "s|RETRODECKROMSDIR|$roms_path|" $ares_config
sed -i "s|RETRODECKBIOSDIR|$bios_path|" $ares_config
sed -i "s|RETRODECKSAVESDIR|$saves_path|" $ares_config
sed -i "s|RETRODECKSCREENSHORTSDIR|$screenshots_path|" $ares_config
sed -i "s|RETRODECKLOGSDIR|$logs_path|" $ares_config
;;
esac
}

View file

@ -0,0 +1,18 @@
#!/bin/bash
# Setting component name and path based on the directory name
component_name="$(basename "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")")"
component_path="$(cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd)"
# Set LD_LIBRARY_PATH
export LD_LIBRARY_PATH="$component_path/lib:$ffmpeg_path/25.08:$rd_shared_libs:${DEFAULT_LD_LIBRARY_PATH}"
export QT_PLUGIN_PATH="${QT_PLUGIN_PATH}"
export QT_QPA_PLATFORM_PLUGIN_PATH="${QT_QPA_PLATFORM_PLUGIN_PATH}"
log i "RetroDECK is now launching $component_name"
log d "Library path is: $LD_LIBRARY_PATH"
log d "QT plugin path is: $QT_PLUGIN_PATH"
log d "QT QPA PLATFORM plugin path is: $QT_QPA_PLATFORM_PLUGIN_PATH"
# Launch
exec "$component_path/bin/ares" "$@"

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,61 @@
{
"ares": [
{
"source_url": "dev.ares.ares",
"source_type": "flatpak_id",
"version": "latest",
"dest": "user",
"extraction_type": "flatpak",
"assets": [
{
"type": "dir",
"source": "bin",
"dest": "bin"
},
{
"type": "create",
"dest": "component_version",
"contents": "$SOURCE_VERSION"
},
{
"type": "dir",
"source": "$REPO_ROOT/$COMPONENT_NAME/rd_assets/rd_config",
"dest": "rd_config"
},
{
"type": "file",
"source": "$REPO_ROOT/$COMPONENT_NAME/component_functions.sh",
"dest": "$COMPONENT_ARTIFACT_ROOT"
},
{
"type": "file",
"source": "$REPO_ROOT/$COMPONENT_NAME/component_launcher.sh",
"dest": "$COMPONENT_ARTIFACT_ROOT"
},
{
"type": "file",
"source": "$REPO_ROOT/$COMPONENT_NAME/component_manifest.json",
"dest": "$COMPONENT_ARTIFACT_ROOT"
},
{
"type": "file",
"source": "$REPO_ROOT/$COMPONENT_NAME/component_recipe.json",
"dest": "$COMPONENT_ARTIFACT_ROOT"
}
],
"libs": [
{
"library": "libSDL3.so.0",
"runtime_name": "org.freedesktop.Platform",
"runtime_version": "25.08",
"dest": "shared-libs"
},
{
"library": "librashader.so",
"source": "lib",
"dest": "shared-libs"
}
]
}
]
}

View file

@ -0,0 +1,431 @@
Video
Driver: OpenGL 3.2
Monitor: Primary
Format: ARGB24
Exclusive: false
Blocking: false
PresentSRGB: false
ThreadedRenderer: true
NativeFullScreen: false
Flush: false
Shader: bilinear.slangp
Multiplier: 2
Output: Scale
AspectCorrectionMode: Standard
AdaptiveSizing: true
AutoCentering: false
Luminance: 1.0
Saturation: 1.0
Gamma: 1.0
ColorBleed: false
ColorEmulation: true
DeepBlackBoost: false
InterframeBlending: false
Overscan: false
PixelAccuracy: false
Quality: SD
Supersampling: false
DisableVideoInterfaceProcessing: false
WeaveDeinterlacing: true
Audio
Driver: SDL
Device: Default
Frequency: 48000
Latency: 20
Exclusive: false
Blocking: true
Dynamic: false
Mute: false
Volume: 1.0
Balance: 0.0
Input
Driver: SDL
Defocus: Pause
Boot
Fast: false
Debugger: false
AwaitGDBClient: false
Prefer: NTSC-U
General
ShowStatusBar: true
Rewind: false
RunAhead: false
AutoSaveMemory: true
HomebrewMode: false
ForceInterpreter: false
Rewind
Length: 100
Frequency: 10
Paths
Home:
Firmware: RETRODECKBIOSDIR
Saves: RETRODECKSAVESDIR/ares/
Screenshots: RETRODECKSCREENSHORTSDIR/ares
Debugging: RETRODECKLOGSDIR/ares
ArcadeRoms: RETRODECKROMSDIR/arcade/
SuperFamicom
GameBoy: RETRODECKROMSDIR/sgb/
BSMemory: RETRODECKROMSDIR/satellaview/
SufamiTurbo: RETRODECKROMSDIR/sufami/
DebugServer
Port: 9123
Enabled: false
UseIPv4: false
Nintendo64
ExpansionPak: true
ControllerPakBankString: 32KiB (Default)
Visible: true
Path
GameBoyAdvance
Player: false
Visible: true
Path
Firmware
BIOS.World
MegaDrive
TMSS: false
Visible: true
Path
Recent
Game-1
Game-2
Game-3
Game-4
Game-5
Game-6
Game-7
Game-8
Game-9
VirtualPad1
Pad.Up: 0x3/1/1/Lo;;
Pad.Down: 0x3/1/1/Hi;;
Pad.Left: 0x3/1/0/Lo;;
Pad.Right: 0x3/1/0/Hi;;
Select: 0x3/3/6;;
Start: 0x3/3/7;;
A..South: 0x3/3/0;;
B..East: 0x3/3/1;;
X..West: 0x3/3/2;;
Y..North: 0x3/3/3;;
L-Bumper: 0x3/3/4;;
R-Bumper: 0x3/3/5;;
L-Trigger: 0x3/0/2/Hi;;
R-Trigger: 0x3/0/5/Hi;;
L-Stick..Click: 0x3/3/9;;
R-Stick..Click: 0x3/3/10;;
L-Up: 0x3/0/1/Lo;;
L-Down: 0x3/0/1/Hi;;
L-Left: 0x3/0/0/Lo;;
L-Right: 0x3/0/0/Hi;;
R-Up: 0x3/0/4/Lo;;
R-Down: 0x3/0/4/Hi;;
R-Left: 0x3/0/3/Lo;;
R-Right: 0x3/0/3/Hi;;
Rumble: ;;
VirtualMouse1
X: 0x2/0/0;;
Y: 0x2/0/1;;
Left: 0x2/1/0;;
Middle: 0x2/1/1;;
Right: 0x2/1/1;;
Extra: ;;
VirtualPad2
Pad.Up: 0x100000003/1/1/Lo;;
Pad.Down: 0x100000003/1/1/Hi;;
Pad.Left: 0x100000003/1/0/Lo;;
Pad.Right: 0x100000003/1/0/Hi;;
Select: 0x100000003/3/6;;
Start: 0x100000003/3/7;;
A..South: 0x100000003/3/1;;
B..East: 0x100000003/3/0;;
X..West: 0x100000003/3/3;;
Y..North: 0x100000003/3/2;;
L-Bumper: 0x100000003/3/4;;
R-Bumper: 0x100000003/3/5;;
L-Trigger: 0x100000003/0/2/Hi;;
R-Trigger: 0x100000003/0/5/Hi;;
L-Stick..Click: 0x100000003/3/9;;
R-Stick..Click: 0x100000003/3/10;;
L-Up: 0x100000003/0/1/Lo;;
L-Down: 0x100000003/0/1/Hi;;
L-Left: 0x100000003/0/0/Lo;;
L-Right: 0x100000003/0/0/Hi;;
R-Up: 0x100000003/0/4/Lo;;
R-Down: 0x100000003/0/4/Hi;;
R-Left: 0x100000003/0/3/Lo;;
R-Right: 0x100000003/0/3/Hi;;
Rumble: ;;
VirtualMouse2
X: ;;
Y: ;;
Left: ;;
Middle: ;;
Right: ;;
Extra: ;;
VirtualPad3
Pad.Up: 0x200000003/1/1/Lo;;
Pad.Down: 0x200000003/1/1/Hi;;
Pad.Left: 0x200000003/1/0/Lo;;
Pad.Right: 0x200000003/1/0/Hi;;
Select: 0x200000003/3/6;;
Start: 0x200000003/3/7;;
A..South: 0x200000003/3/1;;
B..East: 0x200000003/3/0;;
X..West: 0x200000003/3/3;;
Y..North: 0x200000003/3/2;;
L-Bumper: 0x200000003/3/4;;
R-Bumper: 0x200000003/3/5;;
L-Trigger: 0x200000003/0/2/Hi;;
R-Trigger: 0x200000003/0/5/Hi;;
L-Stick..Click: 0x200000003/3/9;;
R-Stick..Click: 0x200000003/3/10;;
L-Up: 0x200000003/0/1/Lo;;
L-Down: 0x200000003/0/1/Hi;;
L-Left: 0x200000003/0/0/Lo;;
L-Right: 0x200000003/0/0/Hi;;
R-Up: 0x200000003/0/4/Lo;;
R-Down: 0x200000003/0/4/Hi;;
R-Left: 0x200000003/0/3/Lo;;
R-Right: 0x200000003/0/3/Hi;;
Rumble: ;;
VirtualMouse3
X: ;;
Y: ;;
Left: ;;
Middle: ;;
Right: ;;
Extra: ;;
VirtualPad4
Pad.Up: 0x300000003/1/1/Lo;;
Pad.Down: 0x300000003/1/1/Hi;;
Pad.Left: 0x300000003/1/0/Lo;;
Pad.Right: 0x300000003/1/0/Hi;;
Select: 0x300000003/3/6;;
Start: 0x300000003/3/7;;
A..South: 0x300000003/3/1;;
B..East: 0x300000003/3/0;;
X..West: 0x300000003/3/3;;
Y..North: 0x300000003/3/2;;
L-Bumper: 0x300000003/3/4;;
R-Bumper: 0x300000003/3/5;;
L-Trigger: 0x300000003/0/2/Hi;;
R-Trigger: 0x300000003/0/5/Hi;;
L-Stick..Click: 0x300000003/3/9;;
R-Stick..Click: 0x300000003/3/10;;
L-Up: 0x300000003/0/1/Lo;;
L-Down: 0x300000003/0/1/Hi;;
L-Left: 0x300000003/0/0/Lo;;
L-Right: 0x300000003/0/0/Hi;;
R-Up: 0x300000003/0/4/Lo;;
R-Down: 0x300000003/0/4/Hi;;
R-Left: 0x300000003/0/3/Lo;;
R-Right: 0x300000003/0/3/Hi;;
Rumble: ;;
VirtualMouse4
X: ;;
Y: ;;
Left: ;;
Middle: ;;
Right: ;;
Extra: ;;
VirtualPad5
Pad.Up: 0x400000003/1/1/Lo;;
Pad.Down: 0x400000003/1/1/Hi;;
Pad.Left: 0x400000003/1/0/Lo;;
Pad.Right: 0x400000003/1/0/Hi;;
Select: 0x400000003/3/6;;
Start: 0x400000003/3/7;;
A..South: 0x400000003/3/1;;
B..East: 0x400000003/3/0;;
X..West: 0x400000003/3/3;;
Y..North: 0x400000003/3/2;;
L-Bumper: 0x400000003/3/4;;
R-Bumper: 0x400000003/3/5;;
L-Trigger: 0x400000003/0/2/Hi;;
R-Trigger: 0x400000003/0/5/Hi;;
L-Stick..Click: 0x400000003/3/9;;
R-Stick..Click: 0x400000003/3/10;;
L-Up: 0x400000003/0/1/Lo;;
L-Down: 0x400000003/0/1/Hi;;
L-Left: 0x400000003/0/0/Lo;;
L-Right: 0x400000003/0/0/Hi;;
R-Up: 0x400000003/0/4/Lo;;
R-Down: 0x400000003/0/4/Hi;;
R-Left: 0x400000003/0/3/Lo;;
R-Right: 0x400000003/0/3/Hi;;
Rumble: ;;
VirtualMouse5
X: ;;
Y: ;;
Left: ;;
Middle: ;;
Right: ;;
Extra: ;;
Hotkey
ToggleFullscreen: ;;
TogglePseudo-Fullscreen: ;;
ToggleMouseCapture: ;;
ToggleKeyboardCapture: ;;
FastForward: ;;
ToggleFastForward: ;;
Rewind: ;;
FrameAdvance: ;;
CaptureScreenshot: ;;
SaveState: ;;
LoadState: ;;
DecrementStateSlot: ;;
IncrementStateSlot: ;;
PauseEmulation: ;;
ResetSystem: ;;
ReloadCurrentGame: ;;
QuitEmulator: ;;
MuteAudio: ;;
IncreaseAudio: ;;
DecreaseAudio: ;;
Arcade
Visible: true
Path: RETRODECKROMSDIR/arcade/
Atari2600
Path: RETRODECKROMSDIR/atari2600/
Visible: true
WonderSwan
Path: RETRODECKROMSDIR/wonderswan/
Visible: true
WonderSwanColor
Path: RETRODECKROMSDIR/wonderswancolor/
Visible: true
PocketChallengeV2
Path: RETRODECKROMSDIR/supervision/
Visible: true
ColecoVision
Path: RETRODECKROMSDIR/colecovision/
Firmware
BIOS.World: RETRODECKBIOSDIR/colecovision.rom
Visible: true
MyVision
Visible: true
Path: RETRODECKROMSDIR/arcade/
MSX
Path: RETRODECKROMSDIR/msx/
Firmware
BIOS.Japan: RETRODECKBIOSDIR/MSX.ROM
Visible: true
MSX2
Path: RETRODECKROMSDIR/msx2/
Firmware
BIOS.Japan: RETRODECKBIOSDIR/MSX2.ROM
Visible: true
PCEngine
Path: RETRODECKROMSDIR/pcengine/
Visible: true
PCEngineCD
Path: RETRODECKROMSDIR/pcenginecd/
Firmware
BIOS.US: RETRODECKBIOSDIR/syscard3u.pce
BIOS.Japan: RETRODECKBIOSDIR/syscard3.pce
Visible: true
SuperGrafx
Path: RETRODECKROMSDIR/supergrafx/
Visible: true
SuperGrafxCD
Path: RETRODECKROMSDIR/supergrafx/
Firmware
BIOS.Japan: RETRODECKBIOSDIR/syscard3.pce
Visible: true
Famicom
Path: RETRODECKROMSDIR/nes/
Visible: true
FamicomDiskSystem
Path: RETRODECKROMSDIR/fds/
Firmware
BIOS.Japan: RETRODECKBIOSDIR/disksys.rom
Visible: true
SuperFamicom
Path: RETRODECKROMSDIR/snes/
Visible: true
Nintendo64
Path: RETRODECKROMSDIR/n64/
Visible: true
Nintendo64DD
Path: RETRODECKROMSDIR/n64dd/
Firmware
BIOS.Japan: RETRODECKBIOSDIR/64DD_IPL_JP.n64
BIOS.US: RETRODECKBIOSDIR/64DD_IPL_US.n64
BIOS.DEV: RETRODECKBIOSDIR/64DD_IPL_DEV.n64
Visible: true
GameBoy
Path: RETRODECKROMSDIR/gb/
Visible: true
GameBoyColor
Path: RETRODECKROMSDIR/gbc/
Visible: true
GameBoyAdvance
Path: RETRODECKROMSDIR/gba/
Firmware
BIOS.World: RETRODECKBIOSDIR/gba_bios.bin
Visible: true
SG-1000
Path: RETRODECKROMSDIR/sg-1000/
Visible: true
MasterSystem
Path: RETRODECKROMSDIR/mastersystem/
Firmware
BIOS.US: RETRODECKBIOSDIR/bios_U.sms
BIOS.Japan: RETRODECKBIOSDIR/bios_J.sms
BIOS.Europe: RETRODECKBIOSDIR/bios_E.sms
Visible: true
GameGear
Path: RETRODECKROMSDIR/gamegear/
Firmware
BIOS.World: RETRODECKBIOSDIR/bios.gg
Visible: true
MegaDrive
Path: RETRODECKROMSDIR/genesis/
Visible: true
Mega32X
Path: RETRODECKROMSDIR/sega32x/
Visible: true
MegaCD
Path: RETRODECKROMSDIR/segacd/
Firmware
BIOS.US: RETRODECKBIOSDIR/bios_CD_U.bin
BIOS.Japan: RETRODECKBIOSDIR/bios_CD_J.bin
BIOS.Europe: RETRODECKBIOSDIR/bios_CD_E.bin
Visible: true
MegaCD32X
Path: RETRODECKROMSDIR/segacd/
Visible: true
NeoGeoAES
Path: RETRODECKROMSDIR/arcade/
Firmware
BIOS.World: RETRODECKBIOSDIR/neo-po.bin
Visible: true
NeoGeoMVS
Path: RETRODECKROMSDIR/arcade/
Firmware
BIOS.World
Visible: true
NeoGeoPocket
Path: RETRODECKROMSDIR/ngp/
Firmware
BIOS.World: RETRODECKBIOSDIR/SNK Neo Geo Pocket (Japan, Europe).ngp
Visible: true
NeoGeoPocketColor
Path: RETRODECKROMSDIR/ngpc/
Firmware
BIOS.World: RETRODECKBIOSDIR/SNK Neo Geo Pocket Color (World) (En,Ja).ngp
Visible: true
PlayStation
Path: RETRODECKROMSDIR/psx/
Firmware
BIOS.US: RETRODECKBIOSDIR/scph5501.bin
BIOS.Japan: RETRODECKBIOSDIR/scph5500.bin
BIOS.Europe: RETRODECKBIOSDIR/scph5502.bin
Visible: true
ZXSpectrum
Path: RETRODECKROMSDIR/zxspectrum/
Visible: true
ZXSpectrum128
Path: RETRODECKROMSDIR/zxspectrum/
Visible: true

View file

@ -0,0 +1,44 @@
#!/bin/bash
export eka2l1_config="$XDG_CONFIG_HOME/EKA2L1/EKA2L1.conf"
export eka2l1_bindings_default="$XDG_CONFIG_HOME/EKA2L1/bindings/default.yml"
export eka2l1_bindings_steamdeck="$XDG_CONFIG_HOME/EKA2L1/bindings/steamdeck.yml"
_prepare_component::eka2l1() {
local action="$1"
shift
local component_config="$(get_own_component_path)/rd_config"
local component_data="$(get_own_component_path)/rd_data"
case "$action" in
reset)
log i "----------------------"
log i "Resetting EKA2L1"
log i "----------------------"
create_dir -d "$XDG_CONFIG_HOME/EKA2L1/"
create_dir -d "$XDG_DATA_HOME/EKA2L1/"
cp -fvr "$component_config/"* "$XDG_CONFIG_HOME/EKA2L1/"
cp -fvr "$component_data/"* "$XDG_DATA_HOME/EKA2L1/"
dir_prep "$bios_path/EKA2L1" "$XDG_DATA_HOME/EKA2L1/data/roms"
dir_prep "$storage_path/EKA2L1/j2me" "$XDG_DATA_HOME/EKA2L1/data/j2me"
dir_prep "$storage_path/EKA2L1/drives" "$XDG_DATA_HOME/EKA2L1/data/drives"
;;
postmove)
log i "----------------------"
log i "Post-moving EKA2L1"
log i "----------------------"
dir_prep "$bios_path/EKA2L1" "$XDG_DATA_HOME/EKA2L1/data/roms"
dir_prep "$storage_path/EKA2L1/j2me" "$XDG_DATA_HOME/EKA2L1/data/j2me"
dir_prep "$storage_path/EKA2L1/drives" "$XDG_DATA_HOME/EKA2L1/data/drives"
;;
esac
}

View file

@ -0,0 +1,17 @@
#!/bin/bash
# Setting component name and path based on the directory name
component_name="$(basename "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")")"
component_path="$(cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd)"
# Set LD_LIBRARY_PATH
export LD_LIBRARY_PATH="$component_path/lib:$ffmpeg_path/25.08:$rd_shared_libs:$rd_shared_libs/org.kde.Platform/6.10/:$rd_shared_libs/org.gnome.Platform/49/:$rd_shared_libs/org.freedesktop.Platform/25.08/:${DEFAULT_LD_LIBRARY_PATH}"
export QT_PLUGIN_PATH="$rd_shared_libs/org.kde.Platform/6.10/plugins/:${QT_PLUGIN_PATH}"
export QT_QPA_PLATFORM_PLUGIN_PATH="$rd_shared_libs/org.kde.Platform/6.10/plugins/platforms/:${QT_QPA_PLATFORM_PLUGIN_PATH}"
log i "RetroDECK is now launching $component_name"
log d "Library path is: $LD_LIBRARY_PATH"
log d "QT plugin path is: $QT_PLUGIN_PATH"
log d "QT QPA PLATFORM plugin path is: $QT_QPA_PLATFORM_PLUGIN_PATH"
exec "$component_path/bin/eka2l1_qt" "$@"

View file

@ -0,0 +1,315 @@
{
"eka2l1": {
"name": "EKA2L1",
"core_framework_compatibility": "1",
"component_version": "1.0.0",
"capabilities": [
"reset",
"open"
],
"url_rdwiki": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/EKA2L1/EKA2L1-guide/",
"url_donation_purchase": [
"https://www.paypal.me/ccjkz11",
"https://yoomoney.ru/to/41001670387745"
],
"url_source": "https://github.com/EKA2L1/EKA2L1",
"description": "EKA2L1 is a Symbian and Nokia N-Gage emulator.",
"component_type": "Emulator",
"system_friendly_name": [
"Nokia N-Gage",
"Symbian"
],
"system": [
"ngage",
"symbian"
],
"bios": [
{
"filename": "BOOT-101F8C19.dmp",
"md5": "c63eedb3369133a993cfe5d5ced247c7",
"system": "eka2l1",
"paths": "$bios_path/EKA2L1/NEM-4/BOOT-101F8C19.dmp",
"description": "Nokia N-Gage boot ROM dump",
"required": "Required for Nokia N-Gage emulation"
},
{
"filename": "ROOT-101F8C19.dmp",
"md5": "612f10542f8e3da7cd8ec861c5e47f8a",
"system": "eka2l1",
"paths": "$bios_path/EKA2L1/NEM-4/ROOT-101F8C19.dmp",
"description": "Nokia N-Gage root ROM dump containing system ROM data",
"required": "Required for Nokia N-Gage emulation"
},
{
"filename": "SYM.ROM",
"md5": "64a95a4a884cf4cc15a566b856603193",
"system": "eka2l1",
"paths": "$bios_path/EKA2L1/NEM-4/SYM.ROM",
"description": "Nokia N-Gage Symbian ROM image",
"required": "Required for Nokia N-Gage emulation"
},
{
"filename": "BOOT-101FB2B1.dmp",
"md5": "e65de48eed2c398e48a57b918ec17882",
"system": "eka2l1",
"paths": "$bios_path/EKA2L1/RH-29/BOOT-101FB2B1.dmp",
"description": "Nokia N-Gage QD Retail boot ROM dump",
"required": "Required for Nokia N-Gage QD Retail emulation"
},
{
"filename": "ROOT-101FB2B1.dmp",
"md5": "ee9b79efa76cb2f4ac1e5d8d709a2eb3",
"system": "eka2l1",
"paths": "$bios_path/EKA2L1/RH-29/ROOT-101FB2B1.dmp",
"description": "Nokia N-Gage QD Retail root ROM dump containing system ROM data",
"required": "Required for Nokia N-Gage QD Retail emulation"
},
{
"filename": "SYM.ROM",
"md5": "cb878db5111aba2b076bddc557e1f10a",
"system": "eka2l1",
"paths": "$bios_path/EKA2L1/RH-29/SYM.ROM",
"description": "Nokia N-Gage QD Retail Symbian ROM image",
"required": "Required for Nokia N-Gage QD Retail emulation"
},
{
"filename": "SYM.ROM",
"md5": "609f04c5cb239ad2a49461b049dad58a",
"system": "eka2l1",
"paths": "$bios_path/EKA2L1/appl sw 12.2_15/SYM.ROM",
"description": "Siemens SX1 Symbian ROM image",
"required": "Required for Siemens SX1 emulation"
},
{
"filename": "BOOT-101FB2B1.dmp",
"md5": "b0b579d09e2c259936be8c90ccd3f2a4",
"system": "eka2l1",
"paths": "$bios_path/EKA2L1/rh-4/BOOT-101FB2B1.dmp",
"description": "Nokia N-Gage QD Dev boot ROM dump",
"required": "Required for Nokia N-Gage QD Dev emulation"
},
{
"filename": "ROOT-101FB2B1.dmp",
"md5": "128e8bf5918aaa5a0aa11baa4ef13d21",
"system": "eka2l1",
"paths": "$bios_path/EKA2L1/rh-4/ROOT-101FB2B1.dmp",
"description": "Nokia N-Gage QD Dev root ROM dump containing system ROM data",
"required": "Required for Nokia N-Gage QD Dev emulation"
},
{
"filename": "SYM.ROM",
"md5": "27bddb5583e8905f54f679564bf45b00",
"system": "eka2l1",
"paths": "$bios_path/EKA2L1/rh-4/SYM.ROM",
"description": "Nokia N-Gage QD Dev Symbian ROM image",
"required": "Required for Nokia N-Gage QD Dev emulation"
},
{
"filename": "SYM.ROM",
"md5": "c91893be71f15d178226935617ebcdf7",
"system": "eka2l1",
"paths": "$bios_path/EKA2L1/rm-1/SYM.ROM",
"description": "Nokia 6630 Symbian ROM image",
"required": "Required for Nokia 6630 emulation"
},
{
"filename": "SYM.ROM",
"md5": "a6eaf982887f5cf5d0efb93e61eae078",
"system": "eka2l1",
"paths": "$bios_path/EKA2L1/rm-170/SYM.ROM",
"description": "Nokia E50 Symbian ROM image",
"required": "Required for Nokia E50 emulation"
},
{
"filename": "SYM.ROM",
"md5": "a7d82c61311bf2e86e709c5f13d75d2d",
"system": "eka2l1",
"paths": "$bios_path/EKA2L1/rm-320/SYM.ROM",
"description": "Nokia N95 Symbian ROM image",
"required": "Required for Nokia N95 emulation"
},
{
"filename": "SYM.ROM",
"md5": "0d7e4a88da23ce15174936871daeba85",
"system": "eka2l1",
"paths": "$bios_path/EKA2L1/rm-324/SYM.ROM",
"description": "Nokia 6650 Fold - AT&T Symbian ROM image",
"required": "Required for Nokia 6650 Fold - AT&T emulation"
},
{
"filename": "SYM.ROM",
"md5": "9d0ad97ece0c7990d59b7bc21522a372",
"system": "eka2l1",
"paths": "$bios_path/EKA2L1/rm-333/SYM.ROM",
"description": "N85 Symbian ROM image",
"required": "Required for N85 emulation"
},
{
"filename": "SYM.ROM",
"md5": "50af20ec26511c1a03cbb854ecfcd4be",
"system": "eka2l1",
"paths": "$bios_path/EKA2L1/rm-356/SYM.ROM",
"description": "Nokia 5800 XpressMusic Symbian ROM image",
"required": "Required for Nokia 5800 XpressMusic emulation"
},
{
"filename": "SYM.ROM",
"md5": "6faa90eea3b5ceea888d480da81d58be",
"system": "eka2l1",
"paths": "$bios_path/EKA2L1/rm-409/SYM.ROM",
"description": "Nokia 5320d-1 Symbian ROM image",
"required": "Required for Nokia 5320d-1 emulation"
},
{
"filename": "SYM.ROM",
"md5": "c3be6fba055cabd5b4cd40d8207c22bd",
"system": "eka2l1",
"paths": "$bios_path/EKA2L1/rm-504/SYM.ROM",
"description": "Nokia 5530 Symbian ROM image",
"required": "Required for Nokia 5530 emulation"
},
{
"filename": "SYM.ROM",
"md5": "f2519da6ba8f089b0e2111d3b6730227",
"system": "eka2l1",
"paths": "$bios_path/EKA2L1/rm-507/SYM.ROM",
"description": "Nokia N97 Symbian ROM image",
"required": "Required for Nokia N97 emulation"
},
{
"filename": "SYM.ROM",
"md5": "5194a8b18ed5d87a7e0d1a578fe93ad7",
"system": "eka2l1",
"paths": "$bios_path/EKA2L1/rm-566/SYM.ROM",
"description": "Nokia 6730 Classic Symbian ROM image",
"required": "Required for Nokia 6730 Classic emulation"
},
{
"filename": "SYM.ROM",
"md5": "1a5433d7d2230a64549e2c66d69670c6",
"system": "eka2l1",
"paths": "$bios_path/EKA2L1/rm-84/SYM.ROM",
"description": "Nokia N70 Symbian ROM image",
"required": "Required for Nokia N70 emulation"
},
{
"filename": "SYM.ROM",
"md5": "431061ed2beec5b53ff54ce39fdff000",
"system": "eka2l1",
"paths": "$bios_path/EKA2L1/sgh-i450/SYM.ROM",
"description": "Samsung i450 Symbian ROM image",
"required": "Required for Samsung i450 emulation"
}
],
"es_de_config": {
"es_find_rules": {
"emulators": [
{
"name": "EKA2L1",
"description": "Symbian and Nokia N-Gage emulator EKA2L1",
"rules": [
{
"type": "staticpath",
"entries": [
"%COMPONENT_PATH%/component_launcher.sh"
]
}
]
}
]
},
"es_systems": [
{
"name": "ngage",
"fullname": "Nokia N-Gage",
"path": "%ROMPATH%/ngage",
"extension": ".ngage .zip",
"commands": [
{
"label": "EKA2L1 [Mounted] (Standalone)",
"command": "%EMULATOR_EKA2L1% --fullscreen --device RH-29 --mount %ROM% --run %BASENAME%",
"priority": 10
}
],
"platform": "ngage",
"theme": "ngage"
},
{
"name": "ngage",
"fullname": "Nokia N-Gage",
"path": "%ROMPATH%/ngage",
"extension": ".ngage .zip",
"commands": [
{
"label": "EKA2L1 [Installed] (Standalone)",
"command": "%EMULATOR_EKA2L1% --fullscreen --device RH-29 --run %BASENAME%",
"priority": 20
}
],
"platform": "ngage",
"theme": "ngage"
},
{
"name": "symbian",
"fullname": "Symbian",
"path": "%ROMPATH%/symbian",
"extension": ".sis .sisx .symbian",
"commands": [
{
"label": "EKA2L1 [Nokia N-Gage] (Standalone)",
"command": "%EMULATOR_EKA2L1% --fullscreen --device RH-29 --run %BASENAME%",
"priority": 10
}
],
"platform": "ngage",
"theme": "symbian"
},
{
"name": "symbian",
"fullname": "Symbian",
"path": "%ROMPATH%/symbian",
"extension": ".sis .sisx .symbian",
"commands": [
{
"label": "EKA2L1 [Nokia N70] (Standalone)",
"command": "%EMULATOR_EKA2L1% --fullscreen --device RM-84 --run %BASENAME%",
"priority": 20
}
],
"platform": "ngage",
"theme": "symbian"
},
{
"name": "symbian",
"fullname": "Symbian",
"path": "%ROMPATH%/symbian",
"extension": ".sis .sisx .symbian",
"commands": [
{
"label": "EKA2L1 [Nokia N97] (Standalone)",
"command": "%EMULATOR_EKA2L1% --fullscreen --device RM-507 --run %BASENAME",
"priority": 30
}
],
"platform": "ngage",
"theme": "symbian"
},
{
"name": "symbian",
"fullname": "Symbian",
"path": "%ROMPATH%/symbian",
"extension": ".sis .sisx .symbian",
"commands": [
{
"label": "EKA2L1 [Custom device] (Standalone)",
"command": "%EMULATOR_EKA2L1% --fullscreen --device %INJECT%=%BASENAME%.device --run %BASENAME%",
"priority": 40
}
],
"platform": "ngage",
"theme": "symbian"
}
]
}
}
}

View file

@ -0,0 +1,138 @@
{
"eka2l1": [
{
"source_url": "https://github.com/EKA2L1/EKA2L1/releases/download/{VERSION}/*.AppImage",
"source_type": "github_release",
"version": "$EKA2L1_DESIRED_VERSION",
"extraction_type": "appimage",
"assets": [
{
"type": "dir",
"source": "usr/bin",
"dest": "bin"
},
{
"type": "dir",
"source": "$REPO_ROOT/$COMPONENT_NAME",
"dest": "$COMPONENT_ARTIFACT_ROOT"
},
{
"type": "create",
"dest": "component_version",
"contents": "$SOURCE_VERSION"
},
{
"type": "file",
"source": "$REPO_ROOT/$COMPONENT_NAME/component_functions.sh",
"dest": "$COMPONENT_ARTIFACT_ROOT"
},
{
"type": "file",
"source": "$REPO_ROOT/$COMPONENT_NAME/component_launcher.sh",
"dest": "$COMPONENT_ARTIFACT_ROOT"
},
{
"type": "file",
"source": "$REPO_ROOT/$COMPONENT_NAME/component_manifest.json",
"dest": "$COMPONENT_ARTIFACT_ROOT"
},
{
"type": "file",
"source": "$REPO_ROOT/$COMPONENT_NAME/component_recipe.json",
"dest": "$COMPONENT_ARTIFACT_ROOT"
}
],
"libs": [
{
"library": "libQt5Widgets.so.5",
"runtime_name": "org.kde.Platform",
"runtime_version": "5.15",
"dest": "shared-libs"
},
{
"library": "libQt5Svg.so.5",
"runtime_name": "org.kde.Platform",
"runtime_version": "5.15",
"dest": "shared-libs"
},
{
"library": "libQt5Gui.so.5",
"runtime_name": "org.kde.Platform",
"runtime_version": "5.15",
"dest": "shared-libs"
},
{
"library": "libQt5Core.so.5",
"runtime_name": "org.kde.Platform",
"runtime_version": "5.15",
"dest": "shared-libs"
},
{
"library": "libQt5Network.so.5",
"runtime_name": "org.kde.Platform",
"runtime_version": "5.15",
"dest": "shared-libs"
},
{
"library": "libssl.so.1.1",
"runtime_name": "org.kde.Platform",
"runtime_version": "5.15",
"dest": "shared-libs"
},
{
"library": "libcrypto.so.1.1",
"runtime_name": "org.kde.Platform",
"runtime_version": "5.15",
"dest": "shared-libs"
},
{
"library": "libicui18n.so.67",
"runtime_name": "org.freedesktop.Platform",
"runtime_version": "20.08",
"dest": "shared-libs"
},
{
"library": "libicuuc.so.67",
"runtime_name": "org.freedesktop.Platform",
"runtime_version": "20.08",
"dest": "shared-libs"
},
{
"library": "libicudata.so.67",
"runtime_name": "org.freedesktop.Platform",
"runtime_version": "20.08",
"dest": "shared-libs"
},
{
"library": "libicui18n.so.67",
"runtime_name": "org.freedesktop.Platform",
"runtime_version": "20.08",
"dest": "shared-libs"
},
{
"library": "libicuuc.so.67",
"runtime_name": "org.freedesktop.Platform",
"runtime_version": "20.08",
"dest": "shared-libs"
},
{
"library": "libicudata.so.67",
"runtime_name": "org.freedesktop.Platform",
"runtime_version": "20.08",
"dest": "shared-libs"
},
{
"library": "libstdc++.so.6:",
"runtime_name": "org.freedesktop.Platform",
"runtime_version": "20.08",
"dest": "shared-libs"
},
{
"library": "libbz2.so.1.0",
"source": "usr/lib",
"dest": "shared-libs"
}
]
}
]
}

View file

@ -0,0 +1,9 @@
## Known Issues: Linux Release
Several critical features are missing from the Linux release compared to the Windows version.
The N-Gage emulation module is completely non-functional, as users cannot browse or select game files within this section.
Additionally, the application fails these both when running standalone directly from source AppImage and when integrated through RetroDECK.
There is no point at implementing it at this time.

View file

@ -0,0 +1,6 @@
[General]
activeUILanguage=en_US
disableNoDeviceInstallNotify=true
enableDiscordRichPresence=false
lastWindowMaximized=true
showLogConsole=false

View file

@ -0,0 +1,110 @@
- source:
type: key
data:
keycode: 16777264
target: 164
- source:
type: key
data:
keycode: 16777265
target: 165
- source:
type: key
data:
keycode: 16777266
target: 180
- source:
type: key
data:
keycode: 16777267
target: 181
- source:
type: key
data:
keycode: 16777220
target: 167
- source:
type: key
data:
keycode: 16777235
target: 16
- source:
type: key
data:
keycode: 16777237
target: 17
- source:
type: key
data:
keycode: 16777234
target: 14
- source:
type: key
data:
keycode: 16777236
target: 15
- source:
type: key
data:
keycode: 48
target: 48
- source:
type: key
data:
keycode: 49
target: 49
- source:
type: key
data:
keycode: 50
target: 50
- source:
type: key
data:
keycode: 51
target: 51
- source:
type: key
data:
keycode: 52
target: 52
- source:
type: key
data:
keycode: 53
target: 53
- source:
type: key
data:
keycode: 54
target: 54
- source:
type: key
data:
keycode: 55
target: 55
- source:
type: key
data:
keycode: 56
target: 56
- source:
type: key
data:
keycode: 57
target: 57
- source:
type: key
data:
keycode: 42
target: 42
- source:
type: key
data:
keycode: 47
target: 127
- source:
type: key
data:
keycode: 16777219
target: 1

View file

@ -0,0 +1,110 @@
- source:
type: key
data:
keycode: 16777264
target: 164
- source:
type: key
data:
keycode: 16777265
target: 165
- source:
type: key
data:
keycode: 16777266
target: 180
- source:
type: key
data:
keycode: 16777267
target: 181
- source:
type: key
data:
keycode: 16777220
target: 167
- source:
type: key
data:
keycode: 16777235
target: 16
- source:
type: key
data:
keycode: 16777237
target: 17
- source:
type: key
data:
keycode: 16777234
target: 14
- source:
type: key
data:
keycode: 16777236
target: 15
- source:
type: key
data:
keycode: 48
target: 48
- source:
type: key
data:
keycode: 49
target: 49
- source:
type: key
data:
keycode: 50
target: 50
- source:
type: key
data:
keycode: 51
target: 51
- source:
type: key
data:
keycode: 52
target: 52
- source:
type: key
data:
keycode: 53
target: 53
- source:
type: key
data:
keycode: 54
target: 54
- source:
type: key
data:
keycode: 55
target: 55
- source:
type: key
data:
keycode: 56
target: 56
- source:
type: key
data:
keycode: 57
target: 57
- source:
type: key
data:
keycode: 42
target: 42
- source:
type: key
data:
keycode: 47
target: 127
- source:
type: key
data:
keycode: 16777219
target: 1

View file

@ -0,0 +1,74 @@
bkg-path: ""
font: ""
log-read: false
log-write: false
log-ipc: false
log-svc: false
log-passed: false
log-exports: false
cpu: Dynarmic
device: 0
language: -1
emulator-language: -1
enable-gdb-stub: false
data-storage: data
gdb-port: 24689
internet-bluetooth-port: 35689
enable-srv-rights: true
enable-srv-sa: true
enable-srv-drm: true
fbs-enable-compression-queue: true
enable-btrace: false
stop-warn-touchscreen-disabled: false
dump-imb-range-code: false
hide-mouse-in-screen-space: false
enable-nearest-neighbor-filter: false
integer-scaling: false
cpu-load-save: true
mime-detection: true
rtos-level: ""
ui-new-style: true
svg-icon-cache-reset: false
audio-master-volume: 100
current-keybind-profile: test
screen-buffer-sync: preferred
report-mmfdev-underflow: false
disable-display-content-scale: false
device-display-name: RetroDECK
midi-backend: tsf
hsb-bank-path: resources/defaultbank.hsb
sf2-bank-path: resources/defaultbank.sf2
bt-central-server-url: btnetplay.12z1.com
background-image: ""
background-image-opacity: 255
enable-hw-gles1: true
log-filter: "*:trace Emulated.Stdout:off Service.EFsrv:warn Service.Cenrep:off Kernel:Warn Service.Track:error"
hide-system-apps: true
btnet-port-offset: 15000
btnet-password: ""
btnet-discovery-mode: 0
enable-upnp: true
extensive-logging: false
internet-bluetooth-friends:
[]

View file

@ -0,0 +1,126 @@
RM-409:
platver: epoc93
manufacturer: (c)Nokia
firmcode: RM-409
model: Nokia 5320d-1
machine-uid: 0
RM-504:
platver: epoc94
manufacturer: Nokia
firmcode: RM-504
model: Nokia 5530
machine-uid: 0
RM-356:
platver: epoc94
manufacturer: Nokia
firmcode: RM-356
model: Nokia 5800 XpressMusic
machine-uid: 536926806
RM-1:
platver: epoc80
manufacturer: (c) NOKIA.
firmcode: RM-1
model: Nokia 6630
machine-uid: 270515029
RM-324:
platver: epoc93
manufacturer: (c)Nokia
firmcode: RM-324
model: Nokia 6650 Fold - AT&T
machine-uid: 4251128
RM-566:
platver: epoc93
manufacturer: Nokia
firmcode: RM-566
model: Nokia 6730 Classic
machine-uid: 4251080
RM-675:
platver: epoc100
manufacturer: Nokia
firmcode: RM-675
model: Nokia C7 (Don't Select this Rom, It Will Brick EKA2L1)
machine-uid: 537051026
RM-632:
platver: epoc93
manufacturer: Nokia
firmcode: RM-632
model: Noka E5 (Don't Select this Rom, It Will Brick EKA2L1)
machine-uid: 537018624
RM-170:
platver: epoc93
manufacturer: (c) Nokia
firmcode: RM-170
model: Nokia E50
machine-uid: 4251128
NEM-4:
platver: epoc6
manufacturer: Nokia
firmcode: NEM-4
model: Nokia N-Gage
machine-uid: 0
RH-29:
platver: epoc6
manufacturer: Nokia
firmcode: RH-29
model: Nokia N-Gage QD Retail
machine-uid: 0
RH-4:
platver: epoc6
manufacturer: Nokia
firmcode: RH-4
model: Nokia N-Gage QD Dev
machine-uid: 0
RM-84:
platver: epoc81a
manufacturer: (C)Nokia
firmcode: RM-84
model: Nokia N70
machine-uid: 270536602
RM-333:
platver: epoc93
manufacturer: Nokia
firmcode: RM-333
model: N85
machine-uid: 0
RM-320:
platver: epoc93
manufacturer: N95(c)NMP
firmcode: RM-320
model: Nokia N95
machine-uid: 536882564
RM-507:
platver: epoc94
manufacturer: Nokia
firmcode: RM-507
model: Nokia N97
machine-uid: 536956381
RM-707:
platver: epoc100
manufacturer: Nokia
firmcode: RM-707
model: Nokia X7 (Don't Select this Rom, It Will Brick EKA2L1)
machine-uid: 5336512
SGH-D720:
platver: epoc80
manufacturer: (c)Samsung Electronics
firmcode: SGH-D720
model: Samsung D720 (Don't Select this Rom, It Will Brick EKA2L1)
machine-uid: 0
SGH-D730:
platver: epoc80
manufacturer: (c)Samsung Electronics
firmcode: SGH-D730
model: Samsung D730 (Don't Select this Rom, It Will Brick EKA2L1)
machine-uid: 0
SGH-i450:
platver: epoc93
manufacturer: (c)Samsung
firmcode: SGH-i450
model: Samsung i450
machine-uid: 0
Appl SW 12.2_15:
platver: epoc6
manufacturer: Siemens
firmcode: Appl SW 12.2_15
model: Siemens SX1
machine-uid: 0

View file

@ -0,0 +1,34 @@
#!/bin/bash
_prepare_component::hypseus-singe() {
local action="$1"
shift
local component_config="$(get_own_component_path)/rd_config"
case "$action" in
reset)
log i "----------------------"
log i "Resetting Hypseus Singe"
log i "----------------------"
create_dir -d "$XDG_DATA_HOME/hypseus-singe"
cp -fr "$component_config/"* "$XDG_CONFIG_HOME/hypseus-singe"
dir_prep "$bios_path/EKA2L1" "$XDG_DATA_HOME/EKA2L1/data/roms"
dir_prep "$storage_path/EKA2L1/j2me" "$XDG_DATA_HOME/EKA2L1/data/j2me"
dir_prep "$storage_path/EKA2L1/drives" "$XDG_DATA_HOME/EKA2L1/data/drives"
;;
postmove)
log i "------------------------"
log i "Post-moving Hypseus Singe"
log i "------------------------"
;;
esac
}

View file

@ -0,0 +1,20 @@
#!/bin/bash
HOME=/var/data/hypseus-singe
# Setting component name and path based on the directory name
component_name="$(basename "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")")"
component_path="$(cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd)"
# Set LD_LIBRARY_PATH
export LD_LIBRARY_PATH="$component_path/lib:$ffmpeg_path/25.08:$rd_shared_libs:${DEFAULT_LD_LIBRARY_PATH}"
export QT_PLUGIN_PATH="${QT_PLUGIN_PATH}"
export QT_QPA_PLATFORM_PLUGIN_PATH="${QT_QPA_PLATFORM_PLUGIN_PATH}"
log i "RetroDECK is now launching $component_name"
log d "Library path is: $LD_LIBRARY_PATH"
log d "QT plugin path is: $QT_PLUGIN_PATH"
log d "QT QPA PLATFORM plugin path is: $QT_QPA_PLATFORM_PLUGIN_PATH"
exec "$component_path/bin/hypseus.bin" -gamepad -manymouse -espath -fullscreen -fastboot -homedir /var/data/hypseus-singe -ramdir /var/data/hypseus-singe/ram -romdir /var/data/hypseus-singe/rom -config /var/config/hypseus-singe/hypinput.ini "$@"

View file

@ -0,0 +1,53 @@
{
"hypseus-singe": {
"name": "Hypseus Singe",
"core_framework_compatibility": "1",
"component_version": "1.0.0",
"capabilities": [
"reset",
"open"
],
"url_rdwiki": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/hypseus/hypseus-guide/",
"url_donation_purchase": "",
"url_source": "https://github.com/btolab/hypseus",
"description": "Hypseus Singe is a an Arcade Laserdisc emulator.",
"system_friendly_name": "Arcade Laserdisc",
"component_type": "Emulator",
"system": "laserdisc",
"es_de_config": {
"es_find_rules": {
"emulators": [
{
"name": "HYPSEUS-SINGE",
"description": "Laserdisc emulator Hypseus Singe.",
"rules": [
{
"type": "staticpath",
"entries": [
"%COMPONENT_PATH%/component_launcher.sh"
]
}
]
}
]
},
"es_systems": [
{
"name": "laserdisc",
"fullname": "LaserDisc Games",
"path": "%ROMPATH%/laserdisc",
"extension": ".singe",
"commands": [
{
"label": "Hypseus Singe (Standalone)",
"command": "%EMULATOR_HYPSEUS-SINGE% singe vldp -framefile %GAMEDIR%/%BASENAME%.txt -script %GAMEDIR%/%BASENAME%.singe %INJECT%=%BASENAME%.commands",
"priority": 10
}
],
"platform": "daphne, arcade",
"theme": "laserdisc"
}
]
}
}
}

View file

@ -0,0 +1,106 @@
{
"hypseus-singe": [
{
"source_url": "https://github.com/DirtBagXon/hypseus-singe/releases/download/{VERSION}/*_AppImage.tar.gz",
"source_type": "github_release",
"version": "$HYPSEUS_DESIRED_VERSION",
"extraction_type": "tar",
"assets": [
{
"type": "create",
"dest": "component_version",
"contents": "$FRAMEWORK_DESIRED_VERSION"
},
{
"type": "dir",
"source": "$REPO_ROOT/$COMPONENT_NAME/rd_assets/rd_config",
"dest": "rd_config"
},
{
"type": "file",
"source": "$REPO_ROOT/$COMPONENT_NAME/component_functions.sh",
"dest": "$COMPONENT_ARTIFACT_ROOT"
},
{
"type": "file",
"source": "$REPO_ROOT/$COMPONENT_NAME/component_launcher.sh",
"dest": "$COMPONENT_ARTIFACT_ROOT"
},
{
"type": "file",
"source": "$REPO_ROOT/$COMPONENT_NAME/component_manifest.json",
"dest": "$COMPONENT_ARTIFACT_ROOT"
},
{
"type": "file",
"source": "$REPO_ROOT/$COMPONENT_NAME/component_recipe.json",
"dest": "$COMPONENT_ARTIFACT_ROOT"
}
]
},
{
"source_url": "$EXTRACTED_PATH/hypseus-singe/Hypseus_Singe-x86_64.AppImage",
"source_type": "local",
"extraction_type": "appimage",
"assets": [
{
"type": "dir",
"source": "usr/bin",
"dest": "bin"
},
{
"type": "dir",
"source": "$REPO_ROOT/$COMPONENT_NAME",
"dest": "$COMPONENT_ARTIFACT_ROOT"
},
{
"type": "create",
"dest": "component_version",
"contents": "$SOURCE_VERSION"
}
],
"libs": [
{
"library": "libbz2.so.1.0",
"source": "usr/lib",
"dest": "shared-libs"
},
{
"library": "libFLAC.so.8",
"source": "usr/lib",
"dest": "shared-libs"
},
{
"library": "libfluidsynth.so.3",
"source": "usr/lib",
"dest": "shared-libs"
},
{
"library": "libgme.so.0",
"source": "usr/lib",
"dest": "shared-libs"
},
{
"library": "libinstpatch-1.0.so.2",
"source": "usr/lib",
"dest": "shared-libs"
},
{
"library": "libSDL3_mixer.so.0",
"source": "usr/lib",
"dest": "shared-libs"
},
{
"library": "libSDL3_mixer.so.0.2.4",
"source": "usr/lib",
"dest": "shared-libs"
},
{
"library": "libzip.so.4",
"source": "usr/lib",
"dest": "shared-libs"
}
]
}
]
}

View file

@ -0,0 +1,91 @@
# Sample hypinput_gamepad.ini using SDL_Gamepad
# All key options listed for use with -gamepad
#
# Hypseus uses SDL3 Keycodes and SDL_Gamepad
# SWITCH = Key1 Key2 Pad0 (Axis Pad0) Pad1 (Axis Pad1)
# Available AXIS MACROS
#
# AXIS_LEFT_UP
# AXIS_LEFT_DOWN
# AXIS_LEFT_LEFT
# AXIS_LEFT_RIGHT
# AXIS_RIGHT_UP
# AXIS_RIGHT_DOWN
# AXIS_RIGHT_LEFT
# AXIS_RIGHT_RIGHT
#
# Available BUTTON MACROS
#
# BUTTON_A
# BUTTON_B
# BUTTON_X
# BUTTON_Y
# BUTTON_BACK
# BUTTON_GUIDE
# BUTTON_START
# BUTTON_LEFTSTICK
# BUTTON_RIGHTSTICK
# BUTTON_LEFTSHOULDER
# BUTTON_RIGHTSHOULDER
# BUTTON_DPAD_UP
# BUTTON_DPAD_DOWN
# BUTTON_DPAD_LEFT
# BUTTON_DPAD_RIGHT
# AXIS_TRIGGER_LEFT
# AXIS_TRIGGER_RIGHT
# Key1 Key2 Pad0 Button (Axis Pad0) Pad1 Button (Axis Pad1)
[KEYBOARD]
KEY_UP = SDLK_UP 0 BUTTON_DPAD_UP AXIS_LEFT_UP 0 0
KEY_DOWN = SDLK_DOWN 0 BUTTON_DPAD_DOWN AXIS_LEFT_DOWN 0 0
KEY_LEFT = SDLK_LEFT 0 BUTTON_DPAD_LEFT AXIS_LEFT_LEFT 0 0
KEY_RIGHT = SDLK_RIGHT 0 BUTTON_DPAD_RIGHT AXIS_LEFT_RIGHT 0 0
KEY_COIN1 = SDLK_5 0 BUTTON_BACK 0 0 0
KEY_COIN2 = SDLK_6 0 0 0 BUTTON_BACK 0
KEY_START1 = SDLK_1 0 BUTTON_START 0 0 0
KEY_START2 = SDLK_2 0 0 0 BUTTON_START 0
KEY_BUTTON1 = SDLK_LCTRL 0 BUTTON_A 0 0 0
KEY_BUTTON2 = SDLK_LALT 0 BUTTON_B 0 0 0
KEY_BUTTON3 = SDLK_SPACE 0 AXIS_TRIGGER_RIGHT 0 0 0
KEY_SKILL1 = SDLK_LSHIFT 0 0 0 0 0
KEY_SKILL2 = SDLK_Z 0 0 0 0 0
KEY_SKILL3 = SDLK_X 0 0 0 0 0
KEY_SERVICE = SDLK_9 0 BUTTON_RIGHTSTICK 0 0 0
KEY_TEST = SDLK_F2 SDLK_F4 0 0 0 0
KEY_RESET = SDLK_0 0 0 0 0 0
KEY_SCREENSHOT = SDLK_F12 0 0 0 0 0
KEY_QUIT = SDLK_ESCAPE SDLK_Q 0 0 0 0
KEY_PAUSE = SDLK_P 0 0 0 0 0
KEY_CONSOLE = SDLK_BACKSLASH 0 0 0 0 0
KEY_TILT = SDLK_T 0 0 0 0 0
END
[MOUSE]
MOUSE_BUTTON1 = KEY_BUTTON3
MOUSE_BUTTON2 = KEY_BUTTON1
MOUSE_BUTTON3 = KEY_BUTTON2
END
# [GLOBAL] options will override command-line arguments.
# This section is optional. It can safely be removed entirely,
# or any non-required options discarded.
# Remove # to enable an option.
[GLOBAL]
SCREEN = 0
VLDPVOLUME = 40
NONVLDPVOLUME = 10
SOUNDBUFFER = 2048
#ALWAYSONTOP = FALSE
FULLSCREEN = FALSE
#MANYMOUSE = TRUE
GAMEPAD = TRUE
#SCANLINES = FALSE
FULLALPHA = TRUE
LINEARSCALE = FALSE
GRAPHICAPI = AUTO
END
# Valid GRAPHICAPI: OPENGL | VULKAN | AUTO

View file

@ -0,0 +1,26 @@
#!/bin/bash
export lindbergh_config="$XDG_CONFIG_HOME/oricutron/lindbergh.ini"
export controls_config="$XDG_CONFIG_HOME/oricutron/controls.ini"
_prepare_component::lindbergh() {
local action="$1"
shift
local component_config="$(get_own_component_path)/rd_config"
case "$action" in
reset)
log i "----------------------"
log i "Resetting Lindbergh Loader"
log i "----------------------"
create_dir -d "$XDG_CONFIG_HOME/lindbergh/"
cp -fr "$component_config/"* "$XDG_CONFIG_HOME/lindbergh/"
;;
esac
}

View file

@ -0,0 +1,21 @@
#!/bin/bash
HOME=/var/config/lindbergh
# Setting component name and path based on the directory name
component_name="$(basename "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")")"
component_path="$(cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd)"
# Set LD_LIBRARY_PATH
export LD_LIBRARY_PATH="$component_path/lib:$component_path/lib32:$component_path/lib32ID:$ffmpeg_path/25.08:$rd_shared_libs:${DEFAULT_LD_LIBRARY_PATH}"
export QT_PLUGIN_PATH="${QT_PLUGIN_PATH}"
export QT_QPA_PLATFORM_PLUGIN_PATH="${QT_QPA_PLATFORM_PLUGIN_PATH}"
log i "RetroDECK is now launching $component_name"
log d "Library path is: $LD_LIBRARY_PATH"
log d "QT plugin path is: $QT_PLUGIN_PATH"
log d "QT QPA PLATFORM plugin path is: $QT_QPA_PLATFORM_PLUGIN_PATH"
exec "$component_path/bin/lindbergh" -c /var/config/lindbergh/lindbergh.ini -o /var/config/lindbergh/controls.ini "$@"

View file

@ -0,0 +1,52 @@
{
"lindbergh": {
"name": "Lindbergh Loader",
"core_framework_compatibility": "1",
"component_version": "1.0.0",
"capabilities": [
"reset",
"open"
],
"url_rdwiki": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/lindbergh/lindbergh-guide/",
"url_donation_purchase": "",
"url_source": "https://github.com/lindbergh-loader/lindbergh-loader",
"description": "Lindbergh Loader is a SEGA Lindbergh arcade emulator.",
"component_type": "Emulator",
"system_friendly_name": "SEGA Lindbergh",
"system": "lindbergh",
"es_de_config": {
"es_find_rules": {
"emulators": [
{
"name": "LINDBERGH-LOADER",
"description": "SEGA Lindbergh emulator Lindbergh Loader",
"rules": [
{
"type": "staticpath",
"entries": [
"%COMPONENT_PATH%/component_launcher.sh"
]
}
]
}
]
},
"es_systems": [
{
"name": "arcade",
"fullname": "arcade",
"path": "%ROMPATH%/arcade",
"extension": ".lindbergh",
"commands": [
{
"label": "Lindbergh Loader (Standalone)",
"command": "%STARTDIR%=%GAMEENTRYDIR% %EMULATOR_LINDBERGH-LOADER% %INJECT%=%BASENAME%/%BASENAME%.commands"
}
],
"platform": "arcade",
"theme": "arcade"
}
]
}
}
}

View file

@ -0,0 +1,75 @@
{
"lindbergh": [
{
"source_url": "https://github.com/lindbergh-loader/lindbergh-loader/releases/{VERSION}/*.flatpak",
"source_type": "github_release",
"version": "$LINDBERGH_DESIRED_VERSION",
"extraction_type": "local"
},
{
"source_url": "$EXTRACTED_PATH",
"source_type": "flatpak-bundle",
"dest": "user",
"version": "com.github.lindberghloader",
"extraction_type": "flatpak",
"assets": [
{
"type": "dir",
"source": "bin",
"dest": "bin"
},
{
"type": "dir",
"source": "etc",
"dest": "etc"
},
{
"type": "dir",
"source": "lib",
"dest": "lib"
},
{
"type": "dir",
"source": "lib32",
"dest": "lib32"
},
{
"type": "dir",
"source": "sbin",
"dest": "sbin"
},
{
"type": "create",
"dest": "component_version",
"contents": "$SOURCE_VERSION"
},
{
"type": "dir",
"source": "$REPO_ROOT/$COMPONENT_NAME/rd_assets/rd_config",
"dest": "rd_config"
},
{
"type": "file",
"source": "$REPO_ROOT/$COMPONENT_NAME/component_functions.sh",
"dest": "$COMPONENT_ARTIFACT_ROOT"
},
{
"type": "file",
"source": "$REPO_ROOT/$COMPONENT_NAME/component_launcher.sh",
"dest": "$COMPONENT_ARTIFACT_ROOT"
},
{
"type": "file",
"source": "$REPO_ROOT/$COMPONENT_NAME/component_manifest.json",
"dest": "$COMPONENT_ARTIFACT_ROOT"
},
{
"type": "file",
"source": "$REPO_ROOT/$COMPONENT_NAME/component_recipe.json",
"dest": "$COMPONENT_ARTIFACT_ROOT"
}
],
"libs": []
}
]
}

View file

@ -0,0 +1,13 @@
## Known Issues: Lindbergh Loader
Lindbergh Loader fails to function within Flatpak environments on multiple fronts.
Their official Flatpak bundle on their GitHub appears to be broken and does not launch successfully
returning the error `/app/retrodeck/components/lindbergh/bin/lindbergh: cannot execute: required file not found`.
Additionally, attempts to extract the full AppImage contents in RetroDECK's Flatpak environment have been unsuccessful
and have resulted in the same startup failure.

View file

@ -0,0 +1,95 @@
[Config]
Steer_DeadZone = 8000
Gas_DeadZone = 500
Brake_DeadZone = 500
ABC_X_DeadZone = 8000
ABC_Y_DeadZone = 8000
Throttle_DeadZone = 8000
ShakeIncreaseRate = 10.0
ShakeDecayRate = 0.95
[Common]
Test = KEY_T
P1_Coin = KEY_5
P2_Coin = KEY_6
P1_Start = KEY_1, JOY0_BUTTON_11, GC0_BUTTON_START
P2_Start = KEY_2
P1_Service = KEY_S, JOY0_BUTTON_10, GC0_BUTTON_BACK
[Digital]
P1_Up = KEY_Up, GC0_BUTTON_DPUP, GC0_AXIS_LEFTY_NEGATIVE, JOY0_HAT0_UP, JOY0_AXIS_1_NEGATIVE
P1_Down = KEY_Down, GC0_BUTTON_DPDOWN, GC0_AXIS_LEFTY_POSITIVE, JOY0_HAT0_DOWN, JOY0_AXIS_1_POSITIVE
P1_Left = KEY_Left, GC0_BUTTON_DPLEFT, GC0_AXIS_LEFTX_NEGATIVE, JOY0_HAT0_LEFT, JOY0_AXIS_0_NEGATIVE
P1_Right = KEY_Right, GC0_BUTTON_DPRIGHT, GC0_AXIS_LEFTX_POSITIVE, JOY0_HAT0_RIGHT, JOY0_AXIS_0_POSITIVE
P1_Button1 = KEY_Q, GC0_BUTTON_A, JOY0_BUTTON_0
P1_Button2 = KEY_W, GC0_BUTTON_B, JOY0_BUTTON_1
P1_Button3 = KEY_E, GC0_BUTTON_X, JOY0_BUTTON_2
P1_Card1Insert = KEY_F7, GC0_BUTTON_GUIDE, JOY0_BUTTON_11
P2_Card2Insert = KEY_F8, GC1_BUTTON_GUIDE, JOY1_BUTTON_11
[Driving]
P1_Steer_Left = KEY_Left
P1_Steer_Right = KEY_Right
P1_Gas_Digital = KEY_Up
P1_Brake_Digital = KEY_Down
ViewChange = KEY_V, GC0_BUTTON_Y, JOY0_BUTTON_2
Boost = KEY_Q, GC0_BUTTON_A, JOY0_BUTTON_0
BoostRight = KEY_W, GC0_BUTTON_B, JOY0_BUTTON_1
GearUp = KEY_A, GC0_BUTTON_RIGHTSHOULDER, JOY0_BUTTON_5
GearDown = KEY_Z, GC0_BUTTON_LEFTSHOULDER, JOY0_BUTTON_4
MusicChange = KEY_M, GC0_BUTTON_X, JOY0_BUTTON_3
Up = KEY_I, GC0_BUTTON_DPUP, JOY0_HAT0_UP
Down = KEY_K, GC0_BUTTON_DPDOWN, JOY0_HAT0_DOWN
Left = KEY_J, GC0_BUTTON_DPLEFT, JOY0_HAT0_LEFT
Right = KEY_L, GC0_BUTTON_DPRIGHT, JOY0_HAT0_RIGHT
CardInsert = KEY_F7, GC0_BUTTON_GUIDE, JOY0_BUTTON_12
P1_Steer = GC0_AXIS_LEFTX, JOY0_AXIS_0
P1_Gas = GC0_AXIS_RIGHTTRIGGER, JOY0_AXIS_5
P1_Brake = GC0_AXIS_LEFTTRIGGER, JOY0_AXIS_2
[ABC]
ABC_Left = KEY_Left
ABC_Right = KEY_Right
ABC_Up = KEY_Up
ABC_Down = KEY_Down
Throttle_Accelerate = KEY_A
Throttle_Slowdown = KEY_Z
GunTrigger = KEY_Q, GC0_BUTTON_A, JOY0_BUTTON_0
MissileTrigger = KEY_W, GC0_BUTTON_B, JOY0_BUTTON_1
ClimaxSwitch = KEY_E, GC0_BUTTON_Y, JOY0_BUTTON_4
ABC_X = GC0_AXIS_LEFTX, JOY0_AXIS_0
ABC_Y = GC0_AXIS_LEFTY, JOY0_AXIS_1
Throttle = GC0_AXIS_RIGHTY_INVERTED, GC0_AXIS_RIGHTTRIGGER_POSITIVE_HALF, GC0_AXIS_LEFTTRIGGER_NEGATIVE_HALF, JOY0_AXIS_4_INVERTED, JOY0_AXIS_5_POSITIVE_HALF, JOY0_AXIS_4_NEGATIVE_HALF
[Shooting]
P1_GunX = MOUSE_AXIS_X
P1_GunY = MOUSE_AXIS_Y
P1_Trigger = MOUSE_LEFT_BUTTON, KEY_Q
P1_Reload = MOUSE_RIGHT_BUTTON, KEY_W
P1_GunButton = MOUSE_MIDDLE_BUTTON, KEY_E
P1_ActionButton = KEY_R
P1_PedalLeft = KEY_Left
P1_PedalRight = KEY_Right
[Mahjong]
ButtonA = KEY_Y
ButtonB = KEY_U
ButtonC = KEY_I
ButtonD = KEY_O
ButtonE = KEY_G
ButtonF = KEY_H
ButtonG = KEY_J
ButtonH = KEY_K
ButtonI = KEY_L
ButtonJ = KEY_V
ButtonK = KEY_B
ButtonL = KEY_N
ButtonM = KEY_M
ButtonN = KEY_,
ButtonChi = KEY_F1
ButtonPon = KEY_F2
ButtonKan = KEY_F3
ButtonReach = KEY_F4
ButtonAgari = KEY_F5
ButtonCancel = KEY_F6
CardInsert = KEY_F7

View file

@ -0,0 +1,288 @@
# SEGA Lindbergh Emulator Configuration File
# By the Lindbergh Development Team 2024-2025
[Display]
# Set the width resolution here
WIDTH = AUTO
# Set the height resolution here
HEIGHT = AUTO
# Boost render resolution in HOD4/2Spicy/Harley/Rambo/HOD-EX/ID4/ID5 and LGJ
BOOST_RENDER_RES = true
# Set to true for full screen
FULLSCREEN = true
# Set to true if you'd like to add a border for optical light gun tracking
BORDER_ENABLED = false
# Set the thickness of the white border as a percentage of the width of the screen
WHITE_BORDER_PERCENTAGE = 2
# Set the thickness of the black border which sits around the
# white border as a percentage of the width of the screen
BLACK_BORDER_PERCENTAGE = 0
# Set to keep the aspect ratio in games like Sega Race TV Primeval Hunt and LGJ-SP
KEEP_ASPECT_RATIO = true
# Set to true to enable the mouse pointer/Cursor
HIDE_CURSOR = true
[Input]
# Sets the Input Mode (1: SDL, 2: EVDEV
INPUT_MODE = 1
[Emulation]
# Set the Region (JP/US/EX)
REGION = EX
# Set to true for Free Play, none to leave as default
FREEPLAY = none
# Set to true to emulate JVS and use the keyboard/mouse for controls.
# If this is set to false, the loader will route the traffic to the serial device
# defined in JVS_PATH if it has been defined.
EMULATE_JVS = true
# Set to true to emulate the rideboard used in the SPECIAL games
# If this is set to false, then the emulator will route the traffic to one of the serial ports
EMULATE_RIDEBOARD = AUTO
# Set to true to emulate the driveboard used in driving games
# If this is set to false, then the emulator will route the traffic to one of the serial ports
EMULATE_DRIVEBOARD = AUTO
# Set to true to emulate the motion board from Outrun 2 SP SDX
# If this is set to false, then the emulator will route the traffic to one of the serial ports
EMULATE_MOTIONBOARD = AUTO
# Set to true to enable card reader emulation in Virtua Tennis 3 or R-Tuned
EMULATE_HW210_CARDREADER = AUTO
# Set to true to enable card reader emulation in ID4 and ID5 file
EMULATE_ID_CARD READER = AUTO
# Set to true to enable touchscreen emulation with the mouse
EMULATE_TOUCHSCREEN = AUTO
[Cards]
# Set to false to use a button to insert a card manually in ID4 or ID5.
# Or true to make the loader auto load
ID_CARDFILE_AUTOLOAD = true
# Card File for reader 1 in VT3 or R-Tuned
CARDFILE_01 = "Card_01.crd"
# Card File for reader 2 in VT3 or R-Tuned
CARDFILE_02 = "Card_02.crd"
# Folder for ID Card files
ID_CARDFOLDER = ""
[Paths]
# Define the path to pass the JVS packets to if JVS is not being emulated
JVS_PATH = "/dev/ttyUSB0"
# Define the path to pass the first serial port to
SERIAL_1_PATH = "/dev/ttyS0"
# Define the path to pass the second serial port to
SERIAL_2_PATH = "/dev/ttyS1"
# Define the path to the sram.bin file
SRAM_PATH = "RETRODECKBIOS/sram.bin"
# Define the path to the eeprom.bin file
EEPROM_PATH = "RETRODECKBIOS/eeprom.bin"
# If set, libCG.so needed for 2Spicy, Harley, Rambo and HOD-Ex shader recompilation
# will be loaded from the specified location. (include the name of file in the location For Example: /my/file/location/myLibCg.so)
LIBCG_PATH = "lib/libCG.so"
[Graphics]
# Set the GPU vendor (0 = Autodetect / 1 = NVidia / 2 = AMD / 3 = ATI / 4 = Intel)
GPU_VENDOR = 0
# Set to true if you experience flickering in hummer
HUMMER_FLICKER_FIX = false
# Set to false if you don't want to limit the FPS
FPS_LIMITER_ENABLED = true
# Set the target FPS (will only work if FPS_LIMITER_ENABLED = 1)
FPS_TARGET = 60.0
# Set to true if you want to render LGJ using the mesa patches
LGJ_RENDER_WITH_MESA = true
# Disable to use the original fonts instead of the built in font
DISABLE_BUILTIN_FONT = false
# Disable to use the original logos instead of the built in logos
DISABLE_BUILTIN_LOGOS = false
[Cursor]
# If true, a custom mouse cursor will be used loaded from a png file set in CUSTOM_CURSOR
# Ovewrites HIDE_CURSOR
CUSTOM_CURSOR_ENABLED = false
# Set the custom mouse pointer from a PNG file (Usefull for shooting games)
CUSTOM_CURSOR = ""
# Set the width of the custom cursor
CUSTOM_CURSOR_WIDTH = 32
# Set the height of the custom cursor
CUSTOM_CURSOR_HEIGHT = 32
# Set a custom cursor for the touch screen in Primeval Hunt, MJ4 Games and AxA Games
TOUCH_CURSOR = ""
# Set the width of the custom cursor
TOUCH_CURSOR_WIDTH = 32
# Set the height of the custom cursor
TOUCH_CURSOR_HEIGHT = 32
[GameSpecific]
# Set Primeval Hunt
# Mode 0: Default (side by side)
# Mode 1: No Touch screen
# Mode 2: Side By Side
# Mode 3: 3ds mode 1 (Touch screen to the right)
# Mode 4: 3ds mode 2 (Touch screen to the bottom)
PRIMEVAL_HUNT_SCREEN_MODE = 2
# Set Primeval Hunt Test mode screen to single screen
PRIMEVAL_HUNT_TEST_SCREEN_SINGLE = true
# Set to true to bypass cabinet checks including drive board and tower in Outrun 2 SP SDX
SKIP_OUTRUN_CABINET_CHECK = false
# Set to false if you want to disable the Glare effect in OutRun
OUTRUN_LENS_GLARE_ENABLED = true
# Hacky way to make MJ4 and AxA work at prohibited times
MJ4_ENABLED_ALL_THE_TIME = false
# House of the dead 4 speed fix, set the frequency of your CPU in Ghz
CPU_FREQ_GHZ = 0.0
# Set to true if you want to chnge the way the guns are show in Rambo
RAMBO_GUNS_SWITCH = false
# Set to true to set the language in Chinese for ID5 DVP-0084 and DVP-0084A
ID5_CHINESE_LANGUAGE = false
# Set the percentage of the steering wheel travel reduction
ID_STEERING_REDUCTION_PERCENTAGE = 0.0
[CrossHairs]
# Set to true to enable Crosshairs even when using GunLights
ENABLE_CROSSHAIRS = false
# Set the Crosshair image from a PNG file for Player 1
P1_CROSSHAIR_PATH = ""
# Set the Crosshair image from a PNG file for Player 2
P2_CROSSHAIR_PATH = ""
# Set the width of the Crosshair image
CUSTOM_CROSSHAIRS_WIDTH = 64
# Set the height of the Crosshair image
CUSTOM_CROSSHAIRS_HEIGHT = 64
[System]
# Set to true to see debug messages in the console
DEBUG_MSGS = false
# Set the colour of the lindbergh (YELLOW, RED, BLUE, SILVER, REDEX)
LINDBERGH_COLOUR = YELLOW
[Network]
# If true, the loader will apply the following network patches depending on the game
ENABLE_NETWORK_PATCHES = true
# Sets the name of the Network Interface Card
NIC_NAME = "enp0s1"
# ID4 and ID5 network configuration per seat
ID_IP_SEAT_1 = "192.168.1.2"
ID_IP_SEAT_2 = "192.168.1.3"
# Sets the IP address and Netmask for Outrun link (you have to put your NIC ip)
OR2_IPADDRESS = "192.168.1.2"
OR2_NETMASK = "255.255.255.0"
# Harley / Hummer and R-Tuned IP address for each Cabinet
IP_CAB1 = "192.168.1.2"
IP_CAB2 = "192.168.1.3"
IP_CAB3 = "192.168.1.4"
IP_CAB4 = "192.168.1.5"
# Sets the IP address of each cabinet for network play in 2Spicy
2SPICY_IP_CAB1 = "192.168.1.2"
2SPICY_IP_CAB2 = "192.168.1.3"
# Sets the IP address for SRTV
SRTV_IPADDRESS = "192.168.1.2"
[EVDEV]
# EVDEV MODE (Input Mode 2)
# To find the value pairs for these run ./lindbergh --list-controllers
#TEST_BUTTON = "AT_TRANSLATED_SET_2_KEYBOARD_KEY_T"
#PLAYER_1_COIN = "AT_TRANSLATED_SET_2_KEYBOARD_KEY_5"
#PLAYER_1_BUTTON_START = "AT_TRANSLATED_SET_2_KEYBOARD_KEY_1
#PLAYER_1_BUTTON_SERVICE = "AT_TRANSLATED_SET_2_KEYBOARD_KEY_S"
#PLAYER_1_BUTTON_UP = "AT_TRANSLATED_SET_2_KEYBOARD_KEY_UP"
#PLAYER_1_BUTTON_DOWN = "AT_TRANSLATED_SET_2_KEYBOARD_KEY_DOWN"
#PLAYER_1_BUTTON_LEFT = "AT_TRANSLATED_SET_2_KEYBOARD_KEY_LEFT"
#PLAYER_1_BUTTON_RIGHT = "AT_TRANSLATED_SET_2_KEYBOARD_KEY_RIGHT"
#PLAYER_1_BUTTON_1 = "AT_TRANSLATED_SET_2_KEYBOARD_KEY_Q"
#PLAYER_1_BUTTON_2 = "AT_TRANSLATED_SET_2_KEYBOARD_KEY_W"
#PLAYER_1_BUTTON_3 = "AT_TRANSLATED_SET_2_KEYBOARD_KEY_E"
#PLAYER_1_BUTTON_4 = "AT_TRANSLATED_SET_2_KEYBOARD_KEY_R"
#PLAYER_1_BUTTON_5 = "AT_TRANSLATED_SET_2_KEYBOARD_KEY_Y"
#PLAYER_1_BUTTON_6 = "AT_TRANSLATED_SET_2_KEYBOARD_KEY_U"
#PLAYER_1_BUTTON_7 = "AT_TRANSLATED_SET_2_KEYBOARD_KEY_I"
#PLAYER_1_BUTTON_8 = "AT_TRANSLATED_SET_2_KEYBOARD_KEY_O"
#PLAYER_1_COIN = "AT_TRANSLATED_SET_2_KEYBOARD_KEY_6"
#PLAYER_2_BUTTON_START = "AT_TRANSLATED_SET_2_KEYBOARD_KEY_1"
#PLAYER_2_BUTTON_SERVICE = "AT_TRANSLATED_SET_2_KEYBOARD_KEY_S"
#PLAYER_2_BUTTON_UP = "AT_TRANSLATED_SET_2_KEYBOARD_KEY_UP"
#PLAYER_2_BUTTON_DOWN = "AT_TRANSLATED_SET_2_KEYBOARD_KEY_DOWN"
#PLAYER_2_BUTTON_LEFT = "AT_TRANSLATED_SET_2_KEYBOARD_KEY_LEFT"
#PLAYER_2_BUTTON_RIGHT = "AT_TRANSLATED_SET_2_KEYBOARD_KEY_RIGHT"
#PLAYER_2_BUTTON_1 = "AT_TRANSLATED_SET_2_KEYBOARD_KEY_Q"
#PLAYER_2_BUTTON_2 = "AT_TRANSLATED_SET_2_KEYBOARD_KEY_W"
#PLAYER_2_BUTTON_3 = "AT_TRANSLATED_SET_2_KEYBOARD_KEY_E"
#PLAYER_2_BUTTON_4 = "AT_TRANSLATED_SET_2_KEYBOARD_KEY_R"
#PLAYER_2_BUTTON_5 = "AT_TRANSLATED_SET_2_KEYBOARD_KEY_Y"
#PLAYER_2_BUTTON_6 = "AT_TRANSLATED_SET_2_KEYBOARD_KEY_U"
#PLAYER_2_BUTTON_7 = "AT_TRANSLATED_SET_2_KEYBOARD_KEY_I"
#PLAYER_2_BUTTON_8 = "AT_TRANSLATED_SET_2_KEYBOARD_KEY_O"
#ANALOGUE_1 = "SYNPS_2_SYNAPTICS_TOUCHPAD_ABS_X"
#ANALOGUE_2 = "SYNPS_2_SYNAPTICS_TOUCHPAD_ABS_Y"
#ANALOGUE_3 = "SYNPS_2_SYNAPTICS_TOUCHPAD_ABS_Z"
#ANALOGUE_4 = "SYNPS_2_SYNAPTICS_TOUCHPAD_ABS_RZ"
#ANALOGUE_5 = "SYNPS_2_SYNAPTICS_TOUCHPAD_ABS_X2"
#ANALOGUE_6 = "SYNPS_2_SYNAPTICS_TOUCHPAD_ABS_Y2"
#ANALOGUE_7 = "SYNPS_2_SYNAPTICS_TOUCHPAD_ABS_Z2"
#ANALOGUE_8 = "SYNPS_2_SYNAPTICS_TOUCHPAD_ABS_RZ2"
#ANALOGUE_DEADZONE_1 = 0 0 0
#ANALOGUE_DEADZONE_2 = 0 0 0
#ANALOGUE_DEADZONE_3 = 0 0 0
#ANALOGUE_DEADZONE_4 = 0 0 0
#ANALOGUE_DEADZONE_5 = 0 0 0
#ANALOGUE_DEADZONE_6 = 0 0 0
#ANALOGUE_DEADZONE_7 = 0 0 0
#ANALOGUE_DEADZONE_8 = 0 0 0

View file

@ -0,0 +1,473 @@
# This file was generated by Raze 1.11.0
# These are the directories to automatically search for game data.
# Each directory should be on a separate line, preceded by Path=
[GameSearch.Directories]
Path=$roms_path/raze
Path=$XDG_CONFIG_HOME/raze
Path=$PROGDIR
Path=/app/retrodeck/components/raze
# These are the directories to search for add-ons added with the -file
# command line parameter, if they cannot be found with the path
# as-is. Layout is the same as for GameSearch.Directories
[FileSearch.Directories]
Path=$roms_path/raze
Path=$XDG_CONFIG_HOME/raze
Path=$PROGDIR
# These are the directories to search for soundfonts that let listed in the menu.
# Layout is the same as for GameSearch.Directories
[SoundfontSearch.Directories]
Path=$roms_path/raze/soundfonts
Path=$XDG_CONFIG_HOME/raze/soundfonts
Path=$PROGDIR/soundfonts
Path=/app/retrodeck/components/raze/soundfonts
[GlobalSettings]
I_FriendlyWindowTitle=1
adl_chips_count=6
adl_emulator_id=0
adl_fullpan=true
adl_run_at_pcm_rate=false
adl_volume_model=0
autoloadbrightmaps=true
autoloadlights=true
autoloadwidescreen=true
autosavecount=4
autosavenum=0
cl_capfps=false
cl_defaultconfiguration=0
cl_gender=0
cl_hudinterpolation=true
cl_interpolate=true
cl_loadingscreens=true
cl_noexitscreens=false
cl_nostartscreens=false
cl_noturnscaling=false
cl_showweapon=1
cl_slopetilting=false
cl_syncinput=false
cl_viewtilting=0
cl_viewtiltscale=1
cl_weaponsway=true
con_4bitansi=false
con_buffersize=-1
con_ctrl_d=
con_notifylines=4
con_printansi=true
defaultiwad=
developer=0
disableautoload=false
disableautosave=0
duke_menufont=-1
fluid_chorus=false
fluid_chorus_depth=8
fluid_chorus_level=1.2
fluid_chorus_speed=0.3
fluid_chorus_type=0
fluid_chorus_voices=3
fluid_gain=0.5
fluid_interp=1
fluid_lib=
fluid_patchset=raze
fluid_reverb=false
fluid_reverb_damping=0.23
fluid_reverb_level=0.57
fluid_reverb_roomsize=0.61
fluid_reverb_width=0.76
fluid_samplerate=0
fluid_threads=1
fluid_voices=128
gl_debug=false
gl_debug_breakpoint=false
gl_debug_level=0
gl_dither_bpc=0
gl_es=false
gl_finishbeforeswap=false
gl_fxaa=0
gl_lens=false
gl_lens_chromatic=1.12
gl_lens_k=-0.12
gl_lens_kcube=0.1
gl_light_shadowmap=false
gl_mask_sprite_threshold=0.5
gl_mask_threshold=0.5
gl_mirror_envmap=true
gl_multisample=1
gl_no_skyclear=false
gl_pipeline_depth=0
gl_plane_reflection=true
gl_satformula=1
gl_seamless=false
gl_shadowmap_filter=1
gl_shadowmap_quality=512
gl_ssao=0
gl_ssao_portals=1
gl_ssao_strength=0.7
gl_texture_filter=4
gl_texture_filter_anisotropic=8
gl_texture_hqresize_maxinputsize=512
gl_texture_hqresize_mt_height=4
gl_texture_hqresize_mt_width=16
gl_texture_hqresize_multithread=true
gl_texture_hqresize_targets=15
gl_texture_hqresizemode=0
gl_texture_hqresizemult=1
gme_stereodepth=0
gus_memsize=0
gus_patchdir=
hud_stats=0
hw_hightile=true
hw_models=false
hw_shadeinterpolate=true
hw_useindexedcolortextures=false
i_discordrpc=false
i_pauseinbackground=true
i_soundinbackground=false
in_mousemode=true
inter_subtitles=false
invertmouse=false
invertmousex=false
language=auto
longsavemessages=false
m_blockcontrollers=false
m_cleanscale=false
m_forward=1
m_pitch=1
m_sensitivity_x=2
m_sensitivity_y=2
m_show_backbutton=0
m_showinputgrid=0
m_side=1
m_use_mouse=2
m_yaw=1
map_point_coordinates=true
midi_config=
midi_dmxgus=false
midi_voices=32
mod_autochip=false
mod_autochip_scan_threshold=12
mod_autochip_size_force=100
mod_autochip_size_scan=500
mod_dumb_mastervolume=1
mod_interp=2
mod_preferred_player=0
mod_samplerate=0
mod_volramp=2
mouse_capturemode=1
mus_calcgain=true
mus_enabled=true
mus_extendedlookup=false
mus_usereplaygain=false
opl_core=0
opl_fullpan=true
opl_numchips=2
opn_chips_count=8
opn_emulator_id=0
opn_fullpan=true
opn_run_at_pcm_rate=false
os_isanyof=true
png_gamma=0
png_level=5
queryiwad=true
quicksavecount=4
quicksavenum=0
r_ambientlight=1
r_drawweapon=1
r_fov=90
r_mirror_recursions=4
r_multithreaded=1
r_precache=true
r_shadows=true
r_skipmats=false
r_spriteadjust=2
r_ticstability=true
save_dir=
save_sort_order=0
saveloadconfirmation=true
savestatistics=0
secret_notify=false
showendoom=1
silentmouseaimtoggle=false
snd_aldevice=Default
snd_alresampler=Default
snd_ambience=true
snd_backend=openal
snd_buffersize=0
snd_channels=128
snd_efx=true
snd_enabled=true
snd_extendedlookup=false
snd_hrtf=-1
snd_mastervolume=1
snd_mididevice=-5
snd_midiprecache=false
snd_musicvolume=0.5
snd_reverb=true
snd_samplerate=0
snd_sfxvolume=1
snd_streambuffersize=64
snd_tryformats=true
snd_waterreverb=true
statfile=razestat.txt
strictdecorate=false
timidity_channel_pressure=false
timidity_chorus=0
timidity_config=raze
timidity_drum_effect=false
timidity_drum_power=1
timidity_key_adjust=0
timidity_lpf_def=1
timidity_min_sustain_time=5000
timidity_modulation_envelope=true
timidity_modulation_wheel=true
timidity_overlap_voice_allow=true
timidity_pan_delay=false
timidity_portamento=true
timidity_reverb=0
timidity_reverb_level=0
timidity_surround_chorus=false
timidity_temper_control=true
timidity_tempo_adjust=1
use_joystick=false
use_mouse=true
vid_activeinbackground=false
vid_adapter=0
vid_aspect=0
vid_brightness=0
vid_contrast=1
vid_cropaspect=false
vid_defheight=480
vid_defwidth=640
vid_dontdowait=false
vid_fullscreen=true
vid_gamma=1
vid_hdr=false
vid_maxfps=500
vid_preferbackend=1
vid_saturation=1
vid_scale_customheight=400
vid_scale_custompixelaspect=1
vid_scale_customwidth=640
vid_scale_linear=false
vid_scalefactor=1
vid_scalemode=0
vid_sdl_render_driver=
vid_vsync=false
vk_debug=false
vk_debug_callstack=true
vk_device=0
vk_exclusivefullscreen=false
vk_hdr=false
vk_raytrace=false
vr_hunits_per_meter=41
vr_ipd=0.062
vr_mode=0
vr_screendist=0.8
vr_swap_eyes=false
warningstoerrors=false
wildmidi_config=
wildmidi_enhanced_resampling=true
wildmidi_reverb=false
win_h=-1
win_maximized=false
win_w=-1
win_x=-1
win_y=-1
wt_commentary=false
wt_forcemidi=false
wt_forcevoc=false
xbrz_centerdirectionbias=4
xbrz_colorformat=0
xbrz_dominantdirectionthreshold=3.6
xbrz_equalcolortolerance=30
xbrz_luminanceweight=1
xbrz_steepdirectionthreshold=2.2
[GlobalSettings.Unknown]
[.Player]
cl_autoaim=1
cl_weaponswitch=3
combatmacro0=
combatmacro1=
combatmacro2=
combatmacro3=
combatmacro4=
combatmacro5=
combatmacro6=
combatmacro7=
combatmacro8=
combatmacro9=
playercolor=0
playergender=0
playername=RetroDECK
rtsname=
[.ConsoleVariables]
adl_bank=14
adl_custom_bank=
adl_use_custom_bank=false
adult_lockout=false
althud_flashing=true
am_followplayer=true
am_linealpha=1
am_linethickness=1
am_nameontop=false
am_onesidedcolor=aa aa aa
am_ovonesidedcolor=aa aa aa
am_ovplayercolor=aa aa aa
am_ovtwosidedcolor=aa aa aa
am_playercolor=aa aa aa
am_rotate=true
am_showlabel=false
am_showtime=0
am_showtotaltime=0
am_textfont=false
am_twosidedcolor=aa aa aa
chat_substitution=false
cl_automsg=false
cl_autorun=true
cl_autosave=true
cl_autosavedeletion=true
cl_bloodoldweapbalance=false
cl_bloodqavinterp=true
cl_bloodvanillabobbing=true
cl_bloodvanillaenemies=false
cl_bloodvanillaexplosions=false
cl_bloodvanillarun=true
cl_bloodweapinterp=false
cl_clampedpitch=true
cl_crosshair=true
cl_dukepitchmode=7
cl_exjumprebound=false
cl_exvertpanscale=8
cl_exviewbobheight=5
cl_exviewbobspeed=4
cl_idplayers=true
cl_maxautosaves=8
cl_maxdecalamount=1024
cl_nomeleeblur=false
cl_obituaries=true
cl_resumesavegame=true
cl_rrvehicletilting=false
cl_runmode=false
cl_showmagamt=false
cl_sointerpolation=true
cl_swsmoothsway=true
cl_viewbob=1
cl_viewhbob=true
cl_viewvbob=true
classic_scaling_factor=1
classic_scaling_pixelaspect=1.2
con_alpha=0.75
con_centernotify=false
con_notablist=false
con_notify_advanced=false
con_notifyscale=1
con_notifytime=3
con_pulsetext=false
con_scale=0
crosshair=0
crosshaircolor=ff 00 00
crosshairgrow=false
crosshairhealth=2
crosshairscale=0.5
gl_aalines=false
gl_bloom=false
gl_bloom_amount=1.4
gl_exposure_base=0.35
gl_exposure_min=0.35
gl_exposure_scale=1.3
gl_exposure_speed=0.05
gl_fogmode=2
gl_menu_blur=-1
gl_paltonemap_powtable=2
gl_paltonemap_reverselookup=true
gl_precache=false
gl_scale_viewport=true
gl_tonemap=0
hud_althudscale=0
hud_ammo_order=0
hud_ammo_red=25
hud_ammo_yellow=50
hud_armor_green=100
hud_armor_red=25
hud_armor_yellow=50
hud_aspectscale=true
hud_berserk_health=true
hud_bgstretch=false
hud_ctf_vanilla=false
hud_health_green=100
hud_health_red=25
hud_health_yellow=50
hud_messages=true
hud_position=false
hud_powerupduration=true
hud_scalefactor=1
hud_showammo=2
hud_showangles=false
hud_showkills=true
hud_showmapname=true
hud_showscore=false
hud_showsecrets=true
hud_showstats=false
hud_showtime=0
hud_showtimestat=0
hud_showweapons=true
hud_size=5
hud_statscale=0.5
hud_textfont=false
hud_timecolor=5
hudcolor_ltim=8
hudcolor_statnames=6
hudcolor_stats=3
hudcolor_time=6
hudcolor_titl=10
hudcolor_ttim=5
hudcolor_xyco=3
hw_2dmip=true
hw_lightmode=0
hw_weaponlight=8
m_quickexit=false
menu_sounds=true
msg=0
msg0color=11
msg1color=5
msg2color=2
msg3color=3
msg4color=3
msgmidcolor=11
msgmidcolor2=4
mus_redbook=true
nocheats=false
opn_custom_bank=
opn_use_custom_bank=false
r_drawfuzz=1
r_voxels=true
safe_spritelist=false
screenshot_dir=
screenshotname=
snd_menuvolume=0.6
snd_pitched=false
snd_speech=1
sw_darts=false
sw_ninjahack=false
sw_nocenterview=false
transsouls=0.75
ui_screenborder_classic_scaling=true
uiscale=0
usermapfolder=
vid_allowtrueultrawide=1
[.VideoSettings]
[.UnknownConsoleVariables]
[.ConsoleAliases]
[.Bindings]
[.DoubleBindings]
[.AutomapBindings]

View file

@ -0,0 +1,67 @@
#!/bin/bash
export gzdoom_config="$XDG_CONFIG_HOME/gzdoom/gzdoom.ini"
_prepare_component::gzdoom() {
local action="$1"
shift
local component_config="$(get_own_component_path)/rd_config"
case "$action" in
reset)
log i "------------------------"
log i "Resetting GZDOOM"
log i "------------------------"
# TODO: do a proper script
# This is just a placeholder script to test the emulator's flow
create_dir "$XDG_CONFIG_HOME/gzdoom"
create_dir "$XDG_DATA_HOME/gzdoom/audio/midi"
create_dir "$XDG_DATA_HOME/gzdoom/audio/fm_banks"
create_dir "$XDG_DATA_HOME/gzdoom/audio/soundfonts"
create_dir "$bios_path/gzdoom"
create_dir "$storage_path/gzdoom/audio/soundfonts"
create_dir "$storage_path/gzdoom/audio/fm_banks"
create_dir "$storage_path/gzdoom/audio/midi"
cp -fv "$component_config/gzdoom.ini" "$gzdoom_config"
# This is an unfortunate one-off because set_setting_value does not currently support multiple setting names with the same name in the same section
sed -i "s#RETRODECKHOMEDIR#${rd_home_path}#g" "$gzdoom_config"
sed -i "s#RETRODECKROMSDIR#${roms_path}#g" "$gzdoom_config"
sed -i "s#RETRODECKBIOSDIR#${bios_path}#g" "$gzdoom_config"
sed -i "s#RETRODECKSAVESDIR#${saves_path}#g" "$gzdoom_config"
sed -i "s#RETRODECKSTORAGESDIR#${storage_path}#g" "$gzdoom_config"
;;
esac
}
_post_update::gzdoom() {
local previous_version="$1"
}
_post_update_legacy::gzdoom() {
# This function is to cover users upgrading from prior to 0.11.0, when per-component versioning was introduced. It can be removed once we are confident all users are running 0.11.0 or higher
local previous_version="$1"
if check_version_is_older_than "$previous_version" "0.8.0b"; then
log i "- The following components are been added and need to be initialized: es-de 3.0, MAME-SA, Vita3K, GZDoom"
prepare_component "reset" "gzdoom"
fi
if check_version_is_older_than "$previous_version" "0.10.0b"; then
log i "0.10.0b Upgrade - Reset: GZDoom"
prepare_component "reset" "gzdoom"
# GZDOOM needs to be reset as the changes are in the config that connects to the new folders.
fi
}

View file

@ -0,0 +1,18 @@
#!/bin/bash
source /app/libexec/launcher_functions.sh
# Setting component name and path based on the directory name
component_name="$(basename "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")")"
component_path="$(cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd)"
export LD_LIBRARY_PATH="$rd_shared_libs:${DEFAULT_LD_LIBRARY_PATH}"
export QT_PLUGIN_PATH="${QT_PLUGIN_PATH}"
export QT_QPA_PLATFORM_PLUGIN_PATH="${QT_QPA_PLATFORM_PLUGIN_PATH}"
export DOOMWADDIR="$component_path/share/games/doom"
log i "RetroDECK is now launching $component_name"
log d "Library path is: $LD_LIBRARY_PATH"
log d "DOOM WADs directory is: $DOOMWADDIR"
exec "$component_path/bin/gzdoom.sh" +fluid_patchset "$component_path/share/games/doom/soundfonts/gzdoom.sf2" "$@"

View file

@ -0,0 +1,56 @@
{
"gzdoom": {
"name": "GZDoom",
"core_framework_compatibility": "1",
"component_version": "1.0.0",
"url_rdwiki": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/gzdoom/gzdoom-guide/",
"url_webpage": "https://zdoom.org/index",
"url_donation_purchase": "",
"url_source": "https://github.com/ZDoom/gzdoom",
"component_type": "Engine",
"description": "Modern, enhanced DOOM engine for playing classic DOOM and other DOOM engine games.",
"system_friendly_name": "Doom",
"system": "doom",
"es_de_config": {
"es_find_rules": {
"emulators": [
{
"name": "GZDOOM",
"description": "GZDoom Game Engine",
"rules": [
{
"type": "staticpath",
"entries": [
"%COMPONENT_PATH%/component_launcher.sh"
]
}
]
}
]
},
"es_systems": [
{
"name": "doom",
"fullname": "Doom",
"path": "%ROMPATH%/doom",
"extension": ".desktop .doom .ipk3 .iwad .pk3 .pk4 .pwad .sh .wad",
"commands": [
{
"label": "GZDoom (Standalone)",
"command": "%EMULATOR_GZDOOM% %ROM%",
"priority": 10
}
],
"platform": "pc, pcwindows",
"theme": "doom"
}
]
},
"helper_files": {
"doom_guide": {
"filename": "doom_guide.txt",
"location": "$roms_path/doom"
}
}
}
}

View file

@ -0,0 +1 @@
This component has been abandoned, they suggest moving to UZDOOM.

View file

@ -0,0 +1,266 @@
#!/bin/bash
log d "RetroDECK Doom Parser booting..."
# Source the global.sh script if not already sourced
if [ -z "${GLOBAL_SOURCED+x}" ]; then
source /app/libexec/global.sh
fi
# Define the IWAD files list
IWAD_FILES=(
"ACTION2.WAD" # Action Doom 2: Urban Brawl
"BLASPHEM.WAD" # Blasphemer
"CHEX.WAD" # Chex Quest
"CHEX3.WAD" # Chex Quest 3
"DELAWEARE.WAD" # Delaweare
"DOOM.WAD" # Doom shareware
"DOOM1.WAD" # Doom
"DOOM2.WAD" # DoomII: Hell on Earth
"DOOM2F.WAD" # DoomII French
"DOOM64.WAD" # Doom64
"DOOM_COMPLETE.PK3" # WadSmoosh merged Doom
"FREEDOOM1.WAD" # Freedoom Phase1
"FREEDOOM2.WAD" # Freedoom Phase2
"FREEDM.WAD" # Freedoom Deathmatch
"HEXDD.WAD" # Hexen: Deathkings of the Dark Citadel
"HEXEN.WAD" # Hexen: Beyond Heretic
"HACX.WAD" # HACX
"HARM1.WAD" # Harmony
"HERETIC.WAD" # Heretic: Shadow of the Serpent Riders
"HERETIC1.WAD" # Heretic shareware
"PLUTONIA.WAD" # Plutonia Experiment
"ROTWB.WAD" # Rise Of The Wool Ball
"SQUARE1.PK3" # The Adventures of Square
"STRIFE0.WAD" # Strife shareware
"STRIFE1.WAD" # Strife
"TNT.WAD" # TNT: Evilution
"VOICES.WAD" # Strife Voices
"WADSMOOSH+.IPK3" # WadSmoosh+ merged Doom
)
# Get the directory where this script is located
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
log d "Running from script dir: $SCRIPT_DIR"
gzdoom="$SCRIPT_DIR/gzdoom"
# Function to check if a file is an IWAD
is_iwad() {
local file="$1"
local lowercase_file="$(basename "${file,,}")"
# Loop through the list of IWAD files
for iwad in "${IWAD_FILES[@]}"; do
# Check if the lowercase version of the IWAD file matches the input file
if [[ "${iwad,,}" == "$lowercase_file" ]]; then
echo "true"
return
fi
done
echo "false"
}
# Function to search for files recursively and resolve symlinks
search_file_recursive() {
local file="$1"
local directory="$2"
local found_file=""
# We'll try several places so this works when the DOOM folder is symlinked
# 1) $directory/$file
# 2) recursive find under $directory
# 3) script-level doom dir (relative to assets) recursive
# 0. normalize file name for case-insensitive search
local lowercase_file="$(echo "$file" | tr '[:upper:]' '[:lower:]')"
# Resolve directory symlinks (if the DOOM folder itself was symlinked)
if [[ -L "$directory" ]]; then
directory=$(readlink -f "$directory")
fi
# Try direct path first
if [[ -e "$directory/$file" ]]; then
found_file=$(readlink -f "$directory/$file")
echo "$found_file"
return
fi
# Try recursive find under provided directory (case-insensitive)
# Use the basename for recursive search, so entries listed as "subdir/name.wad"
# will still match files located below the given directory.
local base="$(basename "$file")"
# Collect all case-insensitive matches, prefer one whose basename equals requested basename exactly
mapfile -t matches < <(find "$directory" -type f -iname "$base" 2>/dev/null || true)
if [[ ${#matches[@]} -gt 0 ]]; then
# First try to find a case-sensitive basename match
found_file=""
for m in "${matches[@]}"; do
if [[ "$(basename "$m")" == "$base" ]]; then
found_file="$m"
break
fi
done
# Fallback to the first match if no exact-case match found
if [[ -z "$found_file" ]]; then
found_file="${matches[0]}"
fi
found_file=$(readlink -f "$found_file")
echo "$found_file"
return
fi
echo "$found_file"
}
# Main script
log d "RetroDECK GZDOOM wrapper init"
# Check non-option arguments for a filename containing a single quote
for a in "$@"; do
case "$a" in
+*|-) continue ;;
esac
if [[ "$a" == *"'"* ]]; then
log e "DOOM Invalid filename: \"$a\" contains a single quote.\nPlease rename the file in a proper way before continuing."
rd_zenity --error --no-wrap \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK: DOOM - Warning: Invalid Filename" \
--text="<span foreground='$purple'><b>Invalid filename\n\n</b></span>\"$1\" contains a single quote.\nPlease rename the file properly before continuing."
exit 1
fi
done
# Determine if one of the arguments is a .doom file (we might be launched with +options first)
doom_file=""
for a in "$@"; do
# ignore option entries that start with '+' or '-'
case "$a" in
+*|-) continue ;;
esac
if [[ "${a##*.}" == "doom" ]]; then
doom_file="$a"
break
fi
done
# If a .doom file wasn't found yet, try to detect any provided candidate file arg (first non-option)
target_arg=""
for a in "$@"; do
case "$a" in
+*|-) continue ;;
esac
target_arg="$a"
done
# If no target was found, fall back to $1 to preserve legacy behavior
if [[ -z "$target_arg" ]]; then
target_arg="$1"
fi
# If the chosen target arg doesn't have the .doom extension, we take the non-doom path
log d "Selected target: '$target_arg' (doom_file='$doom_file')"
if [[ "${doom_file}" == "" && "${target_arg##*.}" != "doom" ]]; then
# Check if the file is in the IWAD list
if [[ $(is_iwad "$target_arg") == "true" ]]; then
log d "iWAD found"
command="$gzdoom -config /var/config/gzdoom/gzdoom.ini -iwad \"$target_arg\""
else
log d "WAD, IPK3 or PK3 file found"
command="$gzdoom -config /var/config/gzdoom/gzdoom.ini -file \"$target_arg\""
fi
# Log the command
log i "Loading: \"$target_arg\""
log i "Executing command \"$command\""
# Execute the command with double quotes
eval "$command"
# Check if a .doom file was found in arguments
elif [[ -n "$doom_file" || "${target_arg##*.}" == "doom" ]]; then
if [[ -z "$doom_file" ]]; then
doom_file="$target_arg"
fi
log i "Found a doom file: \"$doom_file\""
# Check if the .doom file exists
if [[ ! -e "$doom_file" ]]; then
log e "doom file not found in \"$doom_file\""
rd_zenity --error --no-wrap \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK: DOOM - Warning: File not found" \
--text="File \"$doom_file\" not found. Quitting."
exit 1
fi
# Read the .doom file and compose the command
command="$gzdoom -config /var/config/gzdoom/gzdoom.ini"
while IFS= read -r line; do
# Trim leading/trailing whitespace
line="$(echo "$line" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')"
# Ignore empty lines and comment lines
if [[ -z "$line" || "${line:0:1}" == "#" ]]; then
continue
fi
# Remove surrounding quotes if present
if [[ "$line" =~ ^\".*\"$ ]]; then
line="${line:1:${#line}-2}"
fi
# Check if the line contains a single quote
if [[ "$line" == *"'"* ]]; then
log e "Invalid filename: A file contained in \"$doom_file\" contains a single quote"
rd_zenity --error --no-wrap \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK: DOOM - Warning: .doom file error" \
--text="<span foreground='$purple'><b>Invalid filename\n\n</b></span>\"$1\" contains a single quote.\nPlease rename the file properly in the .doom file before continuing."
exit 1
fi
# Search for the file recursively
found_file=$(search_file_recursive "$line" "$(dirname "$doom_file")")
# If the file is not found, exit with an error
if [[ -z "$found_file" ]]; then
log "[ERROR] File not found in \"$line\""
rd_zenity --error --no-wrap \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK: DOOM - Warning: Not found" \
--text="File \"$line\" not found. Quitting."
exit 1
fi
# Add param depending on file extension (.ini -> -cfg, iwads -> -iwad, others -> -file)
ext="${found_file##*.}"
ext_lc="${ext,,}"
case "$ext_lc" in
ini)
command+=" -cfg \"$found_file\""
log i "Appending the param \"-cfg $found_file\""
;;
wad|pk3|ipk3)
if [[ $(is_iwad "$found_file") == "true" ]]; then
command+=" -iwad \"$found_file\""
log i "Appending the param \"-iwad $found_file\""
else
command+=" -file \"$found_file\""
log i "Appending the param \"-file $found_file\""
fi
;;
*)
command+=" -file \"$found_file\""
log i "Appending the param \"-file $found_file\""
;;
esac
done < "$doom_file"
# Log the command
log i "Executing command \"$command\""
# Execute the command with double quotes
eval "$command"
fi

View file

@ -0,0 +1,266 @@
#!/bin/bash
log d "RetroDECK Doom Parser booting..."
# Source the global.sh script if not already sourced
if [ -z "${GLOBAL_SOURCED+x}" ]; then
source /app/libexec/global.sh
fi
# Define the IWAD files list
IWAD_FILES=(
"ACTION2.WAD" # Action Doom 2: Urban Brawl
"BLASPHEM.WAD" # Blasphemer
"CHEX.WAD" # Chex Quest
"CHEX3.WAD" # Chex Quest 3
"DELAWEARE.WAD" # Delaweare
"DOOM.WAD" # Doom shareware
"DOOM1.WAD" # Doom
"DOOM2.WAD" # DoomII: Hell on Earth
"DOOM2F.WAD" # DoomII French
"DOOM64.WAD" # Doom64
"DOOM_COMPLETE.PK3" # WadSmoosh merged Doom
"FREEDOOM1.WAD" # Freedoom Phase1
"FREEDOOM2.WAD" # Freedoom Phase2
"FREEDM.WAD" # Freedoom Deathmatch
"HEXDD.WAD" # Hexen: Deathkings of the Dark Citadel
"HEXEN.WAD" # Hexen: Beyond Heretic
"HACX.WAD" # HACX
"HARM1.WAD" # Harmony
"HERETIC.WAD" # Heretic: Shadow of the Serpent Riders
"HERETIC1.WAD" # Heretic shareware
"PLUTONIA.WAD" # Plutonia Experiment
"ROTWB.WAD" # Rise Of The Wool Ball
"SQUARE1.PK3" # The Adventures of Square
"STRIFE0.WAD" # Strife shareware
"STRIFE1.WAD" # Strife
"TNT.WAD" # TNT: Evilution
"VOICES.WAD" # Strife Voices
"WADSMOOSH+.IPK3" # WadSmoosh+ merged Doom
)
# Get the directory where this script is located
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
log d "Running from script dir: $SCRIPT_DIR"
gzdoom="$SCRIPT_DIR/gzdoom"
# Function to check if a file is an IWAD
is_iwad() {
local file="$1"
local lowercase_file="$(basename "${file,,}")"
# Loop through the list of IWAD files
for iwad in "${IWAD_FILES[@]}"; do
# Check if the lowercase version of the IWAD file matches the input file
if [[ "${iwad,,}" == "$lowercase_file" ]]; then
echo "true"
return
fi
done
echo "false"
}
# Function to search for files recursively and resolve symlinks
search_file_recursive() {
local file="$1"
local directory="$2"
local found_file=""
# We'll try several places so this works when the DOOM folder is symlinked
# 1) $directory/$file
# 2) recursive find under $directory
# 3) script-level doom dir (relative to assets) recursive
# 0. normalize file name for case-insensitive search
local lowercase_file="$(echo "$file" | tr '[:upper:]' '[:lower:]')"
# Resolve directory symlinks (if the DOOM folder itself was symlinked)
if [[ -L "$directory" ]]; then
directory=$(readlink -f "$directory")
fi
# Try direct path first
if [[ -e "$directory/$file" ]]; then
found_file=$(readlink -f "$directory/$file")
echo "$found_file"
return
fi
# Try recursive find under provided directory (case-insensitive)
# Use the basename for recursive search, so entries listed as "subdir/name.wad"
# will still match files located below the given directory.
local base="$(basename "$file")"
# Collect all case-insensitive matches, prefer one whose basename equals requested basename exactly
mapfile -t matches < <(find "$directory" -type f -iname "$base" 2>/dev/null || true)
if [[ ${#matches[@]} -gt 0 ]]; then
# First try to find a case-sensitive basename match
found_file=""
for m in "${matches[@]}"; do
if [[ "$(basename "$m")" == "$base" ]]; then
found_file="$m"
break
fi
done
# Fallback to the first match if no exact-case match found
if [[ -z "$found_file" ]]; then
found_file="${matches[0]}"
fi
found_file=$(readlink -f "$found_file")
echo "$found_file"
return
fi
echo "$found_file"
}
# Main script
log d "RetroDECK GZDOOM wrapper init"
# Check non-option arguments for a filename containing a single quote
for a in "$@"; do
case "$a" in
+*|-) continue ;;
esac
if [[ "$a" == *"'"* ]]; then
log e "DOOM Invalid filename: \"$a\" contains a single quote.\nPlease rename the file in a proper way before continuing."
rd_zenity --error --no-wrap \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK: DOOM - Warning: Invalid Filename" \
--text="<span foreground='$purple'><b>Invalid filename\n\n</b></span>\"$1\" contains a single quote.\nPlease rename the file properly before continuing."
exit 1
fi
done
# Determine if one of the arguments is a .doom file (we might be launched with +options first)
doom_file=""
for a in "$@"; do
# ignore option entries that start with '+' or '-'
case "$a" in
+*|-) continue ;;
esac
if [[ "${a##*.}" == "doom" ]]; then
doom_file="$a"
break
fi
done
# If a .doom file wasn't found yet, try to detect any provided candidate file arg (first non-option)
target_arg=""
for a in "$@"; do
case "$a" in
+*|-) continue ;;
esac
target_arg="$a"
done
# If no target was found, fall back to $1 to preserve legacy behavior
if [[ -z "$target_arg" ]]; then
target_arg="$1"
fi
# If the chosen target arg doesn't have the .doom extension, we take the non-doom path
log d "Selected target: '$target_arg' (doom_file='$doom_file')"
if [[ "${doom_file}" == "" && "${target_arg##*.}" != "doom" ]]; then
# Check if the file is in the IWAD list
if [[ $(is_iwad "$target_arg") == "true" ]]; then
log d "iWAD found"
command="$gzdoom -config /var/config/gzdoom/gzdoom.ini -iwad \"$target_arg\""
else
log d "WAD, IPK3 or PK3 file found"
command="$gzdoom -config /var/config/gzdoom/gzdoom.ini -file \"$target_arg\""
fi
# Log the command
log i "Loading: \"$target_arg\""
log i "Executing command \"$command\""
# Execute the command with double quotes
eval "$command"
# Check if a .doom file was found in arguments
elif [[ -n "$doom_file" || "${target_arg##*.}" == "doom" ]]; then
if [[ -z "$doom_file" ]]; then
doom_file="$target_arg"
fi
log i "Found a doom file: \"$doom_file\""
# Check if the .doom file exists
if [[ ! -e "$doom_file" ]]; then
log e "doom file not found in \"$doom_file\""
rd_zenity --error --no-wrap \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK: DOOM - Warning: File not found" \
--text="File \"$doom_file\" not found. Quitting."
exit 1
fi
# Read the .doom file and compose the command
command="$gzdoom -config /var/config/gzdoom/gzdoom.ini"
while IFS= read -r line; do
# Trim leading/trailing whitespace
line="$(echo "$line" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')"
# Ignore empty lines and comment lines
if [[ -z "$line" || "${line:0:1}" == "#" ]]; then
continue
fi
# Remove surrounding quotes if present
if [[ "$line" =~ ^\".*\"$ ]]; then
line="${line:1:${#line}-2}"
fi
# Check if the line contains a single quote
if [[ "$line" == *"'"* ]]; then
log e "Invalid filename: A file contained in \"$doom_file\" contains a single quote"
rd_zenity --error --no-wrap \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK: DOOM - Warning: .doom file error" \
--text="<span foreground='$purple'><b>Invalid filename\n\n</b></span>\"$1\" contains a single quote.\nPlease rename the file properly in the .doom file before continuing."
exit 1
fi
# Search for the file recursively
found_file=$(search_file_recursive "$line" "$(dirname "$doom_file")")
# If the file is not found, exit with an error
if [[ -z "$found_file" ]]; then
log "[ERROR] File not found in \"$line\""
rd_zenity --error --no-wrap \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK: DOOM - Warning: Not found" \
--text="File \"$line\" not found. Quitting."
exit 1
fi
# Add param depending on file extension (.ini -> -cfg, iwads -> -iwad, others -> -file)
ext="${found_file##*.}"
ext_lc="${ext,,}"
case "$ext_lc" in
ini)
command+=" -cfg \"$found_file\""
log i "Appending the param \"-cfg $found_file\""
;;
wad|pk3|ipk3)
if [[ $(is_iwad "$found_file") == "true" ]]; then
command+=" -iwad \"$found_file\""
log i "Appending the param \"-iwad $found_file\""
else
command+=" -file \"$found_file\""
log i "Appending the param \"-file $found_file\""
fi
;;
*)
command+=" -file \"$found_file\""
log i "Appending the param \"-file $found_file\""
;;
esac
done < "$doom_file"
# Log the command
log i "Executing command \"$command\""
# Execute the command with double quotes
eval "$command"
fi

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,504 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
(This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.)
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.
When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard. To achieve this, non-free programs must be
allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
To apply these terms, attach the following notices to the library. It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
{description}
Copyright (C) {year} {fullname}
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
USA
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random
Hacker.
{signature of Ty Coon}, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!

View file

@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

View file

@ -0,0 +1,504 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.
When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard. To achieve this, non-free programs must be
allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
To apply these terms, attach the following notices to the library. It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
<one line to give the library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!

View file

@ -0,0 +1,674 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.

View file

@ -0,0 +1,461 @@
NOTE: This software is restricted to version 2.1 of the LGPL only.
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
<https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.
When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard. To achieve this, non-free programs must be
allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS

View file

@ -0,0 +1,503 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.
When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard. To achieve this, non-free programs must be
allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
To apply these terms, attach the following notices to the library. It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
<one line to give the library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!

View file

@ -0,0 +1,67 @@
# - Find FLAC
# Find the native FLAC includes and libraries
#
# FLAC_INCLUDE_DIRS - where to find FLAC headers.
# FLAC_LIBRARIES - List of libraries when using libFLAC.
# FLAC_FOUND - True if libFLAC found.
# FLAC_DEFINITIONS - FLAC compile definitons
if (FLAC_INCLUDE_DIR)
# Already in cache, be silent
set (FLAC_FIND_QUIETLY TRUE)
endif ()
find_package (Ogg QUIET)
find_package (PkgConfig QUIET)
pkg_check_modules(PC_FLAC QUIET flac)
set(FLAC_VERSION ${PC_FLAC_VERSION})
find_path (FLAC_INCLUDE_DIR FLAC/stream_decoder.h
HINTS
${PC_FLAC_INCLUDEDIR}
${PC_FLAC_INCLUDE_DIRS}
${FLAC_ROOT}
)
# MSVC built libraries can name them *_static, which is good as it
# distinguishes import libraries from static libraries with the same extension.
find_library (FLAC_LIBRARY
NAMES
FLAC
libFLAC
libFLAC_dynamic
libFLAC_static
HINTS
${PC_FLAC_LIBDIR}
${PC_FLAC_LIBRARY_DIRS}
${FLAC_ROOT}
)
# Handle the QUIETLY and REQUIRED arguments and set FLAC_FOUND to TRUE if
# all listed variables are TRUE.
include (FindPackageHandleStandardArgs)
find_package_handle_standard_args (FLAC
REQUIRED_VARS
FLAC_LIBRARY
FLAC_INCLUDE_DIR
Ogg_FOUND
VERSION_VAR
FLAC_VERSION
)
if (FLAC_FOUND)
set (FLAC_INCLUDE_DIRS ${FLAC_INCLUDE_DIR})
set (FLAC_LIBRARIES ${FLAC_LIBRARY} ${OGG_LIBRARIES})
if (NOT TARGET FLAC::FLAC)
add_library(FLAC::FLAC UNKNOWN IMPORTED)
set_target_properties(FLAC::FLAC PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${FLAC_INCLUDE_DIR}"
IMPORTED_LOCATION "${FLAC_LIBRARY}"
INTERFACE_LINK_LIBRARIES Ogg::ogg
)
endif ()
endif ()
mark_as_advanced(FLAC_INCLUDE_DIR FLAC_LIBRARY)

View file

@ -0,0 +1,61 @@
# - Find ogg
# Find the native ogg includes and libraries
#
# OGG_INCLUDE_DIRS - where to find ogg.h, etc.
# OGG_LIBRARIES - List of libraries when using ogg.
# OGG_FOUND - True if ogg found.
if (OGG_INCLUDE_DIR)
# Already in cache, be silent
set(OGG_FIND_QUIETLY TRUE)
endif ()
find_package (PkgConfig QUIET)
pkg_check_modules (PC_OGG QUIET ogg>=1.3.0)
set (OGG_VERSION ${PC_OGG_VERSION})
find_path (OGG_INCLUDE_DIR ogg/ogg.h
HINTS
${PC_OGG_INCLUDEDIR}
${PC_OGG_INCLUDE_DIRS}
${OGG_ROOT}
)
# MSVC built ogg may be named ogg_static.
# The provided project files name the library with the lib prefix.
find_library (OGG_LIBRARY
NAMES
ogg
ogg_static
libogg
libogg_static
HINTS
${PC_OGG_LIBDIR}
${PC_OGG_LIBRARY_DIRS}
${OGG_ROOT}
)
# Handle the QUIETLY and REQUIRED arguments and set OGG_FOUND
# to TRUE if all listed variables are TRUE.
include (FindPackageHandleStandardArgs)
find_package_handle_standard_args (Ogg
REQUIRED_VARS
OGG_LIBRARY
OGG_INCLUDE_DIR
VERSION_VAR
OGG_VERSION
)
if (OGG_FOUND)
set (OGG_LIBRARIES ${OGG_LIBRARY})
set (OGG_INCLUDE_DIRS ${OGG_INCLUDE_DIR})
if(NOT TARGET Ogg::ogg)
add_library(Ogg::ogg UNKNOWN IMPORTED)
set_target_properties(Ogg::ogg PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${OGG_INCLUDE_DIRS}"
IMPORTED_LOCATION "${OGG_LIBRARIES}"
)
endif ()
endif ()
mark_as_advanced (OGG_INCLUDE_DIR OGG_LIBRARY)

View file

@ -0,0 +1,67 @@
# - Find opus
# Find the native opus includes and libraries
#
# OPUS_INCLUDE_DIRS - where to find opus.h, etc.
# OPUS_LIBRARIES - List of libraries when using opus.
# OPUS_FOUND - True if Opus found.
if (OPUS_INCLUDE_DIR)
# Already in cache, be silent
set(OPUS_FIND_QUIETLY TRUE)
endif ()
find_package (Ogg QUIET)
find_package (PkgConfig QUIET)
pkg_check_modules(PC_OPUS QUIET opus>=1.1)
set (OPUS_VERSION ${PC_OPUS_VERSION})
find_path (OPUS_INCLUDE_DIR opus/opus.h
HINTS
${PC_OPUS_INCLUDEDIR}
${PC_OPUS_INCLUDE_DIRS}
${OPUS_ROOT}
)
# MSVC built opus may be named opus_static.
# The provided project files name the library with the lib prefix.
find_library (OPUS_LIBRARY
NAMES
opus
opus_static
libopus
libopus_static
HINTS
${PC_OPUS_LIBDIR}
${PC_OPUS_LIBRARY_DIRS}
${OPUS_ROOT}
)
# Handle the QUIETLY and REQUIRED arguments and set OPUS_FOUND
# to TRUE if all listed variables are TRUE.
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args (Opus
REQUIRED_VARS
OPUS_LIBRARY
OPUS_INCLUDE_DIR
OGG_FOUND
VERSION_VAR
OPUS_VERSION
)
if (OPUS_FOUND)
set (OPUS_LIBRARIES ${OPUS_LIBRARY})
set (OPUS_INCLUDE_DIRS ${OPUS_INCLUDE_DIR})
if (NOT TARGET Opus::opus)
add_library (Opus::opus UNKNOWN IMPORTED)
set_target_properties (Opus::opus PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${OPUS_INCLUDE_DIRS}"
IMPORTED_LOCATION "${OPUS_LIBRARIES}"
)
endif ()
endif ()
mark_as_advanced(OPUS_INCLUDE_DIR OPUS_LIBRARY)

View file

@ -0,0 +1,210 @@
#[=======================================================================[.rst:
FindVorbis
----------
Finds the native vorbis, vorbisenc amd vorbisfile includes and libraries.
Imported Targets
^^^^^^^^^^^^^^^^
This module provides the following imported targets, if found:
``Vorbis::vorbis``
The Vorbis library
``Vorbis::vorbisenc``
The VorbisEnc library
``Vorbis::vorbisfile``
The VorbisFile library
Result Variables
^^^^^^^^^^^^^^^^
This will define the following variables:
``Vorbis_Vorbis_INCLUDE_DIRS``
List of include directories when using vorbis.
``Vorbis_Enc_INCLUDE_DIRS``
List of include directories when using vorbisenc.
``Vorbis_File_INCLUDE_DIRS``
List of include directories when using vorbisfile.
``Vorbis_Vorbis_LIBRARIES``
List of libraries when using vorbis.
``Vorbis_Enc_LIBRARIES``
List of libraries when using vorbisenc.
``Vorbis_File_LIBRARIES``
List of libraries when using vorbisfile.
``Vorbis_FOUND``
True if vorbis and requested components found.
``Vorbis_Vorbis_FOUND``
True if vorbis found.
``Vorbis_Enc_FOUND``
True if vorbisenc found.
``Vorbis_Enc_FOUND``
True if vorbisfile found.
Cache variables
^^^^^^^^^^^^^^^
The following cache variables may also be set:
``Vorbis_Vorbis_INCLUDE_DIR``
The directory containing ``vorbis/vorbis.h``.
``Vorbis_Enc_INCLUDE_DIR``
The directory containing ``vorbis/vorbisenc.h``.
``Vorbis_File_INCLUDE_DIR``
The directory containing ``vorbis/vorbisenc.h``.
``Vorbis_Vorbis_LIBRARY``
The path to the vorbis library.
``Vorbis_Enc_LIBRARY``
The path to the vorbisenc library.
``Vorbis_File_LIBRARY``
The path to the vorbisfile library.
Hints
^^^^^
A user may set ``Vorbis_ROOT`` to a vorbis installation root to tell this module where to look.
#]=======================================================================]
if (Vorbis_Vorbis_INCLUDE_DIR)
# Already in cache, be silent
set (Vorbis_FIND_QUIETLY TRUE)
endif ()
set (Vorbis_Vorbis_FIND_QUIETLY TRUE)
set (Vorbis_Enc_FIND_QUIETLY TRUE)
set (Vorbis_File_FIND_QUIETLY TRUE)
find_package (Ogg QUIET)
find_package (PkgConfig QUIET)
pkg_check_modules (PC_Vorbis_Vorbis QUIET vorbis)
pkg_check_modules (PC_Vorbis_Enc QUIET vorbisenc)
pkg_check_modules (PC_Vorbis_File QUIET vorbisfile)
set (Vorbis_VERSION ${PC_Vorbis_Vorbis_VERSION})
find_path (Vorbis_Vorbis_INCLUDE_DIR vorbis/codec.h
HINTS
${PC_Vorbis_Vorbis_INCLUDEDIR}
${PC_Vorbis_Vorbis_INCLUDE_DIRS}
${Vorbis_ROOT}
)
find_path (Vorbis_Enc_INCLUDE_DIR vorbis/vorbisenc.h
HINTS
${PC_Vorbis_Enc_INCLUDEDIR}
${PC_Vorbis_Enc_INCLUDE_DIRS}
${Vorbis_ROOT}
)
find_path (Vorbis_File_INCLUDE_DIR vorbis/vorbisfile.h
HINTS
${PC_Vorbis_File_INCLUDEDIR}
${PC_Vorbis_File_INCLUDE_DIRS}
${Vorbis_ROOT}
)
find_library (Vorbis_Vorbis_LIBRARY
NAMES
vorbis
vorbis_static
libvorbis
libvorbis_static
HINTS
${PC_Vorbis_Vorbis_LIBDIR}
${PC_Vorbis_Vorbis_LIBRARY_DIRS}
${Vorbis_ROOT}
)
find_library (Vorbis_Enc_LIBRARY
NAMES
vorbisenc
vorbisenc_static
libvorbisenc
libvorbisenc_static
HINTS
${PC_Vorbis_Enc_LIBDIR}
${PC_Vorbis_Enc_LIBRARY_DIRS}
${Vorbis_ROOT}
)
find_library (Vorbis_File_LIBRARY
NAMES
vorbisfile
vorbisfile_static
libvorbisfile
libvorbisfile_static
HINTS
${PC_Vorbis_File_LIBDIR}
${PC_Vorbis_File_LIBRARY_DIRS}
${Vorbis_ROOT}
)
include (FindPackageHandleStandardArgs)
if (Vorbis_Vorbis_LIBRARY AND Vorbis_Vorbis_INCLUDE_DIR AND Ogg_FOUND)
set (Vorbis_Vorbis_FOUND TRUE)
endif ()
if (Vorbis_Enc_LIBRARY AND Vorbis_Enc_INCLUDE_DIR AND Vorbis_Vorbis_FOUND)
set (Vorbis_Enc_FOUND TRUE)
endif ()
if (Vorbis_Vorbis_FOUND AND Vorbis_File_LIBRARY AND Vorbis_File_INCLUDE_DIR)
set (Vorbis_File_FOUND TRUE)
endif ()
find_package_handle_standard_args (Vorbis
REQUIRED_VARS
Vorbis_Vorbis_LIBRARY
Vorbis_Vorbis_INCLUDE_DIR
Ogg_FOUND
HANDLE_COMPONENTS
VERSION_VAR Vorbis_VERSION)
if (Vorbis_Vorbis_FOUND)
set (Vorbis_Vorbis_INCLUDE_DIRS ${VORBIS_INCLUDE_DIR})
set (Vorbis_Vorbis_LIBRARIES ${VORBIS_LIBRARY} ${OGG_LIBRARIES})
if (NOT TARGET Vorbis::vorbis)
add_library (Vorbis::vorbis UNKNOWN IMPORTED)
set_target_properties (Vorbis::vorbis PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${Vorbis_Vorbis_INCLUDE_DIR}"
IMPORTED_LOCATION "${Vorbis_Vorbis_LIBRARY}"
INTERFACE_LINK_LIBRARIES Ogg::ogg
)
endif ()
if (Vorbis_Enc_FOUND)
set (Vorbis_Enc_INCLUDE_DIRS ${Vorbis_Enc_INCLUDE_DIR})
set (Vorbis_Enc_LIBRARIES ${Vorbis_Enc_LIBRARY} ${Vorbis_Enc_LIBRARIES})
if (NOT TARGET Vorbis::vorbisenc)
add_library (Vorbis::vorbisenc UNKNOWN IMPORTED)
set_target_properties (Vorbis::vorbisenc PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${Vorbis_Enc_INCLUDE_DIR}"
IMPORTED_LOCATION "${Vorbis_Enc_LIBRARY}"
INTERFACE_LINK_LIBRARIES Vorbis::vorbis
)
endif ()
endif ()
if (Vorbis_File_FOUND)
set (Vorbis_File_INCLUDE_DIRS ${Vorbis_File_INCLUDE_DIR})
set (Vorbis_File_LIBRARIES ${Vorbis_File_LIBRARY} ${Vorbis_File_LIBRARIES})
if (NOT TARGET Vorbis::vorbisfile)
add_library (Vorbis::vorbisfile UNKNOWN IMPORTED)
set_target_properties (Vorbis::vorbisfile PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${Vorbis_File_INCLUDE_DIR}"
IMPORTED_LOCATION "${Vorbis_File_LIBRARY}"
INTERFACE_LINK_LIBRARIES Vorbis::vorbis
)
endif ()
endif ()
endif ()
mark_as_advanced (Vorbis_Vorbis_INCLUDE_DIR Vorbis_Vorbis_LIBRARY)
mark_as_advanced (Vorbis_Enc_INCLUDE_DIR Vorbis_Enc_LIBRARY)
mark_as_advanced (Vorbis_File_INCLUDE_DIR Vorbis_File_LIBRARY)

View file

@ -0,0 +1,67 @@
# - Find lame
# Find the native lame includes and libraries
#
# MP3LAME_INCLUDE_DIRS - where to find lame.h, etc.
# MP3LAME_LIBRARIES - List of libraries when using lame.
# MP3LAME_FOUND - True if Lame found.
if (MP3LAME_INCLUDE_DIR)
# Already in cache, be silent
set(MP3LAME_FIND_QUIETLY TRUE)
endif ()
find_path (MP3LAME_INCLUDE_DIR lame/lame.h
HINTS
${LAME_ROOT}
)
# MSVC built lame may be named mp3lame_static.
# The provided project files name the library with the lib prefix.
find_library (MP3LAME_LIBRARY
NAMES
mp3lame
mp3lame_static
libmp3lame
libmp3lame_static
libmp3lame-static
HINTS
${MP3LAME_ROOT}
)
find_library (MP3LAME_HIP_LIBRARY
NAMES
mpghip-static
libmpghip-static
HINTS
${MP3LAME_ROOT}
)
# Handle the QUIETLY and REQUIRED arguments and set LAME_FOUND
# to TRUE if all listed variables are TRUE.
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args (mp3lame
REQUIRED_VARS
MP3LAME_LIBRARY
MP3LAME_INCLUDE_DIR
)
if (MP3LAME_FOUND)
set (MP3LAME_LIBRARIES ${MP3LAME_LIBRARY} ${MP3LAME_HIP_LIBRARY})
set (MP3LAME_INCLUDE_DIRS ${MP3LAME_INCLUDE_DIR})
if (NOT TARGET mp3lame::mp3lame)
add_library (mp3lame::mp3lame UNKNOWN IMPORTED)
set_target_properties (mp3lame::mp3lame PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${MP3LAME_INCLUDE_DIRS}"
IMPORTED_LOCATION "${MP3LAME_LIBRARY}"
)
if (MP3LAME_HIP_LIBRARY AND (NOT TARGET mp3lame::mpghip))
add_library (mp3lame::mpghip STATIC IMPORTED)
set_property (mp3lame::mpghip PROPERTY IMPORTED_LOCATION "${MP3LAME_HIP_LIBRARY}")
set_property (TARGET mp3lame::mp3lame PROPERTY INTERFACE_LINK_LIBRARIES "mp3lame::mpghip")
endif ()
endif ()
endif ()
mark_as_advanced(MP3LAME_INCLUDE_DIR MP3LAME_LIBRARY MP3LAME_HIP_LIBRARY)

View file

@ -0,0 +1,95 @@
#[=======================================================================[.rst:
Findmpg123
-------
Finds the mpg123 library.
Imported Targets
^^^^^^^^^^^^^^^^
This module provides the following imported targets, if found:
``MPG123::libmpg123``
The mpg123 library
Result Variables
^^^^^^^^^^^^^^^^
This will define the following variables:
``mpg123_FOUND``
True if the system has the mpg123 package.
``mpg123_VERSION``
The version of mpg123 that was found on the system.
Cache Variables
^^^^^^^^^^^^^^^
The following cache variables may also be set:
``mpg123_INCLUDE_DIR``
The directory containing ``mpg123.h``.
``mpg123_LIBRARY``
The path to the mpg123 library.
#]=======================================================================]
if (mpg123_INCLUDE_DIR)
# Already in cache, be silent
set(mpg123_FIND_QUIETLY TRUE)
endif ()
find_package (PkgConfig QUIET)
pkg_check_modules(PC_MPG123 QUIET libmpg123>=1.25.10)
find_path (mpg123_INCLUDE_DIR mpg123.h
HINTS
${PC_MPG123_INCLUDEDIR}
${PC_MPG123_INCLUDE_DIRS}
${mpg123_ROOT}
)
# MSVC built mpg123 may be named mpg123_static.
# The provided project files name the library with the lib prefix.
find_library (mpg123_LIBRARY
NAMES
mpg123
mpg123_static
libmpg123
libmpg123_static
HINTS
${PC_MPG123_LIBDIR}
${PC_MPG123_LIBRARY_DIRS}
${mpg123_ROOT}
)
if (PC_MPG123_FOUND)
set (mpg123_VERSION ${PC_MPG123_VERSION})
elseif (mpg123_INCLUDE_DIR)
file (READ "${mpg123_INCLUDE_DIR}/mpg123.h" _mpg123_h)
string (REGEX MATCH "[0-9]+.[0-9]+.[0-9]+" _mpg123_version_re "${_mpg123_h}")
set (mpg123_VERSION "${_mpg123_version_re}")
endif ()
# Handle the QUIETLY and REQUIRED arguments and set mpg123_FOUND
# to TRUE if all listed variables are TRUE.
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args (mpg123
REQUIRED_VARS
mpg123_LIBRARY
mpg123_INCLUDE_DIR
VERSION_VAR
mpg123_VERSION
)
if (mpg123_FOUND AND NOT TARGET MPG123::libmpg123)
add_library (MPG123::libmpg123 UNKNOWN IMPORTED)
set_target_properties (MPG123::libmpg123
PROPERTIES
IMPORTED_LOCATION "${mpg123_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${mpg123_INCLUDE_DIR}"
)
endif ()
mark_as_advanced(mpg123_INCLUDE_DIR mpg123_LIBRARY)

View file

@ -0,0 +1,70 @@
set(SndFile_VERSION 1.2.2)
set(SndFile_VERSION_MAJOR 1)
set(SndFile_VERSION_MINOR 2)
set(SndFile_VERSION_PATCH 2)
set (SndFile_WITH_EXTERNAL_LIBS 1)
set (SndFile_WITH_MPEG 1)
####### Expanded from @PACKAGE_INIT@ by configure_package_config_file() #######
####### Any changes to this file will be overwritten by the next CMake run ####
####### The input file was SndFileConfig.cmake.in ########
get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE)
macro(set_and_check _var _file)
set(${_var} "${_file}")
if(NOT EXISTS "${_file}")
message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !")
endif()
endmacro()
macro(check_required_components _NAME)
foreach(comp ${${_NAME}_FIND_COMPONENTS})
if(NOT ${_NAME}_${comp}_FOUND)
if(${_NAME}_FIND_REQUIRED_${comp})
set(${_NAME}_FOUND FALSE)
endif()
endif()
endforeach()
endmacro()
####################################################################################
include (CMakeFindDependencyMacro)
if (NOT OFF)
list (APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
endif ()
if (SndFile_WITH_EXTERNAL_LIBS AND NOT OFF)
find_dependency (Ogg 1.3)
find_dependency (Vorbis)
find_dependency (FLAC)
find_dependency (Opus)
endif ()
if (SndFile_WITH_MPEG AND NOT OFF)
find_dependency (mp3lame)
find_dependency (mpg123)
endif ()
if (NOT OFF)
list (REMOVE_ITEM CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
endif ()
include (${CMAKE_CURRENT_LIST_DIR}/SndFileTargets.cmake)
set_and_check (SndFile_INCLUDE_DIR "${PACKAGE_PREFIX_DIR}/include")
set (SNDFILE_INCLUDE_DIR ${SndFile_INCLUDE_DIR})
set (SndFile_LIBRARY SndFile::sndfile)
set (SNDFILE_LIBRARY SndFile::sndfile)
set (SndFile_LIBRARIES SndFile::sndfile)
set (SNDFILE_LIBRARIES SndFile::sndfile)
check_required_components(SndFile)
set (SNDFILE_FOUND 1)

View file

@ -0,0 +1,65 @@
# This is a basic version file for the Config-mode of find_package().
# It is used by write_basic_package_version_file() as input file for configure_file()
# to create a version-file which can be installed along a config.cmake file.
#
# The created file sets PACKAGE_VERSION_EXACT if the current version string and
# the requested version string are exactly the same and it sets
# PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version,
# but only if the requested major version is the same as the current one.
# The variable CVF_VERSION must be set before calling configure_file().
set(PACKAGE_VERSION "1.2.2")
if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION)
set(PACKAGE_VERSION_COMPATIBLE FALSE)
else()
if("1.2.2" MATCHES "^([0-9]+)\\.")
set(CVF_VERSION_MAJOR "${CMAKE_MATCH_1}")
if(NOT CVF_VERSION_MAJOR VERSION_EQUAL 0)
string(REGEX REPLACE "^0+" "" CVF_VERSION_MAJOR "${CVF_VERSION_MAJOR}")
endif()
else()
set(CVF_VERSION_MAJOR "1.2.2")
endif()
if(PACKAGE_FIND_VERSION_RANGE)
# both endpoints of the range must have the expected major version
math (EXPR CVF_VERSION_MAJOR_NEXT "${CVF_VERSION_MAJOR} + 1")
if (NOT PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR
OR ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND NOT PACKAGE_FIND_VERSION_MAX_MAJOR STREQUAL CVF_VERSION_MAJOR)
OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND NOT PACKAGE_FIND_VERSION_MAX VERSION_LESS_EQUAL CVF_VERSION_MAJOR_NEXT)))
set(PACKAGE_VERSION_COMPATIBLE FALSE)
elseif(PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR
AND ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_LESS_EQUAL PACKAGE_FIND_VERSION_MAX)
OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION_MAX)))
set(PACKAGE_VERSION_COMPATIBLE TRUE)
else()
set(PACKAGE_VERSION_COMPATIBLE FALSE)
endif()
else()
if(PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR)
set(PACKAGE_VERSION_COMPATIBLE TRUE)
else()
set(PACKAGE_VERSION_COMPATIBLE FALSE)
endif()
if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION)
set(PACKAGE_VERSION_EXACT TRUE)
endif()
endif()
endif()
# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it:
if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "8" STREQUAL "")
return()
endif()
# check that the installed version has the same 32/64bit-ness as the one which is currently searching:
if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "8")
math(EXPR installedBits "8 * 8")
set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)")
set(PACKAGE_VERSION_UNSUITABLE TRUE)
endif()

View file

@ -0,0 +1,19 @@
#----------------------------------------------------------------
# Generated CMake target import file.
#----------------------------------------------------------------
# Commands may need to know the format version.
set(CMAKE_IMPORT_FILE_VERSION 1)
# Import target "SndFile::sndfile" for configuration ""
set_property(TARGET SndFile::sndfile APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG)
set_target_properties(SndFile::sndfile PROPERTIES
IMPORTED_LINK_INTERFACE_LANGUAGES_NOCONFIG "C"
IMPORTED_LOCATION_NOCONFIG "${_IMPORT_PREFIX}/lib/libsndfile.a"
)
list(APPEND _cmake_import_check_targets SndFile::sndfile )
list(APPEND _cmake_import_check_files_for_SndFile::sndfile "${_IMPORT_PREFIX}/lib/libsndfile.a" )
# Commands beyond this point should not need to know the version.
set(CMAKE_IMPORT_FILE_VERSION)

View file

@ -0,0 +1,107 @@
# Generated by CMake
if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.8)
message(FATAL_ERROR "CMake >= 2.8.12 required")
endif()
if(CMAKE_VERSION VERSION_LESS "2.8.12")
message(FATAL_ERROR "CMake >= 2.8.12 required")
endif()
cmake_policy(PUSH)
cmake_policy(VERSION 2.8.12...3.31)
#----------------------------------------------------------------
# Generated CMake target import file.
#----------------------------------------------------------------
# Commands may need to know the format version.
set(CMAKE_IMPORT_FILE_VERSION 1)
# Protect against multiple inclusion, which would fail when already imported targets are added once more.
set(_cmake_targets_defined "")
set(_cmake_targets_not_defined "")
set(_cmake_expected_targets "")
foreach(_cmake_expected_target IN ITEMS SndFile::sndfile)
list(APPEND _cmake_expected_targets "${_cmake_expected_target}")
if(TARGET "${_cmake_expected_target}")
list(APPEND _cmake_targets_defined "${_cmake_expected_target}")
else()
list(APPEND _cmake_targets_not_defined "${_cmake_expected_target}")
endif()
endforeach()
unset(_cmake_expected_target)
if(_cmake_targets_defined STREQUAL _cmake_expected_targets)
unset(_cmake_targets_defined)
unset(_cmake_targets_not_defined)
unset(_cmake_expected_targets)
unset(CMAKE_IMPORT_FILE_VERSION)
cmake_policy(POP)
return()
endif()
if(NOT _cmake_targets_defined STREQUAL "")
string(REPLACE ";" ", " _cmake_targets_defined_text "${_cmake_targets_defined}")
string(REPLACE ";" ", " _cmake_targets_not_defined_text "${_cmake_targets_not_defined}")
message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_cmake_targets_defined_text}\nTargets not yet defined: ${_cmake_targets_not_defined_text}\n")
endif()
unset(_cmake_targets_defined)
unset(_cmake_targets_not_defined)
unset(_cmake_expected_targets)
# Compute the installation prefix relative to this file.
get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH)
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
if(_IMPORT_PREFIX STREQUAL "/")
set(_IMPORT_PREFIX "")
endif()
# Create imported target SndFile::sndfile
add_library(SndFile::sndfile STATIC IMPORTED)
set_target_properties(SndFile::sndfile PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
INTERFACE_LINK_LIBRARIES "\$<LINK_ONLY:\$<\$<BOOL:1>:m>>;\$<LINK_ONLY:\$<\$<BOOL:ON>:Ogg::ogg>>;\$<LINK_ONLY:\$<\$<BOOL:ON>:Vorbis::vorbisenc>>;\$<LINK_ONLY:\$<\$<BOOL:ON>:FLAC::FLAC>>;\$<LINK_ONLY:\$<\$<AND:\$<BOOL:OFF>,\$<BOOL:ON>,\$<BOOL:OFF>>:Speex::Speex>>;\$<LINK_ONLY:\$<\$<BOOL:ON>:Opus::opus>>;\$<LINK_ONLY:\$<\$<BOOL:ON>:MPG123::libmpg123>>;\$<LINK_ONLY:\$<\$<BOOL:ON>:mp3lame::mp3lame>>"
)
# Load information for each installed configuration.
file(GLOB _cmake_config_files "${CMAKE_CURRENT_LIST_DIR}/SndFileTargets-*.cmake")
foreach(_cmake_config_file IN LISTS _cmake_config_files)
include("${_cmake_config_file}")
endforeach()
unset(_cmake_config_file)
unset(_cmake_config_files)
# Cleanup temporary variables.
set(_IMPORT_PREFIX)
# Loop over all imported files and verify that they actually exist
foreach(_cmake_target IN LISTS _cmake_import_check_targets)
if(CMAKE_VERSION VERSION_LESS "3.28"
OR NOT DEFINED _cmake_import_check_xcframework_for_${_cmake_target}
OR NOT IS_DIRECTORY "${_cmake_import_check_xcframework_for_${_cmake_target}}")
foreach(_cmake_file IN LISTS "_cmake_import_check_files_for_${_cmake_target}")
if(NOT EXISTS "${_cmake_file}")
message(FATAL_ERROR "The imported target \"${_cmake_target}\" references the file
\"${_cmake_file}\"
but this file does not exist. Possible reasons include:
* The file was deleted, renamed, or moved to another location.
* An install or uninstall procedure did not complete successfully.
* The installation package was faulty and contained
\"${CMAKE_CURRENT_LIST_FILE}\"
but not all the files it references.
")
endif()
endforeach()
endif()
unset(_cmake_file)
unset("_cmake_import_check_files_for_${_cmake_target}")
endforeach()
unset(_cmake_target)
unset(_cmake_import_check_targets)
# This file does not depend on other imported targets which have
# been exported from the same project but in a separate export set.
# Commands beyond this point should not need to know the version.
set(CMAKE_IMPORT_FILE_VERSION)
cmake_policy(POP)

View file

@ -0,0 +1,43 @@
####### Expanded from @PACKAGE_INIT@ by configure_package_config_file() #######
####### Any changes to this file will be overwritten by the next CMake run ####
####### The input file was ZMusicConfig.cmake.in ########
get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../" ABSOLUTE)
macro(set_and_check _var _file)
set(${_var} "${_file}")
if(NOT EXISTS "${_file}")
message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !")
endif()
endmacro()
macro(check_required_components _NAME)
foreach(comp ${${_NAME}_FIND_COMPONENTS})
if(NOT ${_NAME}_${comp}_FOUND)
if(${_NAME}_FIND_REQUIRED_${comp})
set(${_NAME}_FOUND FALSE)
endif()
endif()
endforeach()
endmacro()
####################################################################################
set(_supported_components "Full;Lite")
if(NOT ZMusic_FIND_COMPONENTS)
set(ZMusic_FIND_COMPONENTS "${_supported_components}")
endif()
include(CMakeFindDependencyMacro)
foreach(_module )
find_dependency(${_module})
endforeach()
foreach(_comp ${ZMusic_FIND_COMPONENTS})
include("${CMAKE_CURRENT_LIST_DIR}/ZMusic${_comp}Targets.cmake")
set(ZMusic_${_comp}_FOUND TRUE)
endforeach()
check_required_components(ZMusic)

View file

@ -0,0 +1,65 @@
# This is a basic version file for the Config-mode of find_package().
# It is used by write_basic_package_version_file() as input file for configure_file()
# to create a version-file which can be installed along a config.cmake file.
#
# The created file sets PACKAGE_VERSION_EXACT if the current version string and
# the requested version string are exactly the same and it sets
# PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version,
# but only if the requested major version is the same as the current one.
# The variable CVF_VERSION must be set before calling configure_file().
set(PACKAGE_VERSION "1.3.0")
if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION)
set(PACKAGE_VERSION_COMPATIBLE FALSE)
else()
if("1.3.0" MATCHES "^([0-9]+)\\.")
set(CVF_VERSION_MAJOR "${CMAKE_MATCH_1}")
if(NOT CVF_VERSION_MAJOR VERSION_EQUAL 0)
string(REGEX REPLACE "^0+" "" CVF_VERSION_MAJOR "${CVF_VERSION_MAJOR}")
endif()
else()
set(CVF_VERSION_MAJOR "1.3.0")
endif()
if(PACKAGE_FIND_VERSION_RANGE)
# both endpoints of the range must have the expected major version
math (EXPR CVF_VERSION_MAJOR_NEXT "${CVF_VERSION_MAJOR} + 1")
if (NOT PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR
OR ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND NOT PACKAGE_FIND_VERSION_MAX_MAJOR STREQUAL CVF_VERSION_MAJOR)
OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND NOT PACKAGE_FIND_VERSION_MAX VERSION_LESS_EQUAL CVF_VERSION_MAJOR_NEXT)))
set(PACKAGE_VERSION_COMPATIBLE FALSE)
elseif(PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR
AND ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_LESS_EQUAL PACKAGE_FIND_VERSION_MAX)
OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION_MAX)))
set(PACKAGE_VERSION_COMPATIBLE TRUE)
else()
set(PACKAGE_VERSION_COMPATIBLE FALSE)
endif()
else()
if(PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR)
set(PACKAGE_VERSION_COMPATIBLE TRUE)
else()
set(PACKAGE_VERSION_COMPATIBLE FALSE)
endif()
if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION)
set(PACKAGE_VERSION_EXACT TRUE)
endif()
endif()
endif()
# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it:
if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "8" STREQUAL "")
return()
endif()
# check that the installed version has the same 32/64bit-ness as the one which is currently searching:
if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "8")
math(EXPR installedBits "8 * 8")
set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)")
set(PACKAGE_VERSION_UNSUITABLE TRUE)
endif()

View file

@ -0,0 +1,19 @@
#----------------------------------------------------------------
# Generated CMake target import file for configuration "Release".
#----------------------------------------------------------------
# Commands may need to know the format version.
set(CMAKE_IMPORT_FILE_VERSION 1)
# Import target "ZMusic::zmusic" for configuration "Release"
set_property(TARGET ZMusic::zmusic APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
set_target_properties(ZMusic::zmusic PROPERTIES
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/libzmusic.so.1.3.0"
IMPORTED_SONAME_RELEASE "libzmusic.so.1"
)
list(APPEND _cmake_import_check_targets ZMusic::zmusic )
list(APPEND _cmake_import_check_files_for_ZMusic::zmusic "${_IMPORT_PREFIX}/lib/libzmusic.so.1.3.0" )
# Commands beyond this point should not need to know the version.
set(CMAKE_IMPORT_FILE_VERSION)

View file

@ -0,0 +1,107 @@
# Generated by CMake
if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.8)
message(FATAL_ERROR "CMake >= 2.8.3 required")
endif()
if(CMAKE_VERSION VERSION_LESS "2.8.3")
message(FATAL_ERROR "CMake >= 2.8.3 required")
endif()
cmake_policy(PUSH)
cmake_policy(VERSION 2.8.3...3.31)
#----------------------------------------------------------------
# Generated CMake target import file.
#----------------------------------------------------------------
# Commands may need to know the format version.
set(CMAKE_IMPORT_FILE_VERSION 1)
# Protect against multiple inclusion, which would fail when already imported targets are added once more.
set(_cmake_targets_defined "")
set(_cmake_targets_not_defined "")
set(_cmake_expected_targets "")
foreach(_cmake_expected_target IN ITEMS ZMusic::zmusic)
list(APPEND _cmake_expected_targets "${_cmake_expected_target}")
if(TARGET "${_cmake_expected_target}")
list(APPEND _cmake_targets_defined "${_cmake_expected_target}")
else()
list(APPEND _cmake_targets_not_defined "${_cmake_expected_target}")
endif()
endforeach()
unset(_cmake_expected_target)
if(_cmake_targets_defined STREQUAL _cmake_expected_targets)
unset(_cmake_targets_defined)
unset(_cmake_targets_not_defined)
unset(_cmake_expected_targets)
unset(CMAKE_IMPORT_FILE_VERSION)
cmake_policy(POP)
return()
endif()
if(NOT _cmake_targets_defined STREQUAL "")
string(REPLACE ";" ", " _cmake_targets_defined_text "${_cmake_targets_defined}")
string(REPLACE ";" ", " _cmake_targets_not_defined_text "${_cmake_targets_not_defined}")
message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_cmake_targets_defined_text}\nTargets not yet defined: ${_cmake_targets_not_defined_text}\n")
endif()
unset(_cmake_targets_defined)
unset(_cmake_targets_not_defined)
unset(_cmake_expected_targets)
# Compute the installation prefix relative to this file.
get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH)
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
if(_IMPORT_PREFIX STREQUAL "/")
set(_IMPORT_PREFIX "")
endif()
# Create imported target ZMusic::zmusic
add_library(ZMusic::zmusic SHARED IMPORTED)
set_target_properties(ZMusic::zmusic PROPERTIES
INTERFACE_COMPILE_DEFINITIONS "\$<\$<STREQUAL:\$<TARGET_PROPERTY:ZMusic::zmusic,TYPE>,STATIC_LIBRARY>:ZMUSIC_STATIC>"
INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
)
# Load information for each installed configuration.
file(GLOB _cmake_config_files "${CMAKE_CURRENT_LIST_DIR}/ZMusicFullTargets-*.cmake")
foreach(_cmake_config_file IN LISTS _cmake_config_files)
include("${_cmake_config_file}")
endforeach()
unset(_cmake_config_file)
unset(_cmake_config_files)
# Cleanup temporary variables.
set(_IMPORT_PREFIX)
# Loop over all imported files and verify that they actually exist
foreach(_cmake_target IN LISTS _cmake_import_check_targets)
if(CMAKE_VERSION VERSION_LESS "3.28"
OR NOT DEFINED _cmake_import_check_xcframework_for_${_cmake_target}
OR NOT IS_DIRECTORY "${_cmake_import_check_xcframework_for_${_cmake_target}}")
foreach(_cmake_file IN LISTS "_cmake_import_check_files_for_${_cmake_target}")
if(NOT EXISTS "${_cmake_file}")
message(FATAL_ERROR "The imported target \"${_cmake_target}\" references the file
\"${_cmake_file}\"
but this file does not exist. Possible reasons include:
* The file was deleted, renamed, or moved to another location.
* An install or uninstall procedure did not complete successfully.
* The installation package was faulty and contained
\"${CMAKE_CURRENT_LIST_FILE}\"
but not all the files it references.
")
endif()
endforeach()
endif()
unset(_cmake_file)
unset("_cmake_import_check_files_for_${_cmake_target}")
endforeach()
unset(_cmake_target)
unset(_cmake_import_check_targets)
# This file does not depend on other imported targets which have
# been exported from the same project but in a separate export set.
# Commands beyond this point should not need to know the version.
set(CMAKE_IMPORT_FILE_VERSION)
cmake_policy(POP)

View file

@ -0,0 +1,19 @@
#----------------------------------------------------------------
# Generated CMake target import file for configuration "Release".
#----------------------------------------------------------------
# Commands may need to know the format version.
set(CMAKE_IMPORT_FILE_VERSION 1)
# Import target "ZMusic::zmusiclite" for configuration "Release"
set_property(TARGET ZMusic::zmusiclite APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
set_target_properties(ZMusic::zmusiclite PROPERTIES
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/libzmusiclite.so.1.3.0"
IMPORTED_SONAME_RELEASE "libzmusiclite.so.1"
)
list(APPEND _cmake_import_check_targets ZMusic::zmusiclite )
list(APPEND _cmake_import_check_files_for_ZMusic::zmusiclite "${_IMPORT_PREFIX}/lib/libzmusiclite.so.1.3.0" )
# Commands beyond this point should not need to know the version.
set(CMAKE_IMPORT_FILE_VERSION)

View file

@ -0,0 +1,107 @@
# Generated by CMake
if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.8)
message(FATAL_ERROR "CMake >= 2.8.3 required")
endif()
if(CMAKE_VERSION VERSION_LESS "2.8.3")
message(FATAL_ERROR "CMake >= 2.8.3 required")
endif()
cmake_policy(PUSH)
cmake_policy(VERSION 2.8.3...3.31)
#----------------------------------------------------------------
# Generated CMake target import file.
#----------------------------------------------------------------
# Commands may need to know the format version.
set(CMAKE_IMPORT_FILE_VERSION 1)
# Protect against multiple inclusion, which would fail when already imported targets are added once more.
set(_cmake_targets_defined "")
set(_cmake_targets_not_defined "")
set(_cmake_expected_targets "")
foreach(_cmake_expected_target IN ITEMS ZMusic::zmusiclite)
list(APPEND _cmake_expected_targets "${_cmake_expected_target}")
if(TARGET "${_cmake_expected_target}")
list(APPEND _cmake_targets_defined "${_cmake_expected_target}")
else()
list(APPEND _cmake_targets_not_defined "${_cmake_expected_target}")
endif()
endforeach()
unset(_cmake_expected_target)
if(_cmake_targets_defined STREQUAL _cmake_expected_targets)
unset(_cmake_targets_defined)
unset(_cmake_targets_not_defined)
unset(_cmake_expected_targets)
unset(CMAKE_IMPORT_FILE_VERSION)
cmake_policy(POP)
return()
endif()
if(NOT _cmake_targets_defined STREQUAL "")
string(REPLACE ";" ", " _cmake_targets_defined_text "${_cmake_targets_defined}")
string(REPLACE ";" ", " _cmake_targets_not_defined_text "${_cmake_targets_not_defined}")
message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_cmake_targets_defined_text}\nTargets not yet defined: ${_cmake_targets_not_defined_text}\n")
endif()
unset(_cmake_targets_defined)
unset(_cmake_targets_not_defined)
unset(_cmake_expected_targets)
# Compute the installation prefix relative to this file.
get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH)
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
if(_IMPORT_PREFIX STREQUAL "/")
set(_IMPORT_PREFIX "")
endif()
# Create imported target ZMusic::zmusiclite
add_library(ZMusic::zmusiclite SHARED IMPORTED)
set_target_properties(ZMusic::zmusiclite PROPERTIES
INTERFACE_COMPILE_DEFINITIONS "\$<\$<STREQUAL:\$<TARGET_PROPERTY:ZMusic::zmusiclite,TYPE>,STATIC_LIBRARY>:ZMUSIC_STATIC>"
INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
)
# Load information for each installed configuration.
file(GLOB _cmake_config_files "${CMAKE_CURRENT_LIST_DIR}/ZMusicLiteTargets-*.cmake")
foreach(_cmake_config_file IN LISTS _cmake_config_files)
include("${_cmake_config_file}")
endforeach()
unset(_cmake_config_file)
unset(_cmake_config_files)
# Cleanup temporary variables.
set(_IMPORT_PREFIX)
# Loop over all imported files and verify that they actually exist
foreach(_cmake_target IN LISTS _cmake_import_check_targets)
if(CMAKE_VERSION VERSION_LESS "3.28"
OR NOT DEFINED _cmake_import_check_xcframework_for_${_cmake_target}
OR NOT IS_DIRECTORY "${_cmake_import_check_xcframework_for_${_cmake_target}}")
foreach(_cmake_file IN LISTS "_cmake_import_check_files_for_${_cmake_target}")
if(NOT EXISTS "${_cmake_file}")
message(FATAL_ERROR "The imported target \"${_cmake_target}\" references the file
\"${_cmake_file}\"
but this file does not exist. Possible reasons include:
* The file was deleted, renamed, or moved to another location.
* An install or uninstall procedure did not complete successfully.
* The installation package was faulty and contained
\"${CMAKE_CURRENT_LIST_FILE}\"
but not all the files it references.
")
endif()
endforeach()
endif()
unset(_cmake_file)
unset("_cmake_import_check_files_for_${_cmake_target}")
endforeach()
unset(_cmake_target)
unset(_cmake_import_check_targets)
# This file does not depend on other imported targets which have
# been exported from the same project but in a separate export set.
# Commands beyond this point should not need to know the version.
set(CMAKE_IMPORT_FILE_VERSION)
cmake_policy(POP)

View file

@ -0,0 +1,16 @@
# entries grouped with CMake are expanded by CMake
# ${foo} entries are left alone by CMake and much
# later are used by pkg-config.
prefix=/app
exec_prefix=${prefix}
lib_suffix=
libdir=${exec_prefix}/lib${lib_suffix}
includedir=${prefix}/include
Name: Game_Music_Emu
Description: A video game emulation library for music.
URL: https://bitbucket.org/mpyne/game-music-emu/wiki/Home
Version: 0.6.4
Cflags: -I${includedir}
Libs: -L${libdir} -lgme
Libs.private: -lstdc++ -lz

View file

@ -0,0 +1,13 @@
prefix=/app
exec_prefix=${prefix}
libdir=/app/lib
includedir=/app/include
Name: sndfile
Description: A library for reading and writing audio files
Requires:
Requires.private: flac ogg vorbis vorbisenc opus libmpg123
Version: 1.2.2
Libs: -L${libdir} -lsndfile
Libs.private: -lmp3lame
Cflags: -I${includedir}

View file

@ -0,0 +1,106 @@
DMXOPL3
==================================================================
https://github.com/sneakernets/DMXOPL
==================================================================
New and improved DMX GENMIDI for Doom and sourceports, taking full advantage of
the OPL3 waveforms. This takes things up a notch in terms of timbre.
# Summary
This is a GENMIDI patch for DMX for OPL3 FM synthesis. This patch aims to remedy
the "weak" default instruments to better match the Roland Sound Canvas, most
notably the SC-55 and SC-88. Recommended minimum setup for no note-cuts is
ZDoom 2.8.1 with DOSBOX OPL3 emulator core, with 6 chips emulated.
======FAQ======
# Why OPL3 only?
OPL3 has four additional waveforms - Alternating Sine, Camel Sine, Square, and
Logarithmic Square (Sawtooth). The most interesting of these is the Square wave,
for obvious reasons! This will benefit percussion instruments immensely.
# What did you use for this project?
Hex Editors, OPL3 Bank Editor, Fraggle's Python scripts, Adlib Tracker II,
Edlib, ADLMidi. I also used the following keyboards and devices:
- Yamaha PSR-3 for basic voice ideas
- Yamaha PSS-50 for layered voice ideas
- Yamaha DX-7
- Commodore 64 Music Module
- VRC7 and related chips
- Sound Blaster 16
- Yamaha PCI cards
- Sounds from various SEGA MegaDrive games
=======WOPL FAQ=======
# What's the difference between the WOPL version and the DMX version?
The main difference is with a few instruments that had to be tweaked to work
with DMX. Most of these changes are negligible for General MIDI stuff. To hear
what I intended DMXOPL to sound like in Doom, you'll have to wait for Eternity
Engine's ADLMIDI support to be finalized.
# Any plans for GS/XG support?
Yes. This will take considerable time, and voices will be added as I come across
them in my MIDI files. You can check the progress on those through the XG and GS
branches that I will make (or have already made). As I think the GM set is solid
enough now, save for just a handful of instruments, I can start work on the
other banks.
# Will the WOPL version be usable on any other FM chips?
Depends on the chip, but more than likely the answer is no. YMF262 (and the OPL*
family for that matter) operate differently than most of the other FM chips, and
wouldn't likely transfer over to DX-7 or other instruments without considerable
work, if they would work at all.
# Is the best way to listen to this really through an emulator?
Yes, unfortunately. Unless someone makes an FM chip that can handle 128+
channels, this is likely never to change. If you're using this in your music
projects and you still want to use the real thing, I recommend recording one
track at a time and throwing the result in your favorite DAW - just be sure to
put a highpass filter set to a really low value (I recommend 5 Hz) to get rid
of the offset garbage, lest your mix splatter like crazy.
======Credits======
* Wohlstand, for the OPL3BankEditor
* Bisqwuit, for ADLMidi
* Fraggle, for Chocolate Doom and GENMIDI research, as well as the Python scripts
* SubZ3ro, for AdLib Tracker II
* Esselfortium, for the encouragement and support
* Jimmy, who will include this in the next Adventures of Square release
* The Fat Man, who created the famous 2-op and 4-op patches everyone knows
* Diode Milliampere, who made FM synth popular again
* Patchouli, for keeping my spirits up
* Graf Zahl, for continuing ZDoom as GZDoom
* Randi, for implementing the OPL Emulation in ZDoom
* Fisk, for miscellaneous feedback and MIDIs to test
* Stewboy, for the Ancient Aliens MIDIs to test
* Xaser, who said this patch passes the "Angry Scientist test"
* Minigunner, just because
* Altazimuth, who claims it'll be in Eternity someday (this is now true)
* MTrop
* Quasar, for Eternity Engine
* Glaice, for patch advice
* BlastFrog, for patch advice
* Vogons Forums, for the OPL-3 Research and tools
* AtariAge, for C64 Sound module preset banks
* NintendoAge
* John Chowning, the father of FM synthesis. I hope he can hear this someday.
## Extra Thanks to:
* Doomworld Forums and the respective IRC/DISCORD channels
* The 4th Modulator DISCORD channels
* Giest118, who installed Doom again to listen to this
* Nuke.YKT, for testing this in Raptor, and for the Nuked OPL core
* kode54, who added this to Cog and FB2K, thank you!
* Patch93, who contributed various patches
* OlPainless, who contributed various patches
* Papiezak, who contributed various of patches
* Infurnus, for support
* Leileilol, for support
* MaliceX, for support
* Kuschelmonster, for support
* Anyone who makes music with this thing!
YMF262 forever.

View file

@ -0,0 +1 @@
https://github.com/Wohlstand/OPN2BankEditor

View file

@ -0,0 +1,15 @@
Bank was imported by a hacky way from the Tomsoft's SegaMusic program
by TommyXie (Xie Rong Chun):
- the dummy MIDI file was created that contains all 128 instruments in GM order
- the Sega emulator playable BIN file was generated
- the GYM dump was generated from the playback of that dummy instrument
- OPN2 Bank Editor was used to scan GYM file for instruments and import all of
them.
The work woth done by Jean-Pierre Cimalando:
https://github.com/Wohlstand/OPN2BankEditor/issues/44
Then, the bank was tuned by Wohlstand:
- Corrected note offsets to align octaves of all instruments
- Merged with xg.wopn to provide the set of percussions.

View file

@ -0,0 +1,7 @@
A bank, created from hardcoded instruments, extracted from "fmmidi" project
http://unhaut.x10host.com/fmmidi/
It's license:
This program is released under the "three clauses" BSD license

View file

@ -0,0 +1,8 @@
This bank was created by Wohlstand from imported instruments from the standard
set of insruments pre-included with GEMS program which was a official Sega
music creation system. Original set was not GM. Therefore, imported instruments
are was organized to provide a proper GM set.
Some instruments was a bit modified, some melodic instruments and percussions
are was taken from Wohlstand's xg.wopn bank.

View file

@ -0,0 +1,25 @@
=============
https://github.com/sneakernets/DMXOPN2
https://github.com/papiezak/DMXOPN2
=============
== DMXOPN2 ==
No-nonsense patches for YM2612.
== About ==
After much work on my DMXOPL project, I noticed that a lot of presets that
I created were not compatible with the YM2612, which was the chip I started
with, but quickly dropped. In response, I decided to rectify this by recreating
the best patches from DMXOPL to OPN2 format. Don't expect miracles, as this is
more of a learning experience so I can start working on expanding my FM synth
knowledge.
I chose the name "DMX" not because it works with DMX, but that it will
(hopefully) be of the same quality as the DMXOPL patch. Yeah, not very
descriptive, but names aren't everything.
Watch this space.

View file

@ -0,0 +1,14 @@
This bank (gm.wopn and xg.wopn) is made by me. I have imported some instruments from various
VGM files, ported from OPL3 banks, or remixed them.
This bank can be freely used, modified, shared with any purposes.
License for this bank - MIT
To edit this bank and other banks in WOPN format, you can use this editor
which I created for that: https://github.com/Wohlstand/OPN2BankEditor
==============================================================================
Vitaliy Novichkov "Wohlstand", 2017-2018

View file

@ -0,0 +1 @@
libfluidsynth.so.3.3.6

View file

@ -0,0 +1 @@
libinstpatch-1.0.so.2

View file

@ -0,0 +1 @@
libinstpatch-1.0.so.2.2.1

View file

@ -0,0 +1 @@
libzmusic.so.1

View file

@ -0,0 +1 @@
libzmusic.so.1.3.0

View file

@ -0,0 +1 @@
libzmusiclite.so.1

Some files were not shown because too many files have changed in this diff Show more