From cfc69d95afed34e1ba1371df0ddb56f2f491a5cb Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Fri, 28 Apr 2017 22:04:24 -0600 Subject: [PATCH] Revert "Modernise CMake" --- CMakeLists.txt | 54 +++++++--------- External/CMakeLists.txt | 61 +++++++++---------- OGLCompilersDLL/CMakeLists.txt | 6 +- SPIRV/CMakeLists.txt | 8 +-- StandAlone/CMakeLists.txt | 14 +++-- glslang/CMakeLists.txt | 10 +-- glslang/OSDependent/Unix/CMakeLists.txt | 6 +- glslang/OSDependent/Windows/CMakeLists.txt | 8 +-- gtests/CMakeLists.txt | 98 +++++++++++++++--------------- hlsl/CMakeLists.txt | 6 +- 10 files changed, 130 insertions(+), 141 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0e5b8b3..32395c0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,11 +1,6 @@ -# increase to 3.1 once all major distributions -# include a version of CMake >= 3.1 -cmake_minimum_required(VERSION 2.8.12) +cmake_minimum_required(VERSION 2.8.11) set_property(GLOBAL PROPERTY USE_FOLDERS ON) -# Adhere to GNU filesystem layout conventions -include(GNUInstallDirs) - option(ENABLE_AMD_EXTENSIONS "Enables support of AMD-specific extensions" ON) option(ENABLE_GLSLANG_BINARIES "Builds glslangValidator and spirv-remap" ON) @@ -13,10 +8,11 @@ option(ENABLE_NV_EXTENSIONS "Enables support of Nvidia-specific extensions" ON) option(ENABLE_HLSL "Enables HLSL input support" ON) -project(glslang) +enable_testing() + +set(CMAKE_INSTALL_PREFIX "install" CACHE STRING "prefix") -# make testing optional -include(CTest) +project(glslang) if(ENABLE_AMD_EXTENSIONS) add_definitions(-DAMD_EXTENSIONS) @@ -37,39 +33,33 @@ if(WIN32) endif(MSVC) add_definitions(-DGLSLANG_OSINCLUDE_WIN32) elseif(UNIX) + add_definitions(-fPIC) add_definitions(-DGLSLANG_OSINCLUDE_UNIX) else(WIN32) message("unknown platform") endif(WIN32) -if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") - add_compile_options(-Wall -Wmaybe-uninitialized -Wuninitialized -Wunused -Wunused-local-typedefs - -Wunused-parameter -Wunused-value -Wunused-variable -Wunused-but-set-parameter -Wunused-but-set-variable) - add_compile_options(-Wno-reorder) # disable this from -Wall, since it happens all over. +if(CMAKE_COMPILER_IS_GNUCXX) + add_definitions(-Wall -Wmaybe-uninitialized -Wuninitialized -Wunused -Wunused-local-typedefs + -Wunused-parameter -Wunused-value -Wunused-variable -Wunused-but-set-parameter -Wunused-but-set-variable) + add_definitions(-Wno-reorder) # disable this from -Wall, since it happens all over. + add_definitions(-std=c++11) elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang") - add_compile_options(-Wall -Wuninitialized -Wunused -Wunused-local-typedefs - -Wunused-parameter -Wunused-value -Wunused-variable) - add_compile_options(-Wno-reorder) # disable this from -Wall, since it happens all over. -endif() - -# Request C++11 -if(${CMAKE_VERSION} VERSION_LESS 3.1) - # CMake versions before 3.1 do not understand CMAKE_CXX_STANDARD - # remove this block once CMake >=3.1 has fixated in the ecosystem - add_compile_options(-std=c++11) -else() - set(CMAKE_CXX_STANDARD 11) - set(CMAKE_CXX_STANDARD_REQUIRED ON) - set(CMAKE_CXX_EXTENSIONS OFF) + add_definitions(-Wall -Wuninitialized -Wunused -Wunused-local-typedefs + -Wunused-parameter -Wunused-value -Wunused-variable) + add_definitions(-Wno-reorder) # disable this from -Wall, since it happens all over. + add_definitions(-std=c++11) endif() function(glslang_set_link_args TARGET) # For MinGW compiles, statically link against the GCC and C++ runtimes. # This avoids the need to ship those runtimes as DLLs. - if(WIN32 AND ${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") - set_target_properties(${TARGET} PROPERTIES - LINK_FLAGS "-static -static-libgcc -static-libstdc++") - endif() + if(WIN32) + if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") + set_target_properties(${TARGET} PROPERTIES + LINK_FLAGS "-static -static-libgcc -static-libstdc++") + endif() + endif(WIN32) endfunction(glslang_set_link_args) # We depend on these for later projects, so they should come first. @@ -78,7 +68,7 @@ add_subdirectory(External) add_subdirectory(glslang) add_subdirectory(OGLCompilersDLL) if(ENABLE_GLSLANG_BINARIES) - add_subdirectory(StandAlone) + add_subdirectory(StandAlone) endif() add_subdirectory(SPIRV) if(ENABLE_HLSL) diff --git a/External/CMakeLists.txt b/External/CMakeLists.txt index 4f694ee..5180ea5 100644 --- a/External/CMakeLists.txt +++ b/External/CMakeLists.txt @@ -1,35 +1,34 @@ # Suppress all warnings from external projects. set_property(DIRECTORY APPEND PROPERTY COMPILE_OPTIONS -w) -if(BUILD_TESTING) - if(TARGET gmock) - message(STATUS "Google Mock already configured - use it") - elseif(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/googletest) - # We need to make sure Google Test does not mess up with the - # global CRT settings on Windows. - if(WIN32) - set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) - endif(WIN32) - add_subdirectory(googletest) - set(GTEST_TARGETS - gtest - gtest_main - gmock - gmock_main) - foreach(target ${GTEST_TARGETS}) - set_property(TARGET ${target} PROPERTY FOLDER gtest) - endforeach() - mark_as_advanced(gmock_build_tests - BUILD_GMOCK - BUILD_GTEST - BUILD_SHARED_LIBS - gtest_build_samples - gtest_build_tests - gtest_disable_pthreads - gtest_force_shared_crt - gtest_hide_internal_symbols) - else() - message(STATUS - "Google Mock was not found - tests based on that will not build") - endif() +if (TARGET gmock) + message(STATUS "Google Mock already configured - use it") +elseif(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/googletest) + # We need to make sure Google Test does not mess up with the + # global CRT settings on Windows. + if(WIN32) + set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) + endif(WIN32) + add_subdirectory(googletest) + set(GTEST_TARGETS + gtest + gtest_main + gmock + gmock_main + ) + foreach(target ${GTEST_TARGETS}) + set_property(TARGET ${target} PROPERTY FOLDER gtest) + endforeach() + mark_as_advanced(gmock_build_tests + BUILD_GMOCK + BUILD_GTEST + BUILD_SHARED_LIBS + gtest_build_samples + gtest_build_tests + gtest_disable_pthreads + gtest_force_shared_crt + gtest_hide_internal_symbols) +else() + message(STATUS + "Google Mock was not found - tests based on that will not build") endif() diff --git a/OGLCompilersDLL/CMakeLists.txt b/OGLCompilersDLL/CMakeLists.txt index 8edd143..4954db9 100644 --- a/OGLCompilersDLL/CMakeLists.txt +++ b/OGLCompilersDLL/CMakeLists.txt @@ -1,11 +1,11 @@ set(SOURCES InitializeDll.cpp InitializeDll.h) add_library(OGLCompiler STATIC ${SOURCES}) -set_property(TARGET OGLCompiler PROPERTY FOLDER glslang POSITION_INDEPENDENT_CODE ON) +set_property(TARGET OGLCompiler PROPERTY FOLDER glslang) if(WIN32) source_group("Source" FILES ${SOURCES}) endif(WIN32) -install(TARGETS OGLCompiler - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) +install(TARGETS OGLCompiler + ARCHIVE DESTINATION lib) diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt index 2ad86d6..aaf1178 100755 --- a/SPIRV/CMakeLists.txt +++ b/SPIRV/CMakeLists.txt @@ -40,11 +40,11 @@ if(ENABLE_NV_EXTENSIONS) endif(ENABLE_NV_EXTENSIONS) add_library(SPIRV STATIC ${SOURCES} ${HEADERS}) -set_property(TARGET SPIRV PROPERTY FOLDER glslang POSITION_INDEPENDENT_CODE ON) +set_property(TARGET SPIRV PROPERTY FOLDER glslang) target_link_libraries(SPIRV glslang) add_library(SPVRemapper STATIC ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS}) -set_property(TARGET SPVRemapper PROPERTY FOLDER glslang POSITION_INDEPENDENT_CODE ON) +set_property(TARGET SPVRemapper PROPERTY FOLDER glslang) if(WIN32) source_group("Source" FILES ${SOURCES} ${HEADERS}) @@ -52,6 +52,6 @@ if(WIN32) endif(WIN32) install(TARGETS SPIRV SPVRemapper - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + ARCHIVE DESTINATION lib) -install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/SPIRV/) +install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION include/SPIRV/) diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index f37fb0f..2a9a3c4 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -1,10 +1,12 @@ add_library(glslang-default-resource-limits - ${CMAKE_CURRENT_SOURCE_DIR}/ResourceLimits.cpp) -set_property(TARGET glslang-default-resource-limits PROPERTY FOLDER glslang POSITION_INDEPENDENT_CODE ON) + ${CMAKE_CURRENT_SOURCE_DIR}/ResourceLimits.cpp +) +set_property(TARGET glslang-default-resource-limits PROPERTY FOLDER glslang) target_include_directories(glslang-default-resource-limits - PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} - PUBLIC ${PROJECT_SOURCE_DIR}) + PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} + PUBLIC ${PROJECT_SOURCE_DIR} +) set(SOURCES StandAlone.cpp) set(REMAPPER_SOURCES spirv-remap.cpp) @@ -39,7 +41,7 @@ if(WIN32) endif(WIN32) install(TARGETS glslangValidator - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + RUNTIME DESTINATION bin) install(TARGETS spirv-remap - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + RUNTIME DESTINATION bin) diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index 8b9c2ad..dac8cb8 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -81,10 +81,10 @@ set(HEADERS # set(BISON_GLSLParser_OUTPUT_SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/MachineIndependent/glslang_tab.cpp) add_library(glslang STATIC ${BISON_GLSLParser_OUTPUT_SOURCE} ${SOURCES} ${HEADERS}) -set_property(TARGET glslang PROPERTY FOLDER glslang POSITION_INDEPENDENT_CODE ON) +set_property(TARGET glslang PROPERTY FOLDER glslang) target_link_libraries(glslang OGLCompiler OSDependent) if(ENABLE_HLSL) - target_link_libraries(glslang HLSL) + target_link_libraries(glslang HLSL) endif() if(WIN32) @@ -95,10 +95,10 @@ if(WIN32) source_group("MachineIndependent\\Preprocessor" REGULAR_EXPRESSION "MachineIndependent/preprocessor/*") endif(WIN32) -install(TARGETS glslang - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) +install(TARGETS glslang + ARCHIVE DESTINATION lib) foreach(file ${HEADERS}) get_filename_component(dir ${file} DIRECTORY) - install(FILES ${file} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang/${dir}) + install(FILES ${file} DESTINATION include/glslang/${dir}) endforeach() diff --git a/glslang/OSDependent/Unix/CMakeLists.txt b/glslang/OSDependent/Unix/CMakeLists.txt index 99e9ce1..174cc91 100644 --- a/glslang/OSDependent/Unix/CMakeLists.txt +++ b/glslang/OSDependent/Unix/CMakeLists.txt @@ -1,5 +1,5 @@ add_library(OSDependent STATIC ossource.cpp ../osinclude.h) -set_property(TARGET OSDependent PROPERTY FOLDER glslang POSITION_INDEPENDENT_CODE ON) +set_property(TARGET OSDependent PROPERTY FOLDER glslang) -install(TARGETS OSDependent - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) +install(TARGETS OSDependent + ARCHIVE DESTINATION lib) diff --git a/glslang/OSDependent/Windows/CMakeLists.txt b/glslang/OSDependent/Windows/CMakeLists.txt index cc65ad6..399760c 100644 --- a/glslang/OSDependent/Windows/CMakeLists.txt +++ b/glslang/OSDependent/Windows/CMakeLists.txt @@ -1,17 +1,17 @@ set(SOURCES ossource.cpp ../osinclude.h) add_library(OSDependent STATIC ${SOURCES}) -set_property(TARGET OSDependent PROPERTY FOLDER glslang POSITION_INDEPENDENT_CODE ON) +set_property(TARGET OSDependent PROPERTY FOLDER glslang) # MinGW GCC complains about function pointer casts to void*. # Turn that off with -fpermissive. if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") - target_compile_options(OSDependent PRIVATE -fpermissive) + target_compile_options(OSDependent PRIVATE -fpermissive) endif() if(WIN32) source_group("Source" FILES ${SOURCES}) endif(WIN32) -install(TARGETS OSDependent - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) +install(TARGETS OSDependent + ARCHIVE DESTINATION lib) diff --git a/gtests/CMakeLists.txt b/gtests/CMakeLists.txt index 2616ac0..c383ca0 100644 --- a/gtests/CMakeLists.txt +++ b/gtests/CMakeLists.txt @@ -1,57 +1,55 @@ -if(BUILD_TESTING) - if(TARGET gmock) - message(STATUS "Google Mock found - building tests") +if (TARGET gmock) + message(STATUS "Google Mock found - building tests") - set(TEST_SOURCES - # Framework related source files - ${CMAKE_CURRENT_SOURCE_DIR}/Initializer.h - ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/Settings.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/Settings.h - ${CMAKE_CURRENT_SOURCE_DIR}/TestFixture.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/TestFixture.h + set(TEST_SOURCES + # Framework related source files + ${CMAKE_CURRENT_SOURCE_DIR}/Initializer.h + ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/Settings.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/Settings.h + ${CMAKE_CURRENT_SOURCE_DIR}/TestFixture.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/TestFixture.h - # Test related source files - ${CMAKE_CURRENT_SOURCE_DIR}/AST.FromFile.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/BuiltInResource.FromFile.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/Config.FromFile.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/HexFloat.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/Hlsl.FromFile.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/Link.FromFile.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/Link.FromFile.Vk.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/Pp.FromFile.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/Spv.FromFile.cpp + # Test related source files + ${CMAKE_CURRENT_SOURCE_DIR}/AST.FromFile.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/BuiltInResource.FromFile.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/Config.FromFile.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/HexFloat.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/Hlsl.FromFile.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/Link.FromFile.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/Link.FromFile.Vk.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/Pp.FromFile.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/Spv.FromFile.cpp + # -- Remapper tests + ${CMAKE_CURRENT_SOURCE_DIR}/Remap.FromFile.cpp + ) - # -- Remapper tests - ${CMAKE_CURRENT_SOURCE_DIR}/Remap.FromFile.cpp) + add_executable(glslangtests ${TEST_SOURCES}) + set_property(TARGET glslangtests PROPERTY FOLDER tests) + glslang_set_link_args(glslangtests) + install(TARGETS glslangtests + RUNTIME DESTINATION bin) - add_executable(glslangtests ${TEST_SOURCES}) - set_property(TARGET glslangtests PROPERTY FOLDER tests) - glslang_set_link_args(glslangtests) - install(TARGETS glslangtests - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + set(GLSLANG_TEST_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../Test") + # Supply a default test root directory, so that manual testing + # doesn't have to specify the --test-root option in the normal + # case that you want to use the tests from the same source tree. + target_compile_definitions(glslangtests + PRIVATE GLSLANG_TEST_DIRECTORY="${GLSLANG_TEST_DIRECTORY}") + target_include_directories(glslangtests PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR} + ${PROJECT_SOURCE_DIR} + ${gmock_SOURCE_DIR}/include + ${gtest_SOURCE_DIR}/include) - set(GLSLANG_TEST_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../Test") - # Supply a default test root directory, so that manual testing - # doesn't have to specify the --test-root option in the normal - # case that you want to use the tests from the same source tree. - target_compile_definitions(glslangtests - PRIVATE GLSLANG_TEST_DIRECTORY="${GLSLANG_TEST_DIRECTORY}") - target_include_directories(glslangtests PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR} - ${PROJECT_SOURCE_DIR} - ${gmock_SOURCE_DIR}/include - ${gtest_SOURCE_DIR}/include) + set(LIBRARIES + SPVRemapper glslang OSDependent OGLCompiler glslang + SPIRV glslang-default-resource-limits) + if(ENABLE_HLSL) + set(LIBRARIES ${LIBRARIES} HLSL) + endif(ENABLE_HLSL) + target_link_libraries(glslangtests PRIVATE ${LIBRARIES} gmock) - set(LIBRARIES - SPVRemapper glslang OSDependent OGLCompiler glslang - SPIRV glslang-default-resource-limits) - if(ENABLE_HLSL) - set(LIBRARIES ${LIBRARIES} HLSL) - endif(ENABLE_HLSL) - target_link_libraries(glslangtests PRIVATE ${LIBRARIES} gmock) - - add_test(NAME glslang-gtests - COMMAND glslangtests --test-root "${GLSLANG_TEST_DIRECTORY}") - endif() + add_test(NAME glslang-gtests + COMMAND glslangtests --test-root "${GLSLANG_TEST_DIRECTORY}") endif() diff --git a/hlsl/CMakeLists.txt b/hlsl/CMakeLists.txt index 24f5c9a..ec5f1a5 100755 --- a/hlsl/CMakeLists.txt +++ b/hlsl/CMakeLists.txt @@ -7,7 +7,7 @@ set(SOURCES hlslGrammar.cpp hlslParseables.cpp) -set(HEADERS + set(HEADERS hlslAttributes.h hlslParseHelper.h hlslTokens.h @@ -18,11 +18,11 @@ set(HEADERS hlslParseables.h) add_library(HLSL STATIC ${SOURCES} ${HEADERS}) -set_property(TARGET HLSL PROPERTY FOLDER hlsl POSITION_INDEPENDENT_CODE ON) +set_property(TARGET HLSL PROPERTY FOLDER hlsl) if(WIN32) source_group("Source" FILES ${SOURCES} ${HEADERS}) endif(WIN32) install(TARGETS HLSL - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + ARCHIVE DESTINATION lib) -- 2.7.4