Update build.py to properly build and copy libraries for Unity and Unreal (#120)
This commit is contained in:
parent
ccf04d21f5
commit
c4201806cf
3 changed files with 76 additions and 22 deletions
|
@ -57,11 +57,11 @@ This is a text adventure "game" that inits/deinits the connection to Discord, an
|
||||||
|
|
||||||
## Sample: button-clicker
|
## Sample: button-clicker
|
||||||
|
|
||||||
This is a sample [Unity](https://unity3d.com/) project that wraps a DLL version of the library, and sends presence updates when you click on a button.
|
This is a sample [Unity](https://unity3d.com/) project that wraps a DLL version of the library, and sends presence updates when you click on a button. Run `python build.py unity` in the root directory to build the correct library files and place them in their respective folders.
|
||||||
|
|
||||||
## Sample: unrealstatus
|
## Sample: unrealstatus
|
||||||
|
|
||||||
This is a sample [Unreal](https://www.unrealengine.com) project that wraps the DLL version of the library with an Unreal plugin, exposes a blueprint class for interacting with it, and uses that to make a very simple UI.
|
This is a sample [Unreal](https://www.unrealengine.com) project that wraps the DLL version of the library with an Unreal plugin, exposes a blueprint class for interacting with it, and uses that to make a very simple UI. Run `python build.py unreal` in the root directory to build the correct library files and place them in their respective folders.
|
||||||
|
|
||||||
## Wrappers and Implementations
|
## Wrappers and Implementations
|
||||||
|
|
||||||
|
|
92
build.py
92
build.py
|
@ -62,19 +62,13 @@ def cli(ctx, clean):
|
||||||
if ctx.invoked_subcommand is None:
|
if ctx.invoked_subcommand is None:
|
||||||
ctx.invoke(libs, clean=clean)
|
ctx.invoke(libs, clean=clean)
|
||||||
if IS_BUILD_MACHINE:
|
if IS_BUILD_MACHINE:
|
||||||
ctx.invoke(sign)
|
ctx.invoke(sign)
|
||||||
ctx.invoke(archive)
|
ctx.invoke(archive)
|
||||||
|
|
||||||
|
|
||||||
@cli.command()
|
|
||||||
def unity():
|
|
||||||
""" todo: build unity project """
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
@cli.command()
|
@cli.command()
|
||||||
@click.pass_context
|
@click.pass_context
|
||||||
def for_unity(ctx):
|
def unity(ctx):
|
||||||
""" build just dynamic libs for use in unity project """
|
""" build just dynamic libs for use in unity project """
|
||||||
ctx.invoke(
|
ctx.invoke(
|
||||||
libs,
|
libs,
|
||||||
|
@ -84,6 +78,44 @@ def for_unity(ctx):
|
||||||
skip_formatter=True,
|
skip_formatter=True,
|
||||||
just_release=True
|
just_release=True
|
||||||
)
|
)
|
||||||
|
BUILDS = []
|
||||||
|
|
||||||
|
click.echo('--- Copying libs and header into unity example')
|
||||||
|
UNITY_PROJECT_PATH = os.path.join(SCRIPT_PATH, 'examples', 'button-clicker', 'Assets', 'Plugins')
|
||||||
|
|
||||||
|
if sys.platform.startswith('win'):
|
||||||
|
LIBRARY_NAME = 'discord-rpc.dll'
|
||||||
|
BUILD_64_BASE_PATH = os.path.join(SCRIPT_PATH, 'builds', 'win64-dynamic', 'src', 'Release')
|
||||||
|
UNITY_64_DLL_PATH = os.path.join(UNITY_PROJECT_PATH, 'x86_64')
|
||||||
|
BUILDS.append({BUILD_64_BASE_PATH: UNITY_64_DLL_PATH})
|
||||||
|
|
||||||
|
BUILD_32_BASE_PATH = os.path.join(SCRIPT_PATH, 'builds', 'win32-dynamic', 'src', 'Release')
|
||||||
|
UNITY_32_DLL_PATH = os.path.join(UNITY_PROJECT_PATH, 'x86')
|
||||||
|
BUILDS.append({BUILD_32_BASE_PATH: UNITY_32_DLL_PATH})
|
||||||
|
|
||||||
|
elif sys.platform == 'darwin':
|
||||||
|
LIBRARY_NAME = 'discord-rpc.bundle'
|
||||||
|
BUILD_BASE_PATH = os.path.join(SCRIPT_PATH, 'builds', 'osx-dynamic', 'src')
|
||||||
|
UNITY_DLL_PATH = UNITY_PROJECT_PATH
|
||||||
|
os.rename(os.path.join(BUILD_BASE_PATH, 'libdiscord-rpc.dylib'), os.path.join(BUILD_BASE_PATH, 'discord-rpc.bundle'))
|
||||||
|
|
||||||
|
BUILDS.append({BUILD_BASE_PATH: UNITY_DLL_PATH})
|
||||||
|
|
||||||
|
elif sys.platform.startswith('linux'):
|
||||||
|
LIBRARY_NAME = 'discord-rpc.so'
|
||||||
|
BUILD_BASE_PATH = os.path.join(SCRIPT_PATH, 'builds', 'linux-dynamic', 'src')
|
||||||
|
UNITY_DLL_PATH = os.path.join(UNITY_PROJECT_PATH, 'x86')
|
||||||
|
os.rename(os.path.join(BUILD_BASE_PATH, 'libdiscord-rpc.so'), os.path.join(BUILD_BASE_PATH, 'discord-rpc.so'))
|
||||||
|
|
||||||
|
BUILDS.append({BUILD_BASE_PATH: UNITY_DLL_PATH})
|
||||||
|
|
||||||
|
else:
|
||||||
|
raise Exception('Unsupported platform ' + sys.platform)
|
||||||
|
|
||||||
|
for build in BUILDS:
|
||||||
|
for i in build:
|
||||||
|
mkdir_p(build[i])
|
||||||
|
shutil.copy(os.path.join(i, LIBRARY_NAME), build[i])
|
||||||
|
|
||||||
|
|
||||||
@cli.command()
|
@cli.command()
|
||||||
|
@ -98,23 +130,45 @@ def unreal(ctx):
|
||||||
skip_formatter=True,
|
skip_formatter=True,
|
||||||
just_release=True
|
just_release=True
|
||||||
)
|
)
|
||||||
|
BUILDS = []
|
||||||
|
|
||||||
click.echo('--- Copying libs and header into unreal example')
|
click.echo('--- Copying libs and header into unreal example')
|
||||||
|
|
||||||
UNREAL_PROJECT_PATH = os.path.join(SCRIPT_PATH, 'examples', 'unrealstatus', 'Plugins', 'discordrpc')
|
UNREAL_PROJECT_PATH = os.path.join(SCRIPT_PATH, 'examples', 'unrealstatus', 'Plugins', 'discordrpc')
|
||||||
BUILD_BASE_PATH = os.path.join(SCRIPT_PATH, 'builds', 'win64-dynamic', 'src', 'Release')
|
|
||||||
|
|
||||||
UNREAL_DLL_PATH = os.path.join(UNREAL_PROJECT_PATH, 'Source', 'ThirdParty', 'DiscordRpcLibrary', 'Win64')
|
|
||||||
mkdir_p(UNREAL_DLL_PATH)
|
|
||||||
shutil.copy(os.path.join(BUILD_BASE_PATH, 'discord-rpc.dll'), UNREAL_DLL_PATH)
|
|
||||||
|
|
||||||
UNREAL_INCLUDE_PATH = os.path.join(UNREAL_PROJECT_PATH, 'Source', 'ThirdParty', 'DiscordRpcLibrary', 'Include')
|
UNREAL_INCLUDE_PATH = os.path.join(UNREAL_PROJECT_PATH, 'Source', 'ThirdParty', 'DiscordRpcLibrary', 'Include')
|
||||||
mkdir_p(UNREAL_INCLUDE_PATH)
|
mkdir_p(UNREAL_INCLUDE_PATH)
|
||||||
shutil.copy(os.path.join(SCRIPT_PATH, 'include', 'discord-rpc.h'), UNREAL_INCLUDE_PATH)
|
shutil.copy(os.path.join(SCRIPT_PATH, 'include', 'discord-rpc.h'), UNREAL_INCLUDE_PATH)
|
||||||
|
|
||||||
UNREAL_LIB_PATH = os.path.join(UNREAL_PROJECT_PATH, 'Source', 'ThirdParty', 'DiscordRpcLibrary', 'Win64')
|
if sys.platform.startswith('win'):
|
||||||
mkdir_p(UNREAL_LIB_PATH)
|
LIBRARY_NAME = 'discord-rpc.lib'
|
||||||
shutil.copy(os.path.join(BUILD_BASE_PATH, 'discord-rpc.lib'), UNREAL_LIB_PATH)
|
BUILD_64_BASE_PATH = os.path.join(SCRIPT_PATH, 'builds', 'win64-dynamic', 'src', 'Release')
|
||||||
|
UNREAL_64_DLL_PATH = os.path.join(UNREAL_PROJECT_PATH, 'Source', 'ThirdParty', 'DiscordRpcLibrary', 'Win64')
|
||||||
|
BUILDS.append({BUILD_64_BASE_PATH: UNREAL_64_DLL_PATH})
|
||||||
|
|
||||||
|
BUILD_32_BASE_PATH = os.path.join(SCRIPT_PATH, 'builds', 'win32-dynamic', 'src', 'Release')
|
||||||
|
UNREAL_32_DLL_PATH = os.path.join(UNREAL_PROJECT_PATH, 'Source', 'ThirdParty', 'DiscordRpcLibrary', 'Win32')
|
||||||
|
BUILDS.append({BUILD_32_BASE_PATH: UNREAL_32_DLL_PATH})
|
||||||
|
|
||||||
|
elif sys.platform == 'darwin':
|
||||||
|
LIBRARY_NAME = 'libdiscord-rpc.dylib'
|
||||||
|
BUILD_BASE_PATH = os.path.join(SCRIPT_PATH, 'builds', 'osx-dynamic', 'src')
|
||||||
|
UNREAL_DLL_PATH = os.path.join(UNREAL_PROJECT_PATH, 'Source', 'ThirdParty', 'DiscordRpcLibrary', 'Mac')
|
||||||
|
|
||||||
|
BUILDS.append({BUILD_BASE_PATH: UNREAL_DLL_PATH})
|
||||||
|
|
||||||
|
elif sys.platform.startswith('linux'):
|
||||||
|
LIBRARY_NAME = 'libdiscord-rpc.so'
|
||||||
|
BUILD_BASE_PATH = os.path.join(SCRIPT_PATH, 'builds', 'linux-dynamic', 'src')
|
||||||
|
UNREAL_DLL_PATH = os.path.join(UNREAL_PROJECT_PATH, 'Source', 'ThirdParty', 'DiscordRpcLibrary', 'Linux')
|
||||||
|
|
||||||
|
BUILDS.append({BUILD_BASE_PATH: UNREAL_DLL_PATH})
|
||||||
|
|
||||||
|
else:
|
||||||
|
raise Exception('Unsupported platform ' + sys.platform)
|
||||||
|
|
||||||
|
for build in BUILDS:
|
||||||
|
for i in build:
|
||||||
|
mkdir_p(build[i])
|
||||||
|
shutil.copy(os.path.join(i, LIBRARY_NAME), build[i])
|
||||||
|
|
||||||
|
|
||||||
def build_lib(build_name, generator, options, just_release):
|
def build_lib(build_name, generator, options, just_release):
|
||||||
|
@ -190,7 +244,7 @@ def sign():
|
||||||
else:
|
else:
|
||||||
click.secho('Not signing things on this platform yet', fg='red')
|
click.secho('Not signing things on this platform yet', fg='red')
|
||||||
return
|
return
|
||||||
|
|
||||||
click.echo('--- Signing')
|
click.echo('--- Signing')
|
||||||
for path, _, filenames in os.walk(INSTALL_ROOT):
|
for path, _, filenames in os.walk(INSTALL_ROOT):
|
||||||
for fname in filenames:
|
for fname in filenames:
|
||||||
|
|
|
@ -27,7 +27,7 @@ public class ScriptBatch
|
||||||
proc.StartInfo.EnvironmentVariables["PATH"] = newPath;
|
proc.StartInfo.EnvironmentVariables["PATH"] = newPath;
|
||||||
#endif
|
#endif
|
||||||
proc.StartInfo.FileName = "python";
|
proc.StartInfo.FileName = "python";
|
||||||
proc.StartInfo.Arguments = "build.py for_unity";
|
proc.StartInfo.Arguments = "build.py unity";
|
||||||
proc.StartInfo.WorkingDirectory = "../..";
|
proc.StartInfo.WorkingDirectory = "../..";
|
||||||
proc.Start();
|
proc.Start();
|
||||||
proc.WaitForExit();
|
proc.WaitForExit();
|
||||||
|
|
Loading…
Reference in a new issue