Get it all working on Windows again for real

This commit is contained in:
Ben Visness 2023-08-07 22:10:32 -05:00
parent d7bfb382e0
commit 260872546b
6 changed files with 70 additions and 51 deletions

7
orca.bat Normal file
View File

@ -0,0 +1,7 @@
@echo off
rem Get the directory of this batch script
set "script_dir=%~dp0"
python3 "%script_dir%orca" %*
exit /b %errorlevel%

View File

@ -14,4 +14,4 @@ set wasmFlags=--target=wasm32^
clang %wasmFlags% -o .\module.wasm ..\..\sdk\orca.c ..\..\cstdlib\src\*.c src\main.c
python3 ..\..\scripts\mkapp.py --orca-dir ..\.. --name Pong --icon icon.png --resource-dir data module.wasm
orca bundle --orca-dir ..\.. --name Pong --icon icon.png --resource-dir data module.wasm

View File

@ -14,4 +14,4 @@ set wasmFlags=--target=wasm32^
clang %wasmFlags% -o .\module.wasm ..\..\sdk\orca.c ..\..\cstdlib\src\*.c src\main.c
python3 ..\..\scripts\mkapp.py --orca-dir ..\.. --name UI --resource-dir data module.wasm
orca bundle --orca-dir ..\.. --name UI --resource-dir data module.wasm

View File

@ -184,12 +184,12 @@ def windows_make_app(args):
#-----------------------------------------------------------
app_name = args.name
bundle_name = app_name
bundle_dir = args.out_dir + '/' + bundle_name
exe_dir = bundle_dir + '/bin'
res_dir = bundle_dir + '/resources'
guest_dir = bundle_dir + '/app'
wasm_dir = guest_dir + '/wasm'
data_dir = guest_dir + '/data'
bundle_dir = os.path.join(args.out_dir, bundle_name)
exe_dir = os.path.join(bundle_dir, 'bin')
res_dir = os.path.join(bundle_dir, 'resources')
guest_dir = os.path.join(bundle_dir, 'app')
wasm_dir = os.path.join(guest_dir, 'wasm')
data_dir = os.path.join(guest_dir, 'data')
if os.path.exists(bundle_dir):
shutil.rmtree(bundle_dir)
@ -203,10 +203,10 @@ def windows_make_app(args):
#-----------------------------------------------------------
#NOTE: copy orca runtime executable and libraries
#-----------------------------------------------------------
orca_exe = args.orca_dir + '/build/bin/orca.exe'
milepost_lib = args.orca_dir + '/build/bin/milepost.dll'
gles_lib = args.orca_dir + '/milepost/build/bin/libGLESv2.dll'
egl_lib = args.orca_dir + '/milepost/build/bin/libEGL.dll'
orca_exe = os.path.join(args.orca_dir, 'build/bin/orca.exe')
milepost_lib = os.path.join(args.orca_dir, 'build/bin/milepost.dll')
gles_lib = os.path.join(args.orca_dir, 'milepost/build/bin/libGLESv2.dll')
egl_lib = os.path.join(args.orca_dir, 'milepost/build/bin/libEGL.dll')
shutil.copy(orca_exe, exe_dir)
shutil.copy(milepost_lib, exe_dir)
@ -236,10 +236,10 @@ def windows_make_app(args):
#NOTE: copy runtime resources
#-----------------------------------------------------------
# default fonts
shutil.copy(args.orca_dir + '/resources/OpenSansLatinSubset.ttf', res_dir)
shutil.copy(args.orca_dir + '/resources/Menlo.ttf', res_dir)
shutil.copy(args.orca_dir + '/resources/Menlo Bold.ttf', res_dir)
shutil.copy(args.orca_dir + '/resources/Menlo Italics.ttf', res_dir)
shutil.copy(os.path.join(args.orca_dir, 'resources/OpenSansLatinSubset.ttf'), res_dir)
shutil.copy(os.path.join(args.orca_dir, 'resources/Menlo.ttf'), res_dir)
shutil.copy(os.path.join(args.orca_dir, 'resources/Menlo Bold.ttf'), res_dir)
shutil.copy(os.path.join(args.orca_dir, 'resources/Menlo Italics.ttf'), res_dir)
#-----------------------------------------------------------
#NOTE make icon

View File

@ -1,10 +1,10 @@
{
"scripts/files/angle-windows-2019-2023-07-05.zip": "a333b5ccc8462151ee8df65c43cfacd70d9db2413f2e495da65670737b5b2d96",
"scripts/files/angle-macos-jank-2023-07-05.zip": "c234b8db179a24757ab9f46610a032123718dd9bed967d2bf8e27d0d17eb0aff",
"milepost/lib/libEGL.dll": "b7bf51f83e88129ddc20c0c2cb904ec04c89059a30a2cd29b9b1ea11c80388fb",
"milepost/lib/libEGL.dll.lib": "4cec54c534136da413dea86bd271ccb9c5ae88e40aa91d1de7a01e701be8e1d7",
"milepost/lib/libGLESv2.dll": "193b53b0a16b702eaa28a73e84527acf7aecfd665e3e3f54a8d9db9ae73111e1",
"milepost/lib/libGLESv2.dll.lib": "ee87aac129efe8fe871825d181b85da1b1ea6626cb48be52c2e689f2804b953f",
"milepost/build/bin/libEGL.dll": "b7bf51f83e88129ddc20c0c2cb904ec04c89059a30a2cd29b9b1ea11c80388fb",
"milepost/build/bin/libEGL.dll.lib": "4cec54c534136da413dea86bd271ccb9c5ae88e40aa91d1de7a01e701be8e1d7",
"milepost/build/bin/libGLESv2.dll": "193b53b0a16b702eaa28a73e84527acf7aecfd665e3e3f54a8d9db9ae73111e1",
"milepost/build/bin/libGLESv2.dll.lib": "ee87aac129efe8fe871825d181b85da1b1ea6626cb48be52c2e689f2804b953f",
"milepost/build/bin/libEGL.dylib": "96baea4b1c8578d30738764784d07b509d1153df694c094faba2ee8ccbfde2a9",
"milepost/build/bin/libGLESv2.dylib": "98ce9f6248a6447ba9199e96b8f6d87df9548d43ce583a2615717aab168ecb71"
}

View File

@ -129,7 +129,7 @@ def build_milepost_lib_win(release):
"ole32.lib",
"shell32.lib",
"shlwapi.lib",
"/LIBPATH:./bin",
"/LIBPATH:./build/bin",
"libEGL.dll.lib",
"libGLESv2.dll.lib",
"/DELAYLOAD:libEGL.dll",
@ -137,17 +137,17 @@ def build_milepost_lib_win(release):
]
subprocess.run([
"cl",
"cl", "/nologo",
"/we4013", "/Zi", "/Zc:preprocessor",
"/DMP_BUILD_DLL",
"/std:c11", "/experimental:c11atomics",
*includes,
"src/milepost.c", "/Fo:bin/milepost.o",
"src/milepost.c", "/Fo:build/bin/milepost.o",
"/LD", "/link",
"/MANIFEST:EMBED", "/MANIFESTINPUT:src/win32_manifest.xml",
*libs,
"/OUT:bin/milepost.dll",
"/IMPLIB:bin/milepost.dll.lib",
"/OUT:build/bin/milepost.dll",
"/IMPLIB:build/bin/milepost.dll.lib",
], check=True)
@ -240,19 +240,19 @@ def build_wasm3(release):
def build_wasm3_lib_win(release):
for f in glob.iglob(".\\ext\\wasm3\\source\\*.c"):
for f in glob.iglob("./ext/wasm3/source/*.c"):
name = os.path.splitext(os.path.basename(f))[0]
subprocess.run([
"cl", "/nologo",
"/Zi", "/Zc:preprocessor", "/c",
*(["/O2"] if release else []),
f"/Fo:bin\\obj\\{name}.obj",
"/I", ".\\ext\\wasm3\\source",
"/O2",
f"/Fo:build/obj/{name}.obj",
"/I", "./ext/wasm3/source",
f,
], check=True)
subprocess.run([
"lib", "/nologo", "/out:bin\\wasm3.lib",
"bin\\obj\\*.obj",
"lib", "/nologo", "/out:build/bin/wasm3.lib",
"build/obj/*.obj",
], check=True)
@ -294,8 +294,8 @@ def build_orca(release):
def build_orca_win(release):
# copy libraries
shutil.copy("milepost\\bin\\milepost.dll", "bin")
shutil.copy("milepost\\bin\\milepost.dll.lib", "bin")
shutil.copy("milepost/build/bin/milepost.dll", "build/bin")
shutil.copy("milepost/build/bin/milepost.dll.lib", "build/bin")
gen_all_bindings()
@ -303,12 +303,12 @@ def build_orca_win(release):
includes = [
"/I", "src",
"/I", "sdk",
"/I", "ext\wasm3\source",
"/I", "milepost\src",
"/I", "milepost\ext",
"/I", "ext/wasm3/source",
"/I", "milepost/src",
"/I", "milepost/ext",
]
libs = [
"/LIBPATH:bin",
"/LIBPATH:build/bin",
"milepost.dll.lib",
"wasm3.lib",
]
@ -318,9 +318,9 @@ def build_orca_win(release):
"/Zi", "/Zc:preprocessor",
"/std:c11", "/experimental:c11atomics",
*includes,
"src\\main.c",
"src/main.c",
"/link", *libs,
"/out:bin\\orca.exe",
"/out:build/bin/orca.exe",
], check=True)
@ -433,10 +433,10 @@ def verify_angle():
checkfiles = None
if platform.system() == "Windows":
checkfiles = [
"milepost/lib/libEGL.dll",
"milepost/lib/libEGL.dll.lib",
"milepost/lib/libGLESv2.dll",
"milepost/lib/libGLESv2.dll.lib",
"milepost/build/bin/libEGL.dll",
"milepost/build/bin/libEGL.dll.lib",
"milepost/build/bin/libGLESv2.dll",
"milepost/build/bin/libGLESv2.dll.lib",
]
elif platform.system() == "Darwin":
checkfiles = [
@ -466,7 +466,7 @@ def download_angle():
build = "windows-2019"
extensions = [
("dll", "milepost/build/bin/"),
("lib", "milepost/build/lib/"),
("lib", "milepost/build/bin/"),
]
elif platform.system() == "Darwin":
build = "macos-jank"
@ -494,7 +494,6 @@ def download_angle():
anglezip.extractall(path="scripts/files")
os.makedirs("milepost/build/bin", exist_ok=True)
os.makedirs("milepost/build/lib", exist_ok=True)
for angleDir in ["bin", "lib"]:
for (ext, dest) in extensions:
for filepath in glob.glob(f"scripts/files/angle/{angleDir}/*.{ext}"):
@ -543,10 +542,13 @@ def yeet(path):
def install(args):
dest = os.path.expanduser(os.path.join("~", ".orca"))
if platform.system() == "Windows":
dest = os.path.join(os.getenv("LOCALAPPDATA"), "orca")
else:
dest = os.path.expanduser(os.path.join("~", ".orca"))
if not args.no_confirm:
print("The Orca command-line tools will be installed to your home directory in:")
print("The Orca command-line tools will be installed to:")
print(dest)
print()
while True:
@ -562,11 +564,21 @@ def install(args):
yeet(bin_dir)
shutil.copytree("scripts", os.path.join(bin_dir, "sys_scripts"))
shutil.copy("orca", bin_dir)
if platform.system() == "Windows":
shutil.copy("orca.bat", bin_dir)
# TODO: Customize these instructions for Windows
print()
print("The Orca tools have been installed. Make sure the Orca tools are on your PATH by")
print("adding the following to your shell config:")
print()
print(f"export PATH=\"{bin_dir}:$PATH\"")
if platform.system() == "Windows":
print("The Orca tools have been installed. Make sure the Orca tools are on your PATH by")
print("adding the following path to your system PATH variable:")
print()
print(bin_dir)
print()
print("You can do this in the Windows settings by searching for \"environment variables\".")
else:
print("The Orca tools have been installed. Make sure the Orca tools are on your PATH by")
print("adding the following to your shell config:")
print()
print(f"export PATH=\"{bin_dir}:$PATH\"")
print()