cemu-vcpkg/toolsrc/CMakeLists.txt

94 lines
3.0 KiB
CMake
Raw Normal View History

2017-11-25 15:53:32 -08:00
cmake_minimum_required(VERSION 3.3)
2018-03-13 05:21:17 -07:00
project(vcpkg C CXX)
2017-11-25 15:53:32 -08:00
OPTION(BUILD_TESTING "Option for enabling testing" ON)
OPTION(DEFINE_DISABLE_METRICS "Option for disabling metrics" OFF)
OPTION(VCPKG_ALLOW_APPLE_CLANG "Option for allowing apple clang" OFF)
2018-06-08 18:01:35 -07:00
if (DEFINE_DISABLE_METRICS)
set(DISABLE_METRICS_VALUE "1")
else()
set(DISABLE_METRICS_VALUE "0")
endif()
2017-12-14 14:31:16 -08:00
if(CMAKE_COMPILER_IS_GNUXX OR CMAKE_CXX_COMPILER_ID MATCHES "GNU")
2017-11-28 13:06:56 -08:00
set(GCC 1)
elseif(CMAKE_CXX_COMPILER_ID MATCHES "AppleClang")
2018-03-30 14:46:22 -07:00
if(NOT VCPKG_ALLOW_APPLE_CLANG)
message(FATAL_ERROR
"Building the vcpkg tool requires support for the C++ Filesystem TS.
Apple clang versions 10.01 and below do not have support for it.
2018-03-30 14:46:22 -07:00
Please install gcc6 or newer from homebrew (brew install gcc6).
If you would like to try anyway, pass --allowAppleClang to bootstrap.sh.")
else()
set(CLANG 1)
endif()
2017-11-28 13:06:56 -08:00
elseif(CMAKE_CXX_COMPILER_ID MATCHES "[Cc]lang")
set(CLANG 1)
elseif(MSVC)
add_compile_options(/std:c++17 /FC)
2017-12-14 14:31:16 -08:00
else()
message(FATAL_ERROR "Unknown compiler: ${CMAKE_CXX_COMPILER_ID}")
2017-11-28 13:06:56 -08:00
endif()
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
add_definitions(-DDISABLE_METRICS=${DISABLE_METRICS_VALUE})
include_directories(include)
link_libraries(Threads::Threads)
if(CLANG)
include(CheckCXXSourceCompiles)
check_cxx_source_compiles("#include <iostream>
int main() { return __GLIBCXX__; }" USES_LIBSTDCXX)
check_cxx_source_compiles("#include <iostream>
int main() { return _LIBCPP_VERSION; }" USES_LIBCXX)
if ( NOT USES_LIBSTDCXX AND NOT USES_LIBCXX )
message(FATAL_ERROR "Can't find which C++ runtime is in use")
endif()
endif()
if(GCC OR (CLANG AND USES_LIBSTDCXX))
link_libraries(stdc++fs)
2017-11-28 13:06:56 -08:00
elseif(CLANG)
link_libraries(c++fs)
endif()
if(GCC OR CLANG)
add_compile_options(-std=c++1z)
if(WERROR)
add_compile_options(-Wall -Wno-unknown-pragmas -Werror)
endif()
endif()
file(GLOB_RECURSE VCPKGLIB_SOURCES src/vcpkg/*.cpp)
add_library(vcpkglib OBJECT ${VCPKGLIB_SOURCES})
add_executable(vcpkg src/vcpkg.cpp $<TARGET_OBJECTS:vcpkglib>)
if (BUILD_TESTING)
file(GLOB_RECURSE VCPKGTEST_SOURCES src/vcpkg-test/*.cpp)
enable_testing()
add_executable(vcpkg-test
${VCPKGTEST_SOURCES}
$<TARGET_OBJECTS:vcpkglib>)
add_test(NAME default COMMAND vcpkg-test [${TEST_NAME}])
2017-11-28 10:50:33 -08:00
endif()
2018-03-13 05:21:17 -07:00
if(MSVC)
get_target_property(_srcs vcpkg SOURCES)
if(NOT CMAKE_GENERATOR MATCHES "Visual Studio .*")
set_property(SOURCE src/pch.cpp APPEND PROPERTY OBJECT_OUTPUTS "${CMAKE_CURRENT_BINARY_DIR}/pch.pch")
set_property(SOURCE ${_srcs} APPEND PROPERTY OBJECT_DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/pch.pch")
endif()
set_source_files_properties(src/pch.cpp PROPERTIES COMPILE_FLAGS "/Ycpch.h")
target_sources(vcpkg PRIVATE src/pch.cpp)
target_compile_options(vcpkg PRIVATE /Yupch.h /FIpch.h /Zm200)
endif()