Explorar el Código

Add Qt LGPL v3 compliance documentation and notices

Co-authored-by: djeada <[email protected]>
copilot-swe-agent[bot] hace 1 mes
padre
commit
0216b1a175
Se han modificado 4 ficheros con 164 adiciones y 0 borrados
  1. 1 0
      .github/workflows/windows.yml
  2. 8 0
      README.md
  3. 61 0
      THIRD_PARTY_LICENSES.md
  4. 94 0
      ui/qml/SettingsPanel.qml

+ 1 - 0
.github/workflows/windows.yml

@@ -122,6 +122,7 @@ jobs:
       - name: Build
         run: cmake --build build
 
+      # Deploy Qt DLLs (dynamic linking ensures LGPL v3 compliance)
       - name: Deploy Qt
         shell: pwsh
         run: |

+ 8 - 0
README.md

@@ -434,6 +434,14 @@ Quick start for contributors:
 
 MIT License - see LICENSE file for details.
 
+### Third-Party Software Licenses
+
+This game uses the **Qt framework** (https://www.qt.io), which is licensed under the **GNU Lesser General Public License v3 (LGPL v3)**.
+
+- Qt is dynamically linked in this application, allowing you to replace the Qt libraries with your own versions.
+- You may obtain a copy of the LGPL v3 license at https://www.gnu.org/licenses/lgpl-3.0.html
+- Qt source code is available at https://www.qt.io/download-open-source
+
 ## Acknowledgments
 
 Built with modern C++20, Qt 6, and OpenGL 3.3 Core. Special thanks to the open-source community for excellent documentation and tools.

+ 61 - 0
THIRD_PARTY_LICENSES.md

@@ -0,0 +1,61 @@
+# Third-Party Software Licenses
+
+This document lists the licenses of third-party software used in Standard of Iron.
+
+## Qt Framework
+
+**License:** GNU Lesser General Public License v3 (LGPL v3)  
+**Website:** https://www.qt.io  
+**License Text:** https://www.gnu.org/licenses/lgpl-3.0.html  
+**Source Code:** https://www.qt.io/download-open-source
+
+### LGPL v3 Compliance
+
+Standard of Iron complies with the LGPL v3 requirements for using Qt:
+
+1. **Dynamic Linking**: Qt is dynamically linked to the application, not statically linked.
+   - On Windows: Qt DLLs are deployed alongside the executable using `windeployqt`
+   - On Linux: Qt shared libraries (.so) are linked dynamically
+   - On macOS: Qt frameworks are linked dynamically
+
+2. **No Modifications**: We do not modify Qt source code. If modifications were made, they would be released under LGPL v3.
+
+3. **License Notice**: LGPL v3 attribution is provided in:
+   - This document (THIRD_PARTY_LICENSES.md)
+   - README.md (License section)
+   - In-game Settings panel (About section)
+
+4. **User Re-linking**: Users can replace the Qt libraries with their own versions because Qt is dynamically linked. This is automatic with dynamic linking - users simply replace the Qt DLLs/shared libraries in the application directory.
+
+### Qt Components Used
+
+- QtCore
+- QtGui
+- QtWidgets
+- QtOpenGL
+- QtQuick
+- QtQml
+- QtQuickControls2
+- QtSql
+- QtMultimedia
+
+### Verification
+
+To verify dynamic linking:
+
+**Windows:**
+```powershell
+dumpbin /DEPENDENTS standard_of_iron.exe | findstr Qt
+```
+
+**Linux:**
+```bash
+ldd standard_of_iron | grep Qt
+```
+
+**macOS:**
+```bash
+otool -L standard_of_iron | grep Qt
+```
+
+All commands should show Qt libraries as external dependencies, confirming dynamic linking.

+ 94 - 0
ui/qml/SettingsPanel.qml

@@ -320,6 +320,100 @@ Item {
 
             }
 
+            Rectangle {
+                Layout.fillWidth: true
+                Layout.preferredHeight: 1
+                color: Theme.border
+            }
+
+            ColumnLayout {
+                Layout.fillWidth: true
+                spacing: Theme.spacingMedium
+
+                Label {
+                    text: qsTr("About")
+                    color: Theme.textMain
+                    font.pointSize: Theme.fontSizeLarge
+                    font.bold: true
+                }
+
+                Rectangle {
+                    Layout.fillWidth: true
+                    Layout.preferredHeight: 2
+                    color: Theme.border
+                    opacity: 0.5
+                }
+
+                ColumnLayout {
+                    Layout.fillWidth: true
+                    spacing: Theme.spacingSmall
+
+                    Label {
+                        text: qsTr("Standard of Iron - RTS Game")
+                        color: Theme.textMain
+                        font.pointSize: Theme.fontSizeMedium
+                        font.bold: true
+                    }
+
+                    Label {
+                        text: qsTr("Version 1.0.0")
+                        color: Theme.textSub
+                        font.pointSize: Theme.fontSizeSmall
+                    }
+
+                    Rectangle {
+                        Layout.fillWidth: true
+                        Layout.preferredHeight: 1
+                        color: Theme.border
+                        opacity: 0.3
+                        Layout.topMargin: Theme.spacingSmall
+                        Layout.bottomMargin: Theme.spacingSmall
+                    }
+
+                    Label {
+                        text: qsTr("Third-Party Software")
+                        color: Theme.textMain
+                        font.pointSize: Theme.fontSizeMedium
+                        font.bold: true
+                    }
+
+                    Label {
+                        text: qsTr("This game uses the Qt framework, licensed under the GNU Lesser General Public License v3 (LGPL v3).")
+                        color: Theme.textSub
+                        font.pointSize: Theme.fontSizeSmall
+                        wrapMode: Text.WordWrap
+                        Layout.fillWidth: true
+                    }
+
+                    Label {
+                        text: qsTr("Qt is dynamically linked, allowing you to replace Qt libraries with your own versions.")
+                        color: Theme.textSub
+                        font.pointSize: Theme.fontSizeSmall
+                        wrapMode: Text.WordWrap
+                        Layout.fillWidth: true
+                    }
+
+                    Label {
+                        text: "<a href='https://www.gnu.org/licenses/lgpl-3.0.html'>LGPL v3 License</a> | <a href='https://www.qt.io'>Qt Website</a>"
+                        color: Theme.textSub
+                        font.pointSize: Theme.fontSizeSmall
+                        textFormat: Text.RichText
+                        onLinkActivated: function(link) {
+                            Qt.openUrlExternally(link);
+                        }
+
+                        MouseArea {
+                            anchors.fill: parent
+                            acceptedButtons: Qt.NoButton
+                            cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor
+                        }
+
+                    }
+
+                }
+
+            }
+
             Item {
                 Layout.fillHeight: true
             }