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)