diff --git a/src/platform/python/CMakeLists.txt b/src/platform/python/CMakeLists.txt index cd30b551f..b4ccc216f 100644 --- a/src/platform/python/CMakeLists.txt +++ b/src/platform/python/CMakeLists.txt @@ -8,13 +8,21 @@ foreach(COMPILE_DEF IN LISTS COMPILE_DEFINITIONS) list(APPEND PY_COMPILE_DEFS -D${COMPILE_DEF}) endforeach() +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/setup.py.in ${CMAKE_CURRENT_BINARY_DIR}/setup.py) + add_custom_command(OUTPUT _builder.h COMMAND ${CMAKE_C_COMPILER} ${PY_COMPILE_DEFS} ${PY_INCLUDE_DIRS} -fno-inline -E -P -c ${CMAKE_CURRENT_SOURCE_DIR}/_builder.h -o _builder.h DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/_builder.h) add_custom_target(_builder.h ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/_builder.h) -add_custom_command(OUTPUT ${BINARY_NAME}/_pylib.so - COMMAND python ${CMAKE_CURRENT_SOURCE_DIR}/_builder.py ${PY_COMPILE_DEFS} ${PY_INCLUDE_DIRS} - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/_builder.py - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/_builder.h) -add_custom_target(_pylib.so ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${BINARY_NAME}/_pylib.so) \ No newline at end of file +add_custom_target(${BINARY_NAME}-pylib COMMAND python ${CMAKE_CURRENT_SOURCE_DIR}/_builder.py ${PY_COMPILE_DEFS} ${PY_INCLUDE_DIRS} + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/_builder.py + DEPENDS _builder.h) + +add_custom_command(OUTPUT ${BINARY_NAME}/__init__.py + COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/${BINARY_NAME} ${CMAKE_CURRENT_BINARY_DIR}/${BINARY_NAME} + COMMAND python ${CMAKE_CURRENT_BINARY_DIR}/setup.py build + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/setup.py + DEPENDS ${BINARY_NAME}-pylib) + +add_custom_target(${BINARY_NAME}-py ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${BINARY_NAME}/__init__.py) diff --git a/src/platform/python/__init__.py b/src/platform/python/mgba/__init__.py similarity index 100% rename from src/platform/python/__init__.py rename to src/platform/python/mgba/__init__.py diff --git a/src/platform/python/arm.py b/src/platform/python/mgba/arm.py similarity index 100% rename from src/platform/python/arm.py rename to src/platform/python/mgba/arm.py diff --git a/src/platform/python/mCore.py b/src/platform/python/mgba/core.py similarity index 95% rename from src/platform/python/mCore.py rename to src/platform/python/mgba/core.py index 2339dd91a..88d08bc09 100644 --- a/src/platform/python/mCore.py +++ b/src/platform/python/mgba/core.py @@ -4,7 +4,7 @@ def find(path): core = lib.mCoreFind(path.encode('UTF-8')) if core == ffi.NULL: return None - return mCore(core) + return Core(core) def loadPath(path): core = find(path) @@ -12,7 +12,7 @@ def loadPath(path): return None return core -class mCore: +class Core: def __init__(self, native): self._core = ffi.gc(native, self._deinit) success = bool(self._core.init(self._core)) @@ -81,9 +81,9 @@ class mCore: if hasattr(lib, 'PLATFORM_GBA'): from .gba import GBA from .arm import ARMCore - mCore.PLATFORM_GBA = lib.PLATFORM_GBA + Core.PLATFORM_GBA = lib.PLATFORM_GBA if hasattr(lib, 'PLATFORM_GB'): from .gb import GB from .lr35902 import LR35902Core - mCore.PLATFORM_GB = lib.PLATFORM_GB \ No newline at end of file + Core.PLATFORM_GB = lib.PLATFORM_GB \ No newline at end of file diff --git a/src/platform/python/gb.py b/src/platform/python/mgba/gb.py similarity index 100% rename from src/platform/python/gb.py rename to src/platform/python/mgba/gb.py diff --git a/src/platform/python/gba.py b/src/platform/python/mgba/gba.py similarity index 100% rename from src/platform/python/gba.py rename to src/platform/python/mgba/gba.py diff --git a/src/platform/python/lr35902.py b/src/platform/python/mgba/lr35902.py similarity index 100% rename from src/platform/python/lr35902.py rename to src/platform/python/mgba/lr35902.py diff --git a/src/platform/python/setup.py.in b/src/platform/python/setup.py.in new file mode 100644 index 000000000..857c91fd7 --- /dev/null +++ b/src/platform/python/setup.py.in @@ -0,0 +1,18 @@ +from setuptools import setup + +classifiers = [ + "Programming Language :: Python :: 2", +# "Programming Language :: Python :: 3", + "License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)" +] + + +setup(name="${BINARY_NAME}", + version="${VERSION_STRING}", + author="Jeffrey Pfau", + author_email="jeffrey@endrift.com", + url="http://github.com/mgba-emu/mgba/", + packages=["mgba"], + license="MPL 2.0", + classifiers=classifiers + ) \ No newline at end of file