New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GPL v2-only remnants in VFP code #1279

Open
neobrain opened this Issue Dec 12, 2015 · 6 comments

Comments

Projects
None yet
5 participants
@neobrain
Member

neobrain commented Dec 12, 2015

* The following code is derivative from Linux Android kernel vfp
says that the code in that file is subject to the GPL v2, which clearly is not compatible with Citra code being intended to be GPL v2+.

@neobrain

This comment has been minimized.

Member

neobrain commented Dec 17, 2015

Hey guys, little reminder to have this one fixed, please :p

@yuriks

This comment has been minimized.

Member

yuriks commented Dec 17, 2015

I'm guessing this will have to wait until we have a new ARM core to
replace dyncom (e.g. Lioncash's new core) because it's probably not a
profitable use of time to rewrite the crappy Skyeye VFP code.

Anyway, this is not urgent since it doesn't affect the dual-licensed
status of the Citra code itself, it just means that any binaries
distributed will have to be covered under the GPLv2.

@neobrain

This comment has been minimized.

Member

neobrain commented Dec 17, 2015

it just means that any binaries distributed will have to be covered under the GPLv3.

For reference, you probably meant to say GPLv2, since that's what this issue is about: Part of our source code is GPLv2-only.

@MerryMage

This comment has been minimized.

Member

MerryMage commented Nov 9, 2017

A quick audit of files under ./src/:

Trivial issues

Files without license header (clearly some of these probably intentionally don't have one, including all files for completeness)

audio_core/CMakeLists.txt
citra/CMakeLists.txt
citra_qt/CMakeLists.txt
CMakeLists.txt
common/CMakeLists.txt
core/CMakeLists.txt
input_common/CMakeLists.txt
network/CMakeLists.txt
tests/CMakeLists.txt
video_core/CMakeLists.txt
web_service/CMakeLists.txt

citra_qt/configuration/configure.ui
citra_qt/configuration/configure_audio.ui
citra_qt/configuration/configure_debug.ui
citra_qt/configuration/configure_general.ui
citra_qt/configuration/configure_graphics.ui
citra_qt/configuration/configure_input.ui
citra_qt/configuration/configure_system.ui
citra_qt/configuration/configure_web.ui
citra_qt/debugger/registers.ui
citra_qt/hotkeys.ui
citra_qt/main.ui

citra_qt/Info.plist

tests/core/arm/dyncom/vfp_vadd_f32.inc

Files without license header that probably should have one added

citra/citra.rc
citra/resource.h
citra_qt/bootmanager.cpp
citra_qt/citra-qt.rc

video_core/vertex_loader.cpp
video_core/vertex_loader.h

GPLv2 only

video_core/debug_utils/debug_utils.cpp
video_core/debug_utils/debug_utils.h

Possibly Problematic

From Dolphin, GPLv2

common/code_block.h

From Linux, GPLv2

core/arm/skyeye_common/vfp/vfp.cpp
core/arm/skyeye_common/vfp/vfp.h
core/arm/skyeye_common/vfp/vfp_helper.h

From SoftFloat, custom license

core/arm/skyeye_common/vfp/vfpdouble.cpp
core/arm/skyeye_common/vfp/vfpsingle.cpp

Non-Citra GPLv2+ compatible files (non-issue, here for informational purposes)

Public domain

common/alignment.h
common/bit_set.h

From Dolphin, GPLv2+

common/chunk_file.h
common/swap.h
core/gdbstub/gdbstub.cpp
core/gdbstub/gdbstub.h

From Gekko, GPLv2+

common/common_types.h
common/platform.h

From dyncom, GPLv2+

core/arm/dyncom/arm_dyncom_run.h
core/arm/dyncom/arm_dyncom_thumb.h
core/arm/dyncom/arm_dyncom_trans.cpp (no license header)
core/arm/dyncom/arm_dyncom_trans.h (no license header)
core/arm/skyeye_common/arm_regformat.h (no license header)
core/arm/skyeye_common/vfp/asm_vfp.h (no license header)

From ARMulator, GPLv2+

core/arm/skyeye_common/armstate.h
core/arm/skyeye_common/armsupp.cpp
@lioncash

This comment has been minimized.

Member

lioncash commented Nov 9, 2017

From Dolphin, GPLv2
common/code_block.h

As Dolphin is now GPLv2+, this likely isn't an issue (though the header license should definitely be changed).

@yuriks

This comment has been minimized.

Member

yuriks commented Dec 10, 2017

common/code_block.h

unused (it was from our old x86 emitter which we removed in favor of xbyak), so it can just be deleted.

core/arm/skyeye_common/vfp/vfpdouble.cpp
core/arm/skyeye_common/vfp/vfpsingle.cpp

First license header is GPLv2+:

    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.

Second header is a permissive license that appears to only have a clause asking for the notice to be kept in the source code, which seems roughly equivalent to 3-clause BSD. So I think this one's also fine.

core/arm/skyeye_common/vfp/vfp.cpp
core/arm/skyeye_common/vfp/vfp.h

Have the same main license header as vfpdouble/vfpsingle, but without any sub-license, so should also be GPLv2+.

core/arm/skyeye_common/vfp/vfp_helper.h

This one has the GPLv2+ header on top, but then a GPLv2-only header below that. However, the copyright date on that one is (C) 2004 ARM Limited, even though the original header above is (C) 2003 Skyeye Develop Group. That's a weird discrepancy, and may indicate that the file was started in Skyeye and then got some stuff added to it from the kernel. You could also read that the Skyeye code was merely based on the Kernel code.

So this last one seems like the only problematic one. About half of it seems to be defines and trivial macros though. For reference this is the Linux file it came from: vfp.h

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment