Use python build script
This commit is contained in:
@@ -113,3 +113,9 @@ IF EXIST %JOM_LOC% (
|
|||||||
CD %original_dir%
|
CD %original_dir%
|
||||||
|
|
||||||
ECHO %current_activity%: %current_activity% DONE.
|
ECHO %current_activity%: %current_activity% DONE.
|
||||||
|
=======
|
||||||
|
@ECHO OFF
|
||||||
|
python build.py
|
||||||
|
call test.bat
|
||||||
|
rm test.bat
|
||||||
|
PAUSE
|
||||||
|
|||||||
+26
-115
@@ -1,121 +1,31 @@
|
|||||||
import os
|
import os
|
||||||
import sys
|
from common import *
|
||||||
import argparse
|
|
||||||
import subprocess
|
|
||||||
|
|
||||||
#Const globals
|
|
||||||
EXIT_CODE_SUCCESS = 0
|
|
||||||
EXIT_CODE_FAILURE_BUILD_APP = 1
|
|
||||||
EXIT_CODE_FAILURE_BUILD_LOCATION = 2
|
|
||||||
|
|
||||||
QT_LOC_VAR_NAME = "QT_LOC"
|
|
||||||
VS_LOC_VAR_NAME = "VS_LOC"
|
|
||||||
JOM_LOC_VAR_NAME = "JOM_LOC"
|
|
||||||
ZIP_LOC_VAR_NAME = "ZIP_LOC"
|
|
||||||
NSIS_LOC_VAR_NAME = "NSIS_LOC"
|
|
||||||
LLVM_LOC_VAR_NAME = "LLVM_LOC"
|
|
||||||
|
|
||||||
QT_LOC_DEFAULT = r"C:\Qt\5.11.1\msvc2017_64\bin\""
|
|
||||||
VS_LOC_DEFAULT = r"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat"
|
|
||||||
JOM_LOC_DEFAULT = r"C:\Qt\Tools\QtCreator\bin\jom.exe"
|
|
||||||
ZIP_LOC_DEFAULT = r"C:\Program Files\7-Zip\7z.exe"
|
|
||||||
NSIS_LOC_DEFAULT = r"C:\Program Files (x86)\NSIS\""
|
|
||||||
LLVM_LOC_DEFAULT = r"C:\Program Files\LLVM\bin\""
|
|
||||||
|
|
||||||
ORIGINAL_DIR = os.getcwd()
|
|
||||||
PROJECT_DIR = os.path.abspath(os.path.join(ORIGINAL_DIR , "..\.."))
|
|
||||||
|
|
||||||
PLATFORM_TARGET = "AMD64"
|
|
||||||
|
|
||||||
#Mutable globals
|
|
||||||
current_activity = ""
|
|
||||||
|
|
||||||
bat_file_contents = ""
|
|
||||||
|
|
||||||
|
|
||||||
###### Utility funcs
|
|
||||||
|
|
||||||
def say(message: str):
|
|
||||||
print(current_activity + ": " + message)
|
|
||||||
|
|
||||||
def say_error(message: str):
|
|
||||||
print(current_activity + ": " + message)
|
|
||||||
|
|
||||||
def exit_on_error(error_number):
|
|
||||||
os.chdir(ORIGINAL_DIR)
|
|
||||||
sys.exit(error_number)
|
|
||||||
|
|
||||||
def get_env_var_and_test_validity(env_var_name: str, default_env_var_value: str):
|
|
||||||
if not is_env_var_set(env_var_name):
|
|
||||||
say(f"{env_var_name} not defined. Using default value.")
|
|
||||||
path = default_env_var_value
|
|
||||||
else:
|
|
||||||
path = os.getenv(env_var_name)
|
|
||||||
say(f"{env_var_name} set to '{path}'")
|
|
||||||
if not os.path.exists(path):
|
|
||||||
say_error(f"{env_var_name} does not exist. Exiting")
|
|
||||||
exit_on_error(EXIT_CODE_FAILURE_BUILD_LOCATION)
|
|
||||||
say(f"{env_var_name} exists.")
|
|
||||||
return path
|
|
||||||
|
|
||||||
def is_env_var_set(env_var_name: str):
|
|
||||||
var = os.getenv(env_var_name)
|
|
||||||
if var is None:
|
|
||||||
return False
|
|
||||||
return True
|
|
||||||
|
|
||||||
def run_process(process: list):
|
|
||||||
proc = subprocess.run(process,
|
|
||||||
stdout=subprocess.PIPE,
|
|
||||||
stderr=subprocess.PIPE)
|
|
||||||
print("STDOUT:")
|
|
||||||
print(proc.stdout.decode("utf-8"))
|
|
||||||
print("STDERR:")
|
|
||||||
print(proc.stderr.decode("utf-8"))
|
|
||||||
if proc.returncode != 0:
|
|
||||||
exit_on_error(proc.returncode)
|
|
||||||
|
|
||||||
def add_line_to_run_bat_file(line: str):
|
|
||||||
global bat_file_contents
|
|
||||||
bat_file_contents += line + "\n"
|
|
||||||
|
|
||||||
def add_error_handling_line_to_bat_file():
|
|
||||||
global bat_file_contents
|
|
||||||
bat_file_contents += "IF ERRORLEVEL 1 EXIT /B " + str(EXIT_CODE_FAILURE_BUILD_APP) + "\n"
|
|
||||||
|
|
||||||
def create_batch_file():
|
|
||||||
file = open("test.bat", "w+")
|
|
||||||
file.write(bat_file_contents)
|
|
||||||
file.close()
|
|
||||||
|
|
||||||
###### End of utility funcs
|
|
||||||
|
|
||||||
def build():
|
def build():
|
||||||
#Mutable global variables are bad, mmkay
|
set_current_activity("BUILD")
|
||||||
global current_activity
|
set_original_folder(os.getcwd())
|
||||||
current_activity = "BUILD"
|
set_project_folder(os.path.abspath(os.path.join(ORIGINAL_DIR , "..\..")))
|
||||||
|
|
||||||
COMPILE_MODE = ""
|
COMPILE_MODE = ""
|
||||||
COMPILER = ""
|
COMPILER = ""
|
||||||
|
|
||||||
say("Testing if all required build environment variables are set:")
|
say("Testing if all required build environment variables are set:")
|
||||||
QT_LOC = get_env_var_and_test_validity(QT_LOC_VAR_NAME, QT_LOC_DEFAULT)
|
QT_LOC = get_required_env_var_path(QT_LOC_VAR_NAME, QT_LOC_DEFAULT)
|
||||||
VS_LOC = get_env_var_and_test_validity(VS_LOC_VAR_NAME, VS_LOC_DEFAULT)
|
VS_LOC = get_required_env_var_path(VS_LOC_VAR_NAME, VS_LOC_DEFAULT)
|
||||||
|
|
||||||
if is_env_var_set("BUILD_CLANG"):
|
if is_env_var_set(BUILD_CLANG_VAR_NAME):
|
||||||
say("BUILD_CLANG defined. Building for win32-clang-msvc.")
|
say(f"{BUILD_CLANG_VAR_NAME} defined. Building for win32-clang-msvc.")
|
||||||
get_env_var_and_test_validity(LLVM_LOC_VAR_NAME, LLVM_LOC_DEFAULT)
|
get_required_env_var_path(LLVM_LOC_VAR_NAME, LLVM_LOC_DEFAULT)
|
||||||
COMPILER = "win32-clang-msvc"
|
COMPILER = "win32-clang-msvc"
|
||||||
else:
|
else:
|
||||||
say("BUILD_CLANG not defined. Building for msvc.")
|
say(f"{BUILD_CLANG_VAR_NAME} not defined. Building for msvc.")
|
||||||
COMPILER = "win32-msvc"
|
COMPILER = "win32-msvc"
|
||||||
|
|
||||||
say("All required build environment values are set.")
|
say("All required build environment values are set.")
|
||||||
|
|
||||||
say("Testing optional build environment variables:")
|
#Otherwise qmake gets confused
|
||||||
|
add_line_to_run_bat_file("cd " + get_project_dir())
|
||||||
|
|
||||||
add_line_to_run_bat_file("cd " + PROJECT_DIR)
|
|
||||||
|
|
||||||
#SET UP VS
|
|
||||||
say("Adding 'vcvarsall.bat' to batch file.")
|
say("Adding 'vcvarsall.bat' to batch file.")
|
||||||
add_line_to_run_bat_file("@ECHO Setting up environment with Visual Studio 'vcvarsall.bat':")
|
add_line_to_run_bat_file("@ECHO Setting up environment with Visual Studio 'vcvarsall.bat':")
|
||||||
add_line_to_run_bat_file("call " + '"' + VS_LOC + '"' + " " + PLATFORM_TARGET)
|
add_line_to_run_bat_file("call " + '"' + VS_LOC + '"' + " " + PLATFORM_TARGET)
|
||||||
@@ -125,21 +35,21 @@ def build():
|
|||||||
|
|
||||||
QMAKE_LOC = QT_LOC + r"\qmake.exe"
|
QMAKE_LOC = QT_LOC + r"\qmake.exe"
|
||||||
|
|
||||||
if is_env_var_set("BUILD_VSPROJ"):
|
if is_env_var_set(BUILD_VSPROJ_VAR_NAME):
|
||||||
say("BUILD_VSPROJ defined. Building Visual Studio project files.")
|
say(f"{BUILD_VSPROJ_VAR_NAME} defined. Building Visual Studio project files.")
|
||||||
add_line_to_run_bat_file("@ECHO Running Visual Studio project file building:")
|
add_line_to_run_bat_file("@ECHO Running Visual Studio project file building:")
|
||||||
add_line_to_run_bat_file('"' + QMAKE_LOC + '"' + " -tp vc")
|
add_line_to_run_bat_file('"' + QMAKE_LOC + '"' + " -tp vc")
|
||||||
add_error_handling_line_to_bat_file()
|
add_error_handling_line_to_bat_file()
|
||||||
add_line_to_run_bat_file("@ECHO Done building Visual Studio project files.")
|
add_line_to_run_bat_file("@ECHO Done building Visual Studio project files.")
|
||||||
else:
|
else:
|
||||||
say("BUILD_VSPROJ not defined. Not building Visual Studio project files.")
|
say(f"{BUILD_VSPROJ_VAR_NAME} not defined. Not building Visual Studio project files.")
|
||||||
|
|
||||||
if is_env_var_set("BUILD_DEBUG"):
|
if is_env_var_set(BUILD_DEBUG_VAR_NAME):
|
||||||
COMPILE_MODE = "debug"
|
COMPILE_MODE = "debug"
|
||||||
say("BUILD_DEBUG defined. Building '{COMPILE_MODE}' version.")
|
say(f"{BUILD_DEBUG_VAR_NAME} defined. Building '{COMPILE_MODE}' version.")
|
||||||
else:
|
else:
|
||||||
COMPILE_MODE = "release"
|
COMPILE_MODE = "release"
|
||||||
say("BUILD_DEBUG not defined. Building '{COMPILE_MODE}' version.")
|
say(f"{BUILD_DEBUG_VAR_NAME} not defined. Building '{COMPILE_MODE}' version.")
|
||||||
|
|
||||||
add_line_to_run_bat_file("@ECHO Running qmake:")
|
add_line_to_run_bat_file("@ECHO Running qmake:")
|
||||||
add_line_to_run_bat_file('"' + QMAKE_LOC + '"' + " -spec " + COMPILER + " CONFIG+=X86_64 " + "CONFIG+=" + COMPILE_MODE)
|
add_line_to_run_bat_file('"' + QMAKE_LOC + '"' + " -spec " + COMPILER + " CONFIG+=X86_64 " + "CONFIG+=" + COMPILE_MODE)
|
||||||
@@ -169,12 +79,13 @@ def build():
|
|||||||
add_line_to_run_bat_file("@ECHO nmake done.")
|
add_line_to_run_bat_file("@ECHO nmake done.")
|
||||||
say("nmake added to batch file.")
|
say("nmake added to batch file.")
|
||||||
|
|
||||||
create_and_run_batch_file()
|
add_line_to_run_bat_file("cd " + get_original_dir())
|
||||||
|
|
||||||
|
create_batch_file()
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
build()
|
build()
|
||||||
#parser = argparse.ArgumentParser(description='Builds OpenVR Advanced Settings on Windows.')
|
|
||||||
#parser.add_argument('action', type=str, help='action to perform. Can be build, deploy, package or format')
|
|
||||||
#args = parser.parse_args()
|
|
||||||
#if args.action == "build":
|
|
||||||
# build()
|
|
||||||
|
|||||||
@@ -0,0 +1,133 @@
|
|||||||
|
"""
|
||||||
|
Utility functions for building OpenVR Advanced Settings.
|
||||||
|
"""
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import argparse
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
#Const globals
|
||||||
|
EXIT_CODE_SUCCESS = 0
|
||||||
|
EXIT_CODE_FAILURE_BUILD_APP = 1
|
||||||
|
EXIT_CODE_FAILURE_BUILD_LOCATION = 2
|
||||||
|
|
||||||
|
QT_LOC_VAR_NAME = "QT_LOC"
|
||||||
|
VS_LOC_VAR_NAME = "VS_LOC"
|
||||||
|
JOM_LOC_VAR_NAME = "JOM_LOC"
|
||||||
|
ZIP_LOC_VAR_NAME = "ZIP_LOC"
|
||||||
|
NSIS_LOC_VAR_NAME = "NSIS_LOC"
|
||||||
|
LLVM_LOC_VAR_NAME = "LLVM_LOC"
|
||||||
|
|
||||||
|
QT_LOC_DEFAULT = r"C:\Qt\5.11.1\msvc2017_64\bin\""
|
||||||
|
VS_LOC_DEFAULT = r"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat"
|
||||||
|
JOM_LOC_DEFAULT = r"C:\Qt\Tools\QtCreator\bin\jom.exe"
|
||||||
|
ZIP_LOC_DEFAULT = r"C:\Program Files\7-Zip\7z.exe"
|
||||||
|
NSIS_LOC_DEFAULT = r"C:\Program Files (x86)\NSIS\""
|
||||||
|
LLVM_LOC_DEFAULT = r"C:\Program Files\LLVM\bin\""
|
||||||
|
|
||||||
|
BUILD_CLANG_VAR_NAME = "BUILD_CLANG"
|
||||||
|
BUILD_VSPROJ_VAR_NAME = "BUILD_VSPROJ"
|
||||||
|
BUILD_DEBUG_VAR_NAME = "BUILD_DEBUG"
|
||||||
|
|
||||||
|
PLATFORM_TARGET = "AMD64"
|
||||||
|
|
||||||
|
#Mutable globals
|
||||||
|
ORIGINAL_DIR = ""
|
||||||
|
PROJECT_DIR = ""
|
||||||
|
|
||||||
|
current_activity = ""
|
||||||
|
|
||||||
|
bat_file_contents = ""
|
||||||
|
|
||||||
|
def set_current_activity(activity: str):
|
||||||
|
global current_activity
|
||||||
|
current_activity = activity
|
||||||
|
|
||||||
|
def say(message: str):
|
||||||
|
global current_activity
|
||||||
|
print(current_activity + ": " + message)
|
||||||
|
|
||||||
|
def say_error(message: str):
|
||||||
|
global current_activity
|
||||||
|
print(current_activity + ": " + message)
|
||||||
|
|
||||||
|
def is_env_var_set(env_var_name: str):
|
||||||
|
var = os.getenv(env_var_name)
|
||||||
|
if var is None:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
def add_line_to_run_bat_file(line: str):
|
||||||
|
global bat_file_contents
|
||||||
|
bat_file_contents += line + "\n"
|
||||||
|
|
||||||
|
def add_error_handling_line_to_bat_file():
|
||||||
|
global bat_file_contents
|
||||||
|
bat_file_contents += "IF ERRORLEVEL 1 EXIT /B " + str(EXIT_CODE_FAILURE_BUILD_APP) + "\n"
|
||||||
|
|
||||||
|
def get_required_env_var_path(env_var_name: str, default_env_var_value: str):
|
||||||
|
if not is_env_var_set(env_var_name):
|
||||||
|
say(f"{env_var_name} not defined. Using default value.")
|
||||||
|
path = default_env_var_value.replace('"', '')
|
||||||
|
else:
|
||||||
|
path = os.getenv(env_var_name).replace('"', '')
|
||||||
|
say(f"{env_var_name} set to '{path}'")
|
||||||
|
if not os.path.exists(path):
|
||||||
|
say_error(f"{env_var_name} does not exist. Exiting")
|
||||||
|
exit_on_error(EXIT_CODE_FAILURE_BUILD_LOCATION)
|
||||||
|
say(f"{env_var_name} exists.")
|
||||||
|
return path
|
||||||
|
|
||||||
|
def create_batch_file():
|
||||||
|
file = open("test.bat", "w+")
|
||||||
|
file.write(bat_file_contents)
|
||||||
|
file.close()
|
||||||
|
|
||||||
|
def exit_on_error(error_number):
|
||||||
|
sys.exit(error_number)
|
||||||
|
|
||||||
|
def set_original_folder(path):
|
||||||
|
global ORIGINAL_DIR
|
||||||
|
ORIGINAL_DIR = path
|
||||||
|
|
||||||
|
def set_project_folder(path):
|
||||||
|
global PROJECT_DIR
|
||||||
|
PROJECT_DIR = path
|
||||||
|
|
||||||
|
def get_project_dir():
|
||||||
|
return PROJECT_DIR
|
||||||
|
|
||||||
|
def get_original_dir():
|
||||||
|
return ORIGINAL_DIR
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user