From 2e2dd848f72dfd48801667082ad87b0a0c57c09a Mon Sep 17 00:00:00 2001 From: Jimmy Tremblay-Bernier Date: Tue, 26 Nov 2024 22:09:39 -0500 Subject: [PATCH] CONGE-2 MADE THE MAC COMPILATION WORK --- ConjureEngine/src/ConjureEngine/Window.cpp | 2 +- Demo1/CMakeLists.txt | 23 +++++++++++++++---- Demo1/CompileShaders.py | 26 ++++++++++++---------- 3 files changed, 34 insertions(+), 17 deletions(-) diff --git a/ConjureEngine/src/ConjureEngine/Window.cpp b/ConjureEngine/src/ConjureEngine/Window.cpp index e678e6f..a927927 100644 --- a/ConjureEngine/src/ConjureEngine/Window.cpp +++ b/ConjureEngine/src/ConjureEngine/Window.cpp @@ -22,7 +22,7 @@ namespace ConjureEngine { std::string error = SDL_GetError(); if(!error.empty()) { - SDL_Log("Cleaned up with errors: %s", error); + SDL_Log("Cleaned up with errors: %s", error.c_str()); } } diff --git a/Demo1/CMakeLists.txt b/Demo1/CMakeLists.txt index d39fedd..a7bb35f 100644 --- a/Demo1/CMakeLists.txt +++ b/Demo1/CMakeLists.txt @@ -5,19 +5,34 @@ set(CMAKE_CXX_STANDARD 20) find_package(Python3 REQUIRED COMPONENTS Interpreter) +set(SHADER_FILES + src/Shaders/Test.frag + src/Shaders/Test.vert +) -add_executable(${PROJECT_NAME} src/main.cpp +add_executable(${PROJECT_NAME} + src/main.cpp src/Demo1.cpp src/Demo1.h ) -# SHADERS +# STAMP FILE THAT TRACK THE CHANGES IN SHADERS +set(OUTPUT_SHADER_STAMP "${CMAKE_CURRENT_SOURCE_DIR}/src/Shaders/shaders.stamp") + +# COMPILE SHADERS USING PYTHON add_custom_command( - TARGET ${PROJECT_NAME} - COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/CompileShaders.py ${CMAKE_CURRENT_SOURCE_DIR}/src/Shaders + OUTPUT ${OUTPUT_SHADER_STAMP} + COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/CompileShaders.py ${CMAKE_CURRENT_SOURCE_DIR}/src/Shaders ${CMAKE_CURRENT_SOURCE_DIR} + DEPENDS ${SHADER_FILES} COMMENT "Compiling shaders" ) +# CREATE CUSTOM TARGET THAT LINK THE COMMAND TO THE PROJECT +add_custom_target(shader_compilation DEPENDS ${OUTPUT_SHADER_STAMP}) + +# ADD THE CUSTOM TARGET AS A DEPENDENCY +add_dependencies(${PROJECT_NAME} shader_compilation) + target_link_directories(${PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/ConjureEngine) find_package(SDL2 REQUIRED) diff --git a/Demo1/CompileShaders.py b/Demo1/CompileShaders.py index d5c49bc..3ad4277 100644 --- a/Demo1/CompileShaders.py +++ b/Demo1/CompileShaders.py @@ -7,24 +7,25 @@ os.chdir(sys.argv[1]) # Configure logging logging.basicConfig( - filename=os.path.join("D:/Dev/ETS/CONJURE/conjure-engine/Demo1", "CompileShaders.log"), # Log file name + filename=os.path.join(sys.argv[2], "CompileShaders.log"), # Log file name filemode="w", # Append mode (use "w" for overwrite) format="%(asctime)s - %(levelname)s - %(message)s", # Log format level=logging.INFO # Logging level ) - -SHADERS_PATH = os.path.join(os.getcwd()) -GLSLC_PATH = os.path.join(os.environ.get("VULKAN_SDK"), "bin", "glslc") - def filterFunc(fileName): - logging.info(fileName) - name, ext = fileName.split(".") - return ext != "spv" + params = fileName.split(".") + return params[len(params) - 1] != "spv" def __main__(): - logging.info("SHADER PATH: " + SHADERS_PATH) - logging.info("GLSLC PATH:" + GLSLC_PATH) + SHADERS_PATH = os.path.join(os.getcwd()) + if os.name == "nt": + GLSLC_PATH = os.path.join(os.environ.get("VULKAN_SDK"), "bin", "glslc") + else: + GLSLC_PATH = "/usr/local/bin/glslc" + + logging.info(str.join(" ", ["SHADER PATH:", SHADERS_PATH])) + logging.info(str.join(" ", ["GLSLC PATH:", GLSLC_PATH])) shaders = filter(filterFunc, os.listdir(SHADERS_PATH)) for shader in shaders: @@ -37,7 +38,8 @@ def __main__(): os.path.join(SHADERS_PATH, name + "." + ext + ".spv") ] - logging.info(command + " " + str.join(" ", args)) - subprocess.run(command + " " + str.join(" ", args)) + logging.info(str.join(" ", ["Compiling:", shader])) + logging.info(str.join(" ", [command] + args)) + subprocess.Popen([command] + args) if __name__ == "__main__": __main__() \ No newline at end of file