Skip to content

Commit b307326

Browse files
committed
feat: improve new_project.py to not require pl-build
1 parent 26abd0d commit b307326

7 files changed

Lines changed: 75 additions & 41 deletions

File tree

.github/workflows/build.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ jobs:
4646
Invoke-WebRequest -Uri "https://sdk.lunarg.com/sdk/download/1.4.350.0/windows/vulkansdk-windows-X64-1.4.350.0.exe" -OutFile VulkanSDK.exe
4747
# ./VulkanSDK.exe --help
4848
./VulkanSDK.exe --accept-licenses --default-answer --root D:/a/VulkanSDK --confirm-command install
49-
python3 -m pip install pl-build
5049
5150
- name: Prep 1
5251
shell: cmd
@@ -183,7 +182,6 @@ jobs:
183182
curl https://sdk.lunarg.com/sdk/download/1.4.350.0/mac/vulkansdk-macos-1.4.350.0.zip -o vk.zip
184183
unzip vk.zip
185184
sudo ./vulkansdk-macOS-1.4.350.0.app/Contents/MacOS/vulkansdk-macOS-1.4.350.0 --root ~/VulkanSDK/1.4.350.0 --accept-licenses --default-answer --confirm-command install com.lunarg.vulkan.core com.lunarg.vulkan.usr com.lunarg.vulkan.sdl2 com.lunarg.vulkan.glm com.lunarg.vulkan.volk com.lunarg.vulkan.vma com.lunarg.vulkan.ios
186-
python3 -m pip install pl-build
187185
188186
- name: Prep 1
189187
run: |
@@ -322,7 +320,6 @@ jobs:
322320
sudo apt install libxinerama-dev
323321
sudo apt install libgl-dev
324322
sudo apt install libxi-dev
325-
python3 -m pip install pl-build
326323
327324
- name: Prep 1
328325
run: |

README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ The fastest way to use Pilot Light is to generate a small standalone project.
5454
From the root of this repository:
5555

5656
```bash
57-
python -m pip install pl-build
5857
python scripts/new_project.py ../MyFirstProject
5958
```
6059
Then just run your platforms build script located in the **/src** directory of your new project. The binaries will be located in the **/out** directory. The Pilot Light directory is no longer needed. Running the script again will update your project with the newest Pilot Light files.

internal/templates/gen_build_c.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,27 @@
1919
import sys
2020
import platform as plat
2121

22-
import pl_build.core as pl
23-
import pl_build.backend_win32 as win32
24-
import pl_build.backend_linux as linux
25-
import pl_build.backend_macos as apple
22+
try:
23+
import pl_build.core as pl
24+
import pl_build.backend_win32 as win32
25+
import pl_build.backend_linux as linux
26+
import pl_build.backend_macos as apple
27+
except ImportError:
28+
# just use the packaged build so users don't need to pip install pl-build
29+
if len(sys.argv) > 1:
30+
sys.path.insert(0, sys.argv[1])
31+
import build.core as pl
32+
import build.backend_win32 as win32
33+
import build.backend_linux as linux
34+
import build.backend_macos as apple
35+
2636

2737
#-----------------------------------------------------------------------------
2838
# [SECTION] project
2939
#-----------------------------------------------------------------------------
3040

3141
output_directory = "../out"
3242

33-
if len(sys.argv) > 1:
34-
output_directory = sys.argv[1]
35-
3643
with pl.project("pilotlight"):
3744

3845
# used to decide hot reloading

internal/templates/gen_build_c_api.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,26 @@
1919
import sys
2020
import platform as plat
2121

22-
import pl_build.core as pl
23-
import pl_build.backend_win32 as win32
24-
import pl_build.backend_linux as linux
25-
import pl_build.backend_macos as apple
22+
try:
23+
import pl_build.core as pl
24+
import pl_build.backend_win32 as win32
25+
import pl_build.backend_linux as linux
26+
import pl_build.backend_macos as apple
27+
except ImportError:
28+
# just use the packaged build so users don't need to pip install pl-build
29+
if len(sys.argv) > 1:
30+
sys.path.insert(0, sys.argv[1])
31+
import build.core as pl
32+
import build.backend_win32 as win32
33+
import build.backend_linux as linux
34+
import build.backend_macos as apple
2635

2736
#-----------------------------------------------------------------------------
2837
# [SECTION] project
2938
#-----------------------------------------------------------------------------
3039

3140
output_directory = "../out"
3241

33-
if len(sys.argv) > 1:
34-
output_directory = sys.argv[1]
35-
3642
with pl.project("pilotlight"):
3743

3844
# used to decide hot reloading

internal/templates/gen_build_cpp.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,20 +23,26 @@
2323
import sys
2424
import platform as plat
2525

26-
import pl_build.core as pl
27-
import pl_build.backend_win32 as win32
28-
import pl_build.backend_linux as linux
29-
import pl_build.backend_macos as apple
26+
try:
27+
import pl_build.core as pl
28+
import pl_build.backend_win32 as win32
29+
import pl_build.backend_linux as linux
30+
import pl_build.backend_macos as apple
31+
except ImportError:
32+
# just use the packaged build so users don't need to pip install pl-build
33+
if len(sys.argv) > 1:
34+
sys.path.insert(0, sys.argv[1])
35+
import build.core as pl
36+
import build.backend_win32 as win32
37+
import build.backend_linux as linux
38+
import build.backend_macos as apple
3039

3140
#-----------------------------------------------------------------------------
3241
# [SECTION] project
3342
#-----------------------------------------------------------------------------
3443

3544
output_directory = "../out"
3645

37-
if len(sys.argv) > 1:
38-
output_directory = sys.argv[1]
39-
4046
with pl.project("pilotlight"):
4147

4248
# used to decide hot reloading

internal/templates/gen_build_cpp_api.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,20 +23,26 @@
2323
import sys
2424
import platform as plat
2525

26-
import pl_build.core as pl
27-
import pl_build.backend_win32 as win32
28-
import pl_build.backend_linux as linux
29-
import pl_build.backend_macos as apple
26+
try:
27+
import pl_build.core as pl
28+
import pl_build.backend_win32 as win32
29+
import pl_build.backend_linux as linux
30+
import pl_build.backend_macos as apple
31+
except ImportError:
32+
# just use the packaged build so users don't need to pip install pl-build
33+
if len(sys.argv) > 1:
34+
sys.path.insert(0, sys.argv[1])
35+
import build.core as pl
36+
import build.backend_win32 as win32
37+
import build.backend_linux as linux
38+
import build.backend_macos as apple
3039

3140
#-----------------------------------------------------------------------------
3241
# [SECTION] project
3342
#-----------------------------------------------------------------------------
3443

3544
output_directory = "../out"
3645

37-
if len(sys.argv) > 1:
38-
output_directory = sys.argv[1]
39-
4046
with pl.project("pilotlight"):
4147

4248
# used to decide hot reloading

scripts/new_project.py

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
target_directory = "../../project"
1818
file_directory = os.path.dirname(os.path.abspath(__file__))
19+
build_sys_directory = os.path.dirname(os.path.abspath(__file__)) + "/.."
1920

2021
cpp = False
2122
api = False
@@ -35,7 +36,11 @@
3536
if os.path.isdir(target_directory + "/dependencies"):
3637
newProject = False
3738
print("Updating Existing Project")
38-
shutil.rmtree(target_directory + "/dependencies")
39+
shutil.rmtree(target_directory + "/dependencies/pilotlight")
40+
shutil.rmtree(target_directory + "/dependencies/cgltf")
41+
shutil.rmtree(target_directory + "/dependencies/glfw")
42+
shutil.rmtree(target_directory + "/dependencies/imgui")
43+
shutil.rmtree(target_directory + "/dependencies/stb")
3944

4045
if not os.path.isdir(target_directory):
4146
os.mkdir(target_directory)
@@ -45,13 +50,12 @@
4550
os.mkdir(target_directory + "/docs")
4651
os.mkdir(target_directory + "/tests")
4752
os.mkdir(target_directory + "/.vscode")
53+
os.mkdir(target_directory + "/dependencies")
4854

49-
os.mkdir(target_directory + "/dependencies")
5055
os.mkdir(target_directory + "/dependencies/pilotlight")
5156
os.mkdir(target_directory + "/dependencies/pilotlight/include")
5257
os.mkdir(target_directory + "/dependencies/pilotlight/src")
5358

54-
5559
for file in glob.glob(file_directory + "/../extensions/pl_*_ext.h"):
5660
shutil.copy(file, target_directory + "/dependencies/pilotlight/include/")
5761

@@ -87,19 +91,28 @@
8791
shutil.copytree(file_directory + "/../thirdparty/stb", target_directory + "/dependencies/stb")
8892
shutil.copytree(file_directory + "/../shaders", target_directory + "/dependencies/pilotlight/shaders")
8993

94+
if cpp and api:
95+
shutil.copy(file_directory + "/../internal/templates/gen_build_cpp_api.py", target_directory + "/scripts/gen_build.py")
96+
elif api:
97+
shutil.copy(file_directory + "/../internal/templates/gen_build_c_api.py", target_directory + "/scripts/gen_build.py")
98+
elif cpp:
99+
shutil.copy(file_directory + "/../internal/templates/gen_build_cpp.py", target_directory + "/scripts/gen_build.py")
100+
else:
101+
shutil.copy(file_directory + "/../internal/templates/gen_build_c.py", target_directory + "/scripts/gen_build.py")
102+
90103
if newProject:
91104
print("Generating New Project")
92105
if cpp and api:
93-
shutil.copy(file_directory + "/../internal/templates/gen_build_cpp_api.py", target_directory + "/scripts/gen_build.py")
106+
shutil.copy(file_directory + "/../internal/templates/gen_build_cpp_api.py", target_directory + "/scripts/gen_build_user.py")
94107
shutil.copy(file_directory + "/../internal/templates/template_app_api.cpp", target_directory + "/src/app.cpp")
95108
elif api:
96-
shutil.copy(file_directory + "/../internal/templates/gen_build_c_api.py", target_directory + "/scripts/gen_build.py")
109+
shutil.copy(file_directory + "/../internal/templates/gen_build_c_api.py", target_directory + "/scripts/gen_build_user.py")
97110
shutil.copy(file_directory + "/../internal/templates/template_app_api.cpp", target_directory + "/src/app.c")
98111
elif cpp:
99-
shutil.copy(file_directory + "/../internal/templates/gen_build_cpp.py", target_directory + "/scripts/gen_build.py")
112+
shutil.copy(file_directory + "/../internal/templates/gen_build_cpp.py", target_directory + "/scripts/gen_build_user.py")
100113
shutil.copy(file_directory + "/../internal/templates/template_app.cpp", target_directory + "/src/app.cpp")
101114
else:
102-
shutil.copy(file_directory + "/../internal/templates/gen_build_c.py", target_directory + "/scripts/gen_build.py")
115+
shutil.copy(file_directory + "/../internal/templates/gen_build_c.py", target_directory + "/scripts/gen_build_user.py")
103116
shutil.copy(file_directory + "/../internal/templates/template_app.cpp", target_directory + "/src/app.c")
104117

105118
shutil.copy(file_directory + "/../src/pl_config.h", target_directory + "/src/pl_config.h")
@@ -114,7 +127,7 @@
114127

115128
os.chdir(target_directory)
116129
os.chdir("scripts")
117-
subprocess.run([os.path.basename(sys.executable), "gen_build.py"])
130+
subprocess.run([os.path.basename(sys.executable), "gen_build.py", build_sys_directory])
118131

119132
else:
120133
if(os.path.isdir(target_directory + "/out")):
@@ -125,5 +138,5 @@
125138
shutil.rmtree(target_directory + "/cache")
126139
os.chdir(target_directory)
127140
os.chdir("scripts")
128-
subprocess.run([os.path.basename(sys.executable), "gen_build.py"])
141+
subprocess.run([os.path.basename(sys.executable), "gen_build.py", build_sys_directory])
129142

0 commit comments

Comments
 (0)