Add CMake support for Visual Studio and installation, with an expected "install" for CMAKE_INSTALL_PREFIX, and updated test scripts to consume the CMake installation.

git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@25791 e7fa87d3-cd2b-0410-9028-fcbf551c1848
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 91c9d8a..1bbd8b8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,9 +1,17 @@
 cmake_minimum_required(VERSION 2.8)
 
+project(glslang)
+
 add_subdirectory(glslang/MachineIndependent)
 add_subdirectory(glslang/MachineIndependent/preprocessor)
 add_subdirectory(glslang/GenericCodeGen)
-add_subdirectory(glslang/OSDependent/Linux)
 add_subdirectory(OGLCompilersDLL)
 add_subdirectory(StandAlone)
 
+if(WIN32)
+    add_subdirectory(glslang/OSDependent/Windows)
+elseif(UNIX)
+    add_subdirectory(glslang/OSDependent/Linux)
+else(WIN32)
+    message("unkown platform")
+endif(WIN32)
diff --git a/OGLCompilersDLL/CMakeLists.txt b/OGLCompilersDLL/CMakeLists.txt
index e61ce73..ad38f7a 100644
--- a/OGLCompilersDLL/CMakeLists.txt
+++ b/OGLCompilersDLL/CMakeLists.txt
@@ -1,6 +1,15 @@
 cmake_minimum_required(VERSION 2.8)
 
-include_directories(. ../glslang ../glslang/OSDependent/Linux)
+include_directories(. ../glslang)
+if(WIN32)
+    include_directories(${include_directories} ../glslang/OSDependent/Windows)
+elseif(UNIX)
+    include_directories(${include_directories} ../glslang/OSDependent/Linux)
+else(WIN32)
+    message("unkown platform")
+endif(WIN32)
 
-add_library(OGLCompiler STATIC  InitializeDll.cpp)
+add_library(OGLCompiler STATIC  InitializeDll.cpp InitializeDll.h)
 
+install(TARGETS OGLCompiler 

+        ARCHIVE DESTINATION lib)

diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt
index 98f3816..dc68f10 100644
--- a/StandAlone/CMakeLists.txt
+++ b/StandAlone/CMakeLists.txt
@@ -1,13 +1,25 @@
 cmake_minimum_required(VERSION 2.8)
 
-include_directories(. ../glslang/OSDependent/Linux)
+include_directories(.)
+if(WIN32)
+    include_directories(${include_directories} ../glslang/OSDependent/Windows)
+elseif(UNIX)
+    include_directories(${include_directories} ../glslang/OSDependent/Linux)
+else(WIN32)
+    message("unkown platform")
+endif(WIN32)
 
 add_executable(glslangValidator StandAlone.cpp)
+
 target_link_libraries(glslangValidator
                       glslang
                       GenericCodeGen
                       OSDependent
                       Preprocessor
-                      OGLCompiler
-                      pthread)
+                      OGLCompiler)
+if(UNIX)
+    target_link_libraries(${target_link_libraries} pthread)
+endif(UNIX)
 
+install(TARGETS glslangValidator
+        RUNTIME DESTINATION bin)
diff --git a/Test/glslangValidator b/Test/glslangValidator
new file mode 100755
index 0000000..856aa1a
--- /dev/null
+++ b/Test/glslangValidator
@@ -0,0 +1,2 @@
+#!/usr/bin/env bash
+../build/install/bin/glslangValidator $*
diff --git a/Test/runtests b/Test/runtests
index 5826951..a93444c 100755
--- a/Test/runtests
+++ b/Test/runtests
@@ -2,7 +2,7 @@
 
 TARGETDIR=localResults
 BASEDIR=baseResults
-EXE=./glslangValidator
+EXE=../build/install/bin/glslangValidator
 mkdir -p localResults
 
 #
diff --git a/glslang/MachineIndependent/CMakeLists.txt b/glslang/MachineIndependent/CMakeLists.txt
index dfaef07..de38d6e 100644
--- a/glslang/MachineIndependent/CMakeLists.txt
+++ b/glslang/MachineIndependent/CMakeLists.txt
@@ -1,29 +1,64 @@
-cmake_minimum_required(VERSION 2.8)
-
-include_directories(. ../OSDependent/Linux ../../OGLCompilersDLL ${CMAKE_CURRENT_BINARY_DIR})
-set(SOURCES
-    Constant.cpp
-    InfoSink.cpp
-    Initialize.cpp
-    IntermTraverse.cpp
-    Intermediate.cpp
-    ParseHelper.cpp
-    PoolAlloc.cpp
-    RemoveTree.cpp
-    Scan.cpp
-    ShaderLang.cpp
-    SymbolTable.cpp
-    Versions.cpp
-    intermOut.cpp
-    limits.cpp
-    linkValidate.cpp
-    parseConst.cpp
-    reflection.cpp)
-
-find_package(BISON)
-BISON_TARGET(GLSLParser glslang.y ${CMAKE_CURRENT_BINARY_DIR}/gen_glslang_tab.cpp
-             COMPILE_FLAGS
-			 "--defines=${CMAKE_CURRENT_BINARY_DIR}/glslang_tab.cpp.h")
-
-add_library(glslang STATIC ${BISON_GLSLParser_OUTPUT_SOURCE} ${SOURCES})
-
+cmake_minimum_required(VERSION 2.8)

+

+include_directories(. ../../OGLCompilersDLL ${CMAKE_CURRENT_BINARY_DIR})

+if(WIN32)

+    include_directories(${include_directories} ../OSDependent/Windows)

+elseif(UNIX)

+    include_directories(${include_directories} ../OSDependent/Linux)

+else(WIN32)

+    message("unkown platform")

+endif(WIN32)

+

+set(SOURCES

+    Constant.cpp

+    InfoSink.cpp

+    Initialize.cpp

+    IntermTraverse.cpp

+    Intermediate.cpp

+    ParseHelper.cpp

+    PoolAlloc.cpp

+    RemoveTree.cpp

+    Scan.cpp

+    ShaderLang.cpp

+    SymbolTable.cpp

+    Versions.cpp

+    intermOut.cpp

+    limits.cpp

+    linkValidate.cpp

+    parseConst.cpp

+    reflection.cpp)

+

+set(HEADERS

+    ../Public/ShaderLang.h

+    gl_types.h

+    glslang_tab.cpp.h

+    Initialize.h

+    localintermediate.h

+    ParseHelper.h

+    reflection.h

+    RemoveTree.h

+    Scan.h

+    ScanContext.h

+    SymbolTable.h

+    unistd.h

+    Versions.h)

+

+find_package(BISON)

+if(BISON_FOUND)

+    message("bison found")

+    BISON_TARGET(GLSLParser glslang.y ${CMAKE_CURRENT_BINARY_DIR}/gen_glslang_tab.cpp

+                 COMPILE_FLAGS

+                 "--defines=${CMAKE_CURRENT_BINARY_DIR}/glslang_tab.cpp.h")

+else(BISON_FOUND)

+    message("using custom command for bison on glslang.y")

+    add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/glslang_tab.cpp ${CMAKE_CURRENT_BINARY_DIR}/glslang_tab.cpp.h

+                       COMMAND ../../tools/bison.exe --defines=${CMAKE_CURRENT_BINARY_DIR}/glslang_tab.cpp.h -t glslang.y -o ${CMAKE_CURRENT_BINARY_DIR}/glslang_tab.cpp

+                       MAIN_DEPENDENCY glslang.y

+                       WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})

+    set(BISON_GLSLParser_OUTPUT_SOURCE glslang_tab.cpp)

+endif(BISON_FOUND)

+

+add_library(glslang STATIC ${BISON_GLSLParser_OUTPUT_SOURCE} ${SOURCES} ${HEADERS})

+

+install(TARGETS glslang 

+        ARCHIVE DESTINATION lib)

diff --git a/glslang/MachineIndependent/preprocessor/CMakeLists.txt b/glslang/MachineIndependent/preprocessor/CMakeLists.txt
index c13a19e..71ff687 100644
--- a/glslang/MachineIndependent/preprocessor/CMakeLists.txt
+++ b/glslang/MachineIndependent/preprocessor/CMakeLists.txt
@@ -1,14 +1,20 @@
-cmake_minimum_required(VERSION 2.8)
+cmake_minimum_required(VERSION 2.8)

+

+include_directories(. ..)

+set(SOURCES 

+    Pp.cpp

+    PpAtom.cpp

+    PpContext.cpp

+    PpMemory.cpp

+    PpScanner.cpp

+    PpSymbols.cpp

+    PpTokens.cpp)

+

+set(HEADERS

+    PpContext.h

+    PpTokens.h)

+

+add_library(Preprocessor STATIC ${SOURCES} ${HEADERS})

 
-include_directories(. ..)
-set(SOURCES 
-    Pp.cpp
-    PpAtom.cpp
-    PpContext.cpp
-    PpMemory.cpp
-    PpScanner.cpp
-    PpSymbols.cpp
-    PpTokens.cpp)
-
-add_library(Preprocessor STATIC ${SOURCES})
-
+install(TARGETS Preprocessor

+        ARCHIVE DESTINATION lib)

diff --git a/glslang/OSDependent/Linux/CMakeLists.txt b/glslang/OSDependent/Linux/CMakeLists.txt
index 1542de8..13b53a1 100644
--- a/glslang/OSDependent/Linux/CMakeLists.txt
+++ b/glslang/OSDependent/Linux/CMakeLists.txt
@@ -1,6 +1,10 @@
+
+
 cmake_minimum_required(VERSION 2.8)
 
 include_directories(. ../../../OGLCompilersDLL)
 
-add_library(OSDependent STATIC ossource.cpp)
+add_library(OSDependent STATIC ossource.cpp osinclude.h)
 
+install(TARGETS OSDependent 

+        ARCHIVE DESTINATION lib)

diff --git a/glslang/OSDependent/Windows/CMakeLists.txt b/glslang/OSDependent/Windows/CMakeLists.txt
new file mode 100644
index 0000000..1cedd8a
--- /dev/null
+++ b/glslang/OSDependent/Windows/CMakeLists.txt
@@ -0,0 +1,8 @@
+cmake_minimum_required(VERSION 2.8)
+
+include_directories(. ../../../OGLCompilersDLL)
+
+add_library(OSDependent STATIC ossource.cpp osinclude.h)
+
+install(TARGETS OSDependent 

+        ARCHIVE DESTINATION lib)