@@ 58,6 58,59 @@ def gen_inkscape_rules_for_asset(root, asset, writer, files_375, files_full, fil
writer.build([out_375], rule_375, [in_file])
writer.build([out_125], rule_125, [in_file])
+def gen_rules_for_client(root, env, writer):
+ if env == 'dev':
+ writer.rule('cargo-client', 'wasm-pack build --target web client', depfile=f'{root}/target/wasm32-unknown-unknown/release/starkingdoms_client.d', pool='console')
+ elif env == 'prod':
+ writer.rule('cargo-client', 'wasm-pack build --target web client --no-default-features --features textures-fast', depfile=f'{root}/target/wasm32-unknown-unknown/release/starkingdoms_client.d', pool='console')
+ writer.build(
+ [
+ f'{root}/client/pkg/.gitignore',
+ f'{root}/client/pkg/package.json',
+ f'{root}/client/pkg/starkingdoms_client.d.ts',
+ f'{root}/client/pkg/starkingdoms_client.js',
+ f'{root}/client/pkg/starkingdoms_client_bg.wasm',
+ f'{root}/client/pkg/starkingdoms_client_bg.wasm.d.ts',
+ f'{root}/target/wasm32-unknown-unknown/release/starkingdoms_client.wasm'
+ ],
+ 'cargo-client',
+ [
+ f'{root}/assets/dist/spritesheet-125',
+ f'{root}/assets/dist/spritesheet-125.png',
+ f'{root}/assets/dist/spritesheet-125.ron',
+ f'{root}/assets/dist/spritesheet-375',
+ f'{root}/assets/dist/spritesheet-375.png',
+ f'{root}/assets/dist/spritesheet-375.ron',
+ f'{root}/assets/dist/spritesheet-full',
+ f'{root}/assets/dist/spritesheet-full.png',
+ f'{root}/assets/dist/spritesheet-full.ron',
+ ]
+ )
+
+ writer.rule('client-copy-file', f'cp -r {root}/client/pkg {root}/web/dist')
+
+ writer.build(
+ [
+ f'{root}/web/dist/.gitignore',
+ f'{root}/web/dist/package.json',
+ f'{root}/web/dist/starkingdoms_client.d.ts',
+ f'{root}/web/dist/starkingdoms_client.js',
+ f'{root}/web/dist/starkingdoms_client_bg.wasm',
+ f'{root}/web/dist/starkingdoms_client_bg.wasm.d.ts'
+ ],
+ 'client-copy-file',
+ [
+ f'{root}/client/pkg/.gitignore',
+ f'{root}/client/pkg/package.json',
+ f'{root}/client/pkg/starkingdoms_client.d.ts',
+ f'{root}/client/pkg/starkingdoms_client.js',
+ f'{root}/client/pkg/starkingdoms_client_bg.wasm',
+ f'{root}/client/pkg/starkingdoms_client_bg.wasm.d.ts',
+ ],
+ )
+
+ writer.build(['client'], 'phony', [f'{root}/web/dist/starkingdoms_client.js'])
+
def gen_inkscape(root, assets, writer, files_375, files_full, files_125):
gen_inkscape_rules_for_asset_sizes(writer)
@@ 102,7 155,7 @@ def main():
target = sys.argv[1]
env = sys.argv[2]
root = sys.argv[3]
- print(f'[spacetime] Configuring target {target} with ENV={env}, buildroot={root}')
+ print(f'[spacetime] Configuring ninja for PRIMARY_TARGET={target} with ENV={env}, BUILDROOT={root}')
with open(f'{root}/build.ninja', 'w') as f:
writer = Writer(f)
@@ 114,6 167,8 @@ def main():
assets = scan_assets(root)
generate_assets_build_command(root, assets, writer)
+ gen_rules_for_client(root, env, writer)
+
print(f'[spacetime] Configured build')