CMake: Collapse into a single library all the libraries under the glslang directory...
[platform/upstream/glslang.git] / glslang / CMakeLists.txt
1 cmake_minimum_required(VERSION 2.8)\r
2 \r
3 include_directories(MachineIndependent ../OGLCompilersDLL ${CMAKE_CURRENT_BINARY_DIR})\r
4 if(WIN32)\r
5     add_subdirectory(OSDependent/Windows)\r
6     include_directories(${include_directories} OSDependent/Windows)\r
7 elseif(UNIX)\r
8     add_subdirectory(OSDependent/Linux)\r
9     include_directories(${include_directories} OSDependent/Linux)\r
10 else(WIN32)\r
11     message("unkown platform")\r
12 endif(WIN32)\r
13 \r
14 set(SOURCES\r
15     MachineIndependent/glslang.y\r
16     MachineIndependent/Constant.cpp\r
17     MachineIndependent/InfoSink.cpp\r
18     MachineIndependent/Initialize.cpp\r
19     MachineIndependent/IntermTraverse.cpp\r
20     MachineIndependent/Intermediate.cpp\r
21     MachineIndependent/ParseHelper.cpp\r
22     MachineIndependent/PoolAlloc.cpp\r
23     MachineIndependent/RemoveTree.cpp\r
24     MachineIndependent/Scan.cpp\r
25     MachineIndependent/ShaderLang.cpp\r
26     MachineIndependent/SymbolTable.cpp\r
27     MachineIndependent/Versions.cpp\r
28     MachineIndependent/intermOut.cpp\r
29     MachineIndependent/limits.cpp\r
30     MachineIndependent/linkValidate.cpp\r
31     MachineIndependent/parseConst.cpp\r
32     MachineIndependent/reflection.cpp\r
33     MachineIndependent/preprocessor/Pp.cpp\r
34     MachineIndependent/preprocessor/PpAtom.cpp\r
35     MachineIndependent/preprocessor/PpContext.cpp\r
36     MachineIndependent/preprocessor/PpMemory.cpp\r
37     MachineIndependent/preprocessor/PpScanner.cpp\r
38     MachineIndependent/preprocessor/PpSymbols.cpp\r
39     MachineIndependent/preprocessor/PpTokens.cpp\r
40     GenericCodeGen/CodeGen.cpp\r
41     GenericCodeGen/Link.cpp)\r
42 \r
43 set(HEADERS\r
44     Public/ShaderLang.h\r
45     Include/BaseTypes.h\r
46     Include/Common.h\r
47     Include/ConstantUnion.h\r
48     Include/InfoSink.h\r
49     Include/InitializeGlobals.h\r
50     Include/intermediate.h\r
51     Include/PoolAlloc.h\r
52     Include/ResourceLimits.h\r
53     Include/revision.h\r
54     Include/ShHandle.h\r
55     Include/Types.h\r
56     MachineIndependent/gl_types.h\r
57     MachineIndependent/Initialize.h\r
58     MachineIndependent/localintermediate.h\r
59     MachineIndependent/ParseHelper.h\r
60     MachineIndependent/reflection.h\r
61     MachineIndependent/RemoveTree.h\r
62     MachineIndependent/Scan.h\r
63     MachineIndependent/ScanContext.h\r
64     MachineIndependent/SymbolTable.h\r
65     MachineIndependent/unistd.h\r
66     MachineIndependent/Versions.h\r
67     MachineIndependent/preprocessor/PpContext.h\r
68     MachineIndependent/preprocessor/PpTokens.h)\r
69 \r
70 find_package(BISON)\r
71 if(BISON_FOUND)\r
72     message("bison found")\r
73     BISON_TARGET(GLSLParser glslang.y ${CMAKE_CURRENT_BINARY_DIR}/gen_glslang_tab.cpp\r
74                  COMPILE_FLAGS\r
75                  "--defines=${CMAKE_CURRENT_BINARY_DIR}/glslang_tab.cpp.h")\r
76 else(BISON_FOUND)\r
77     message("using custom command for bison on glslang.y")\r
78     add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/glslang_tab.cpp ${CMAKE_CURRENT_BINARY_DIR}/glslang_tab.cpp.h\r
79                        COMMAND ../tools/bison.exe --defines=${CMAKE_CURRENT_BINARY_DIR}/glslang_tab.cpp.h -t MachineIndependent/glslang.y -o ${CMAKE_CURRENT_BINARY_DIR}/glslang_tab.cpp\r
80                        MAIN_DEPENDENCY MachineIndependent/glslang.y\r
81                        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})\r
82     set(BISON_GLSLParser_OUTPUT_SOURCE ${CMAKE_CURRENT_BINARY_DIR}/glslang_tab.cpp)\r
83 endif(BISON_FOUND)\r
84 \r
85 add_library(glslang STATIC ${BISON_GLSLParser_OUTPUT_SOURCE} ${SOURCES} ${HEADERS})\r
86 \r
87 if(WIN32)\r
88     source_group("Public" REGULAR_EXPRESSION "Public/*")\r
89     source_group("MachineIndependent" REGULAR_EXPRESSION "MachineIndependent/[^/]*")\r
90     source_group("Generated Files" FILES ${CMAKE_CURRENT_BINARY_DIR}/glslang_tab.cpp ${CMAKE_CURRENT_BINARY_DIR}/glslang_tab.cpp.h)\r
91     source_group("Include" REGULAR_EXPRESSION "Include/[^/]*")\r
92     source_group("GenericCodeGen" REGULAR_EXPRESSION "GenericCodeGen/*")\r
93     source_group("MachineIndependent\\Preprocessor" REGULAR_EXPRESSION "MachineIndependent/preprocessor/*")\r
94 endif(WIN32)\r
95 \r
96 install(TARGETS glslang \r
97         ARCHIVE DESTINATION lib)\r