From d18e2d8adc3a6a0d0246b421bd36f63311801f98 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Tue, 11 Mar 2014 02:10:26 +0000 Subject: [PATCH] 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 --- CMakeLists.txt | 10 +- OGLCompilersDLL/CMakeLists.txt | 13 ++- StandAlone/CMakeLists.txt | 18 +++- Test/glslangValidator | 2 + Test/runtests | 2 +- glslang/MachineIndependent/CMakeLists.txt | 93 +++++++++++++------ .../preprocessor/CMakeLists.txt | 32 ++++--- glslang/OSDependent/Linux/CMakeLists.txt | 6 +- glslang/OSDependent/Windows/CMakeLists.txt | 8 ++ 9 files changed, 134 insertions(+), 50 deletions(-) create mode 100755 Test/glslangValidator create mode 100644 glslang/OSDependent/Windows/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 91c9d8a697..1bbd8b8a9f 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 e61ce7312d..ad38f7a8dc 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 98f3816586..dc68f105e9 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 0000000000..856aa1a995 --- /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 582695107e..a93444c0f1 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 dfaef07edb..de38d6ec3b 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 c13a19eb34..71ff687b87 100644 --- a/glslang/MachineIndependent/preprocessor/CMakeLists.txt +++ b/glslang/MachineIndependent/preprocessor/CMakeLists.txt @@ -1,14 +1,20 @@ -cmake_minimum_required(VERSION 2.8) - -include_directories(. ..) -set(SOURCES - Pp.cpp - PpAtom.cpp - PpContext.cpp - PpMemory.cpp - PpScanner.cpp - PpSymbols.cpp - PpTokens.cpp) - -add_library(Preprocessor STATIC ${SOURCES}) +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}) +install(TARGETS Preprocessor + ARCHIVE DESTINATION lib) diff --git a/glslang/OSDependent/Linux/CMakeLists.txt b/glslang/OSDependent/Linux/CMakeLists.txt index 1542de8cf1..13b53a163d 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 0000000000..1cedd8a918 --- /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)