build: Fix linux/windows build in single directory
authorNathaniel Cesario <nathaniel@lunarg.com>
Wed, 23 Sep 2020 23:46:04 +0000 (17:46 -0600)
committerncesario-lunarg <71668273+ncesario-lunarg@users.noreply.github.com>
Tue, 29 Sep 2020 21:04:56 +0000 (15:04 -0600)
Allows a single worktree to be used by multiple platforms for builds.

Change-Id: I5078eaee6f62757ebb431fdc22405cab77d2356e

cube/CMakeLists.txt
scripts/fetch_glslangvalidator.py

index b3fce38..53c7f2b 100644 (file)
@@ -38,7 +38,14 @@ else()
     elseif(UNIX AND NOT APPLE) # i.e. Linux
         execute_process(COMMAND ${PYTHON_EXECUTABLE} ${SCRIPTS_DIR}/fetch_glslangvalidator.py glslang-master-linux-Release.zip)
     endif()
-    find_program(GLSLANG_VALIDATOR NAMES ${GLSLANG_VALIDATOR_NAME} HINTS "${PROJECT_SOURCE_DIR}/glslang/bin")
+    if (WIN32)
+        set(PLATFORM_DIR "${PROJECT_SOURCE_DIR}/glslang/windows/bin")
+    elseif(APPLE)
+        set(PLATFORM_DIR "${PROJECT_SOURCE_DIR}/glslang/darwin/bin")
+    else()
+        set(PLATFORM_DIR "${PROJECT_SOURCE_DIR}/glslang/linux/bin")
+    endif()
+    find_program(GLSLANG_VALIDATOR NAMES ${GLSLANG_VALIDATOR_NAME} HINTS ${PLATFORM_DIR})
 endif()
 
 if(UNIX AND NOT APPLE) # i.e. Linux
index 8be68e8..936def8 100755 (executable)
@@ -32,11 +32,14 @@ import ssl
 import subprocess
 import urllib.request
 import zipfile
+import platform
 
 SCRIPTS_DIR = os.path.dirname(os.path.abspath(__file__))
 REPO_DIR = os.path.join(SCRIPTS_DIR, '..')
 GLSLANG_URL = "https://github.com/KhronosGroup/glslang/releases/download/7.9.2888"
 
+def platformDir(): return platform.system().lower()
+
 if __name__ == '__main__':
     if len(sys.argv) != 2:
         print("ERROR -- must include a single glslang release zipfile name argument")
@@ -45,19 +48,18 @@ if __name__ == '__main__':
     GLSLANG_FILENAME = sys.argv[1]
     GLSLANG_COMPLETE_URL = GLSLANG_URL + "/" + GLSLANG_FILENAME
     GLSLANG_OUTFILENAME = os.path.join(REPO_DIR, "glslang", GLSLANG_FILENAME)
-    GLSLANG_VALIDATOR_PATH = os.path.join(REPO_DIR, "glslang", "bin")
-    GLSLANG_VALIDATOR_FULL_PATH = os.path.join(REPO_DIR, "glslang", "bin", "glslangValidator")
-    GLSLANG_DIR = os.path.join(REPO_DIR, "glslang")
+    GLSLANG_DIR = os.path.join(REPO_DIR, "glslang", platformDir())
+    GLSLANG_VALIDATOR_PATH = os.path.join(GLSLANG_DIR, "bin")
+    GLSLANG_VALIDATOR_FULL_PATH = os.path.join(GLSLANG_VALIDATOR_PATH, "glslangValidator")
+    if platform.system() == 'Windows':
+        GLSLANG_VALIDATOR_FULL_PATH = GLSLANG_VALIDATOR_FULL_PATH + '.exe'
 
     if os.path.isdir(GLSLANG_DIR):
-        if os.path.isdir(GLSLANG_VALIDATOR_PATH):
-            dir_contents = os.listdir(GLSLANG_VALIDATOR_PATH)
-            for afile in dir_contents:
-                if "glslangValidator" in afile:
-                    print("   Using glslangValidator at %s" % GLSLANG_VALIDATOR_PATH)
-                    sys.exit();
+        if os.path.exists(GLSLANG_VALIDATOR_FULL_PATH):
+            print("   Using glslangValidator at %s" % GLSLANG_VALIDATOR_PATH)
+            sys.exit()
     else:
-        os.mkdir(GLSLANG_DIR)
+        os.makedirs(GLSLANG_DIR)
     print("   Downloading glslangValidator binary from glslang releases dir")
     sys.stdout.flush()