1
0

fix: windows multi config; version 1.0.9 [pypi]
All checks were successful
Deploy Tools / build-package (push) Successful in 34s

This commit is contained in:
Jonathan Hoffstadt 2024-10-03 22:16:34 -05:00
parent 3acb4c4856
commit 8d055580a5
4 changed files with 25 additions and 403 deletions

377
README.md
View File

@ -79,382 +79,7 @@ with pl.project("tutorial"):
pl.add_compiler_flags("-g", "--debug") pl.add_compiler_flags("-g", "--debug")
pl.add_linker_flags("-Wl,-rpath,/usr/local/lib") pl.add_linker_flags("-Wl,-rpath,/usr/local/lib")
win32.generate_build("build_win32.bat", {"dev env setup" : True}) win32.generate_build("build_win32.bat")
linux.generate_build("build_linux.sh") linux.generate_build("build_linux.sh")
macos.generate_build("build_macos.sh") macos.generate_build("build_macos.sh")
```
#### output - build_win32.bat
```batch
:: Project: tutorial
:: Auto Generated by:
:: "pl_build.py" version: 1.0.4
:: Project: tutorial
:: ################################################################################
:: # Development Setup #
:: ################################################################################
:: keep environment variables modifications local
@setlocal
:: make script directory CWD
@pushd %~dp0
@set dir=%~dp0
:: modify PATH to find vcvarsall.bat
@set PATH=C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build;%PATH%
@set PATH=C:\Program Files\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build;%PATH%
@set PATH=C:\Program Files (x86)\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build;%PATH%
@set PATH=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build;%PATH%
@set PATH=C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise/VC\Auxiliary\Build;%PATH%
:: setup environment for MSVC dev tools
@call vcvarsall.bat amd64 > nul
:: default compilation result
@set PL_RESULT=Successful.
:: default configuration
@set PL_CONFIG=debug
:: check command line args for configuration
:CheckConfiguration
@if "%~1"=="-c" (@set PL_CONFIG=%2) & @shift & @shift & @goto CheckConfiguration
@if "%PL_CONFIG%" equ "debug" ( goto debug )
:: ################################################################################
:: # configuration | debug #
:: ################################################################################
:debug
:: create output directories
@if not exist "out" @mkdir "out"
:: create lock file(s)
@echo LOCKING > "out/lock.tmp"
@if exist "out/tutorial.exe" del "out\tutorial.exe"
@if exist "out/tutorial_*.pdb" del "out\tutorial_*.pdb"
::~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ tutorial | debug ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@set PL_LINKER_FLAGS=-incremental:no
@set PL_SOURCES="main.c"
:: run compiler (and linker)
@echo.
@echo Step: tutorial
@echo ~~~~~~~~~~~~~~~~~~~~~~
@echo Compiling and Linking...
:: call compiler
cl %PL_SOURCES% -Fe"out/tutorial.exe" -Fo"out/" -link %PL_LINKER_FLAGS% -PDB:"out/tutorial_%random%.pdb"
:: check build status
@set PL_BUILD_STATUS=%ERRORLEVEL%
:: failed
@if %PL_BUILD_STATUS% NEQ 0 (
@echo Compilation Failed with error code: %PL_BUILD_STATUS%
@set PL_RESULT=Failed.
goto Cleanupdebug
)
:: print results
@echo Result:  %PL_RESULT%
@echo ~~~~~~~~~~~~~~~~~~~~~~
:Exit_tutorial
:Cleanupdebug
@echo Cleaning...
:: delete obj files(s)
@del "out\*.obj" > nul 2> nul
:: delete lock file(s)
@if exist "out/lock.tmp" del "out\lock.tmp"
:: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: end of debug configuration
goto ExitLabel
:ExitLabel
:: return CWD to previous CWD
@popd
```
#### output - build_macos.sh
```bash
# Auto Generated by:
# "pl_build.py" version: 1.0.4
# Project: tutorial
# ################################################################################
# # Development Setup #
# ################################################################################
# colors
BOLD=$'\e[0;1m'
RED=$'\e[0;31m'
RED_BG=$'\e[0;41m'
GREEN=$'\e[0;32m'
GREEN_BG=$'\e[0;42m'
CYAN=$'\e[0;36m'
MAGENTA=$'\e[0;35m'
YELLOW=$'\e[0;33m'
WHITE=$'\e[0;97m'
NC=$'\e[0m'
# find directory of this script
SOURCE=${BASH_SOURCE[0]}
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
DIR=$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )
SOURCE=$(readlink "$SOURCE")
[[ $SOURCE != /* ]] && SOURCE=$DIR/$SOURCE # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
done
DIR=$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )
# get architecture (intel or apple silicon)
ARCH="$(uname -m)"
# make script directory CWD
pushd $DIR >/dev/null
# default configuration
PL_CONFIG=debug
# check command line args for configuration
while getopts ":c:" option; do
case $option in
c) # set conf
PL_CONFIG=$OPTARG;;
\?) # Invalid option
echo "Error: Invalid option"
exit;;
esac
done
# ################################################################################
# # configuration | debug #
# ################################################################################
if [[ "$PL_CONFIG" == "debug" ]]; then
# create output directory(s)
mkdir -p "out"
# create lock file(s)
echo LOCKING > "out/lock.tmp"
# check if this is a reload
PL_HOT_RELOAD_STATUS=0
# # let user know if hot reloading
running_count=$(ps aux | grep -v grep | grep -ci "pilot_light")
if [ $running_count -gt 0 ]
then
PL_HOT_RELOAD_STATUS=1
echo
echo echo ${BOLD}${WHITE}${RED_BG}--------${GREEN_BG} HOT RELOADING ${RED_BG}--------${NC}
echo echo
else
# cleanup binaries if not hot reloading
echo PL_HOT_RELOAD_STATUS=0
rm -f "out/tutorial"
fi
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ tutorial | debug ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# skip during hot reload
if [ $PL_HOT_RELOAD_STATUS -ne 1 ]; then
PL_RESULT=${BOLD}${GREEN}Successful.${NC}
PL_DEFINES=""
PL_INCLUDE_DIRECTORIES=""
PL_LINK_DIRECTORIES=""
PL_COMPILER_FLAGS="-g --debug "
PL_LINKER_FLAGS="-Wl,-rpath,/usr/local/lib "
PL_STATIC_LINK_LIBRARIES=""
PL_DYNAMIC_LINK_LIBRARIES=""
PL_SOURCES="main.c "
PL_LINK_FRAMEWORKS=""
# add flags for specific hardware
if [[ "$ARCH" == "arm64" ]]; then
PL_COMPILER_FLAGS+="-arch arm64 "
else
PL_COMPILER_FLAGS+="-arch x86_64 "
fi
# run compiler (and linker)
echo
echo ${YELLOW}Step: tutorial${NC}
echo ${YELLOW}~~~~~~~~~~~~~~~~~~~${NC}
echo ${CYAN}Compiling and Linking...${NC}
clang $PL_SOURCES $PL_INCLUDE_DIRECTORIES $PL_DEFINES $PL_COMPILER_FLAGS $PL_INCLUDE_DIRECTORIES $PL_LINK_DIRECTORIES $PL_LINKER_FLAGS $PL_STATIC_LINK_LIBRARIES $PL_DYNAMIC_LINK_LIBRARIES -o "./out/tutorial"
# check build status
if [ $? -ne 0 ]
then
PL_RESULT=${BOLD}${RED}Failed.${NC}
fi
# print results
echo ${CYAN}Results: ${NC} ${PL_RESULT}
echo ${CYAN}~~~~~~~~~~~~~~~~~~~~~~${NC}
# hot reload skip
fi
# delete lock file(s)
rm -f "out/lock.tmp"
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# end of debug
fi
# return CWD to previous CWD
popd >/dev/null
```
#### output - build_linux.sh
```bash
#!/bin/bash
# Auto Generated by:
# "pl_build.py" version: 1.0.4
# Project: tutorial
# ################################################################################
# # Development Setup #
# ################################################################################
# colors
BOLD=$'\e[0;1m'
RED=$'\e[0;31m'
RED_BG=$'\e[0;41m'
GREEN=$'\e[0;32m'
GREEN_BG=$'\e[0;42m'
CYAN=$'\e[0;36m'
MAGENTA=$'\e[0;35m'
YELLOW=$'\e[0;33m'
WHITE=$'\e[0;97m'
NC=$'\e[0m'
# find directory of this script
SOURCE=${BASH_SOURCE[0]}
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
DIR=$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )
SOURCE=$(readlink "$SOURCE")
[[ $SOURCE != /* ]] && SOURCE=$DIR/$SOURCE # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
done
DIR=$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )
# make script directory CWD
pushd $DIR >/dev/null
# default configuration
PL_CONFIG=debug
# check command line args for configuration
while getopts ":c:" option; do
case $option in
c) # set conf
PL_CONFIG=$OPTARG;;
\?) # Invalid option
echo "Error: Invalid option"
exit;;
esac
done
# ################################################################################
# # configuration | debug #
# ################################################################################
if [[ "$PL_CONFIG" == "debug" ]]; then
# create output directory(s)
mkdir -p "out"
# create lock file(s)
echo LOCKING > "out/lock.tmp"
# check if this is a reload
PL_HOT_RELOAD_STATUS=0
# # let user know if hot reloading
if pidof -x "pilot_light" -o $$ >/dev/null;then
PL_HOT_RELOAD_STATUS=1
echo
echo echo ${BOLD}${WHITE}${RED_BG}--------${GREEN_BG} HOT RELOADING ${RED_BG}--------${NC}
echo echo
else
# cleanup binaries if not hot reloading
echo PL_HOT_RELOAD_STATUS=0
rm -f "out/tutorial"
fi
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ tutorial | debug ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# skip during hot reload
if [ $PL_HOT_RELOAD_STATUS -ne 1 ]; then
PL_RESULT=${BOLD}${GREEN}Successful.${NC}
PL_DEFINES=""
PL_INCLUDE_DIRECTORIES=""
PL_LINK_DIRECTORIES=""
PL_COMPILER_FLAGS="-g "
PL_LINKER_FLAGS="-ldl "
PL_STATIC_LINK_LIBRARIES=""
PL_DYNAMIC_LINK_LIBRARIES=""
PL_SOURCES="main.c "
# run compiler (and linker)
echo
echo ${YELLOW}Step: tutorial${NC}
echo ${YELLOW}~~~~~~~~~~~~~~~~~~~${NC}
echo ${CYAN}Compiling and Linking...${NC}
gcc $PL_SOURCES $PL_INCLUDE_DIRECTORIES $PL_DEFINES $PL_COMPILER_FLAGS $PL_INCLUDE_DIRECTORIES $PL_LINK_DIRECTORIES $PL_LINKER_FLAGS $PL_STATIC_LINK_LIBRARIES $PL_DYNAMIC_LINK_LIBRARIES -o "./out/tutorial"
# check build status
if [ $? -ne 0 ]
then
PL_RESULT=${BOLD}${RED}Failed.${NC}
fi
# print results
echo ${CYAN}Results: ${NC} ${PL_RESULT}
echo ${CYAN}~~~~~~~~~~~~~~~~~~~~~~${NC}
# hot reload skip
fi
# delete lock file(s)
rm -f "out/lock.tmp"
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# end of debug
fi
# return CWD to previous CWD
popd >/dev/null
``` ```

View File

@ -105,28 +105,25 @@ def generate_build(name, user_options = None):
helper.add_spacing() helper.add_spacing()
# try to setup dev environment # try to setup dev environment
if isinstance(user_options, dict): helper.add_comment("modify PATH to find vcvarsall.bat")
if "dev env setup" in user_options: helper.add_line('@if exist "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Auxiliary/Build" @set PATH=C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Auxiliary\\Build;%PATH%')
if user_options["dev env setup"] == True: helper.add_line('@if exist "C:/Program Files/Microsoft Visual Studio/2019/Community/VC/Auxiliary/Build" @set PATH=C:\Program Files\Microsoft Visual Studio\\2019\\Community\\VC\\Auxiliary\\Build;%PATH%')
helper.add_comment("modify PATH to find vcvarsall.bat") helper.add_line('@if exist "C:/Program Files/Microsoft Visual Studio/2022/Professional/VC/Auxiliary/Build" @set PATH=C:\\Program Files\\Microsoft Visual Studio\\2022\Professional\\VC\\Auxiliary\\Build;%PATH%')
helper.add_line('@if exist "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Auxiliary/Build" @set PATH=C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Auxiliary\\Build;%PATH%') helper.add_line('@if exist "C:/Program Files/Microsoft Visual Studio/2019/Professional/VC/Auxiliary/Build" @set PATH=C:\\Program Files\\Microsoft Visual Studio\\2019\Professional\\VC\\Auxiliary\\Build;%PATH%')
helper.add_line('@if exist "C:/Program Files/Microsoft Visual Studio/2019/Community/VC/Auxiliary/Build" @set PATH=C:\Program Files\Microsoft Visual Studio\\2019\\Community\\VC\\Auxiliary\\Build;%PATH%') helper.add_line('@if exist "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build" @set PATH=C:\\Program Files\\Microsoft Visual Studio\\2022\Enterprise\\VC\\Auxiliary\\Build;%PATH%')
helper.add_line('@if exist "C:/Program Files/Microsoft Visual Studio/2022/Professional/VC/Auxiliary/Build" @set PATH=C:\\Program Files\\Microsoft Visual Studio\\2022\Professional\\VC\\Auxiliary\\Build;%PATH%') helper.add_line('@if exist "C:/Program Files/Microsoft Visual Studio/2019/Enterprise/VC/Auxiliary/Build" @set PATH=C:\\Program Files\\Microsoft Visual Studio\\2019\Enterprise\\VC\\Auxiliary\\Build;%PATH%')
helper.add_line('@if exist "C:/Program Files/Microsoft Visual Studio/2019/Professional/VC/Auxiliary/Build" @set PATH=C:\\Program Files\\Microsoft Visual Studio\\2019\Professional\\VC\\Auxiliary\\Build;%PATH%') helper.add_line('@if exist "C:/Program Files (x86)/Microsoft Visual Studio/2022/Community/VC/Auxiliary/Build" @set PATH=C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\Community\\VC\\Auxiliary\\Build;%PATH%')
helper.add_line('@if exist "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build" @set PATH=C:\\Program Files\\Microsoft Visual Studio\\2022\Enterprise\\VC\\Auxiliary\\Build;%PATH%') helper.add_line('@if exist "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Auxiliary/Build" @set PATH=C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Auxiliary\\Build;%PATH%')
helper.add_line('@if exist "C:/Program Files/Microsoft Visual Studio/2019/Enterprise/VC/Auxiliary/Build" @set PATH=C:\\Program Files\\Microsoft Visual Studio\\2019\Enterprise\\VC\\Auxiliary\\Build;%PATH%') helper.add_line('@if exist "C:/Program Files (x86)/Microsoft Visual Studio/2022/Professional/VC/Auxiliary/Build" @set PATH=C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\Professional\\VC\\Auxiliary\\Build;%PATH%')
helper.add_line('@if exist "C:/Program Files (x86)/Microsoft Visual Studio/2022/Community/VC/Auxiliary/Build" @set PATH=C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\Community\\VC\\Auxiliary\\Build;%PATH%') helper.add_line('@if exist "C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Auxiliary/Build" @set PATH=C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Professional\\VC\\Auxiliary\\Build;%PATH%')
helper.add_line('@if exist "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Auxiliary/Build" @set PATH=C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Auxiliary\\Build;%PATH%') helper.add_line('@if exist "C:/Program Files (x86)/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build" @set PATH=C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Auxiliary\\Build;%PATH%')
helper.add_line('@if exist "C:/Program Files (x86)/Microsoft Visual Studio/2022/Professional/VC/Auxiliary/Build" @set PATH=C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\Professional\\VC\\Auxiliary\\Build;%PATH%') helper.add_line('@if exist "C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Auxiliary/Build" @set PATH=C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise\\VC\\Auxiliary\\Build;%PATH%')
helper.add_line('@if exist "C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Auxiliary/Build" @set PATH=C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Professional\\VC\\Auxiliary\\Build;%PATH%')
helper.add_line('@if exist "C:/Program Files (x86)/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build" @set PATH=C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Auxiliary\\Build;%PATH%')
helper.add_line('@if exist "C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Auxiliary/Build" @set PATH=C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise\\VC\\Auxiliary\\Build;%PATH%')
helper.add_spacing() helper.add_spacing()
helper.add_comment("setup environment for MSVC dev tools") helper.add_comment("setup environment for MSVC dev tools")
helper.add_line('@call vcvarsall.bat amd64 > nul') helper.add_line('@call vcvarsall.bat amd64 > nul')
helper.add_spacing() helper.add_spacing()
helper.add_comment("default compilation result") helper.add_comment("default compilation result")
helper.add_line('@set PL_RESULT=Successful.') helper.add_line('@set PL_RESULT=Successful.')
@ -445,11 +442,11 @@ def generate_build(name, user_options = None):
for lock_file in lock_files: for lock_file in lock_files:
helper.delete_file(settings.output_directory + '/' + lock_file) helper.delete_file(settings.output_directory + '/' + lock_file)
helper.add_spacing() helper.add_spacing()
helper.add_comment('~' * 40) helper.add_comment('~' * 40)
helper.add_comment('end of ' + settings.config_name + ' configuration') helper.add_comment('end of ' + settings.config_name + ' configuration')
helper.add_line("goto ExitLabel") helper.add_line("goto ExitLabel")
helper.add_spacing() helper.add_spacing()
helper.add_label("ExitLabel") helper.add_label("ExitLabel")
helper.add_spacing() helper.add_spacing()

View File

@ -14,7 +14,7 @@
# [SECTION] version # [SECTION] version
#----------------------------------------------------------------------------- #-----------------------------------------------------------------------------
__version__ = "1.0.7" __version__ = "1.0.9"
#----------------------------------------------------------------------------- #-----------------------------------------------------------------------------
# [SECTION] imports # [SECTION] imports

View File

@ -2,7 +2,7 @@ import setuptools
from codecs import open from codecs import open
import os import os
wip_version = "1.0.8" wip_version = "1.0.9"
def readme(): def readme():
try: try: