summaryrefslogtreecommitdiffstats
path: root/default_build_settings.cmake
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@broadpark.no>2020-01-07 11:51:03 +0100
committerTor Egge <Tor.Egge@broadpark.no>2020-01-07 11:51:03 +0100
commit40477696dbe02c9ab142719cb8c5fa5fa2e1a858 (patch)
treed038458882d8b069c31c46eee8c396758ddd9623 /default_build_settings.cmake
parent25da72ef231afeb7e1689eabdcf9500a5cb5d14d (diff)
Setup default build settings based on detected vespa build platform using cmake.
Diffstat (limited to 'default_build_settings.cmake')
-rw-r--r--default_build_settings.cmake317
1 files changed, 317 insertions, 0 deletions
diff --git a/default_build_settings.cmake b/default_build_settings.cmake
new file mode 100644
index 00000000000..deb9707ed3c
--- /dev/null
+++ b/default_build_settings.cmake
@@ -0,0 +1,317 @@
+# Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+include(VespaExtendedDefaultBuildSettings OPTIONAL)
+
+function(setup_vespa_default_build_settings_rhel_6_10)
+ message("-- Setting up default build settings for rhel 6.10")
+endfunction()
+
+function(setup_vespa_default_build_settings_rhel_7_7)
+ message("-- Setting up default build settings for rhel 7.7")
+ set(DEFAULT_EXTRA_LINK_DIRECTORY "${VESPA_DEPS}/lib64" "/usr/lib64/llvm5.0/lib" PARENT_SCOPE)
+ set(DEFAULT_EXTRA_INCLUDE_DIRECTORY "${VESPA_DEPS}/include" "/usr/include/llvm5.0" PARENT_SCOPE)
+ set(DEFAULT_VESPA_LLVM_VERSION "5.0" PARENT_SCOPE)
+endfunction()
+
+function(setup_vespa_default_build_settings_rhel_8_1)
+ message("-- Setting up default build settings for rhel 8.1")
+ set(DEFAULT_VESPA_LLVM_VERSION "7" PARENT_SCOPE)
+endfunction()
+
+function(setup_vespa_default_build_settings_centos_7)
+ message("-- Setting up default build settings for centos 7")
+ set(DEFAULT_EXTRA_LINK_DIRECTORY "${VESPA_DEPS}/lib64" "/usr/lib64/llvm5.0/lib" PARENT_SCOPE)
+ set(DEFAULT_EXTRA_INCLUDE_DIRECTORY "${VESPA_DEPS}/include" "/usr/include/llvm5.0" PARENT_SCOPE)
+ set(DEFAULT_VESPA_LLVM_VERSION "5.0" PARENT_SCOPE)
+endfunction()
+
+function(setup_vespa_default_build_settings_centos_8)
+ message("-- Setting up default build settings for centos 8")
+ set(DEFAULT_VESPA_LLVM_VERSION "7" PARENT_SCOPE)
+endfunction()
+
+function(setup_vespa_default_build_settings_darwin)
+ message("-- Setting up default build settings for darwin")
+ if(VESPA_COMPILER_VARIANT STREQUAL "gcc")
+ set(DEFAULT_VESPA_LLVM_VERSION "8" PARENT_SCOPE)
+ elseif(VESPA_COMPILER_VARIANT STREQUAL "clang")
+ set(DEFAULT_LLVM_INCLUDE_DIRECTORY "/usr/local/opt/llvm/include")
+ set(DEFAULT_LLVM_LINK_DIRECTORY "/usr/local/opt/llvm/lib")
+ set(DEFAULT_VESPA_LLVM_VERSION "9" PARENT_SCOPE)
+ elseif(VESPA_COMPILER_VARIANT STREQUAL "appleclang")
+ set(DEFAULT_LLVM_INCLUDE_DIRECTORY "/usr/local/opt/llvm/include")
+ set(DEFAULT_LLVM_LINK_DIRECTORY "/usr/local/opt/llvm/lib")
+ set(DEFAULT_VESPA_LLVM_VERSION "9" PARENT_SCOPE)
+ endif()
+ set(DEFAULT_CMAKE_PREFIX_PATH "${VESPA_DEPS}" "/usr/local/opt/bison" "/usr/local/opt/flex" "/usr/local/opt/openssl@1.1" PARENT_SCOPE)
+ set(DEFAULT_EXTRA_LINK_DIRECTORY "${VESPA_DEPS}/lib" "/usr/local/opt/bison/lib" "/usr/local/opt/flex/lib" "/usr/local/opt/icu4c/lib" "/usr/local/opt/openssl@1.1/lib")
+ if(DEFINED DEFAULT_LLVM_LINK_DIRECTORY)
+ list(APPEND DEFAULT_EXTRA_LINK_DIRECTORY "${DEFAULT_LLVM_LINK_DIRECTORY}")
+ endif()
+ list(APPEND DEFAULT_EXTRA_LINK_DIRECTORY "/usr/local/lib")
+ set(DEFAULT_EXTRA_LINK_DIRECTORY "${DEFAULT_EXTRA_LINK_DIRECTORY}" PARENT_SCOPE)
+ set(DEFAULT_EXTRA_INCLUDE_DIRECTORY "${VESPA_DEPS}/include" "/usr/local/opt/flex/include" "/usr/local/opt/icu4c/include" "/usr/local/opt/openssl@1.1/include")
+ if(DEFINED DEFAULT_LLVM_INCLUDE_DIRECTORY)
+ list(APPEND DEFAULT_EXTRA_INCLUDE_DIRECTORY "${DEFAULT_LLVM_INCLUDE_DIRECTORY}")
+ endif()
+ list(APPEND DEFAULT_EXTRA_INCLUDE_DIRECTORY "/usr/local/include")
+ set(DEFAULT_EXTRA_INCLUDE_DIRECTORY "${DEFAULT_EXTRA_INCLUDE_DIRECTORY}" PARENT_SCOPE)
+endfunction()
+
+function(setup_vespa_default_build_settings_fedora_29)
+ message("-- Setting up default build settings for fedora 29")
+ set(DEFAULT_VESPA_LLVM_VERSION "7" PARENT_SCOPE)
+endfunction()
+
+function(setup_vespa_default_build_settings_fedora_30)
+ message("-- Setting up default build settings for fedora 30")
+ set(DEFAULT_VESPA_LLVM_VERSION "8" PARENT_SCOPE)
+endfunction()
+
+function(setup_vespa_default_build_settings_fedora_31)
+ message("-- Setting up default build settings for fedora 31")
+ set(DEFAULT_VESPA_LLVM_VERSION "9" PARENT_SCOPE)
+endfunction()
+
+function(setup_vespa_default_build_settings_fedora_32)
+ message("-- Setting up default build settings for fedora 32")
+ set(DEFAULT_VESPA_LLVM_VERSION "9" PARENT_SCOPE)
+endfunction()
+
+function(setup_vespa_default_build_settings_ubuntu_18_10)
+ message("-- Setting up default build settings for ubuntu 18.10")
+ set(DEFAULT_EXTRA_LINK_DIRECTORY "${VESPA_DEPS}/lib" "/usr/lib/llvm-6.0/lib" PARENT_SCOPE)
+ set(DEFAULT_EXTRA_INCLUDE_DIRECTORY "${VESPA_DEPS}/include" "/usr/lib/llvm-6.0/include" PARENT_SCOPE)
+ set(DEFAULT_VESPA_LLVM_VERSION "6.0" PARENT_SCOPE)
+endfunction()
+
+function(vespa_use_default_build_settings)
+ if (DEFINED CMAKE_INSTALL_PREFIX AND DEFINED CMAKE_PREFIX_PATH AND
+ DEFINED VESPA_LLVM_VERSION AND
+ DEFINED EXTRA_INCLUDE_DIRECTORY AND DEFINED EXTRA_LINK_DIRECTORY AND
+ DEFINED CMAKE_INSTALL_RPATH AND DEFINED CMAKE_BUILD_RPATH)
+ return()
+ endif()
+ set(VESPA_DEPS "/opt/vespa-deps")
+ unset(DEFAULT_VESPA_LLVM_VERSION)
+ unset(DEFAULT_CMAKE_PREFIX_PATH)
+ unset(DEFAULT_EXTRA_LINK_DIRECTORY)
+ unset(DEFAULT_EXTRA_INCLUDE_DIRECTORY)
+ unset(DEFAULT_VESPA_USER)
+ if(NOT DEFINED VESPA_UNPRIVILEGED)
+ message("-- Setting VESPA_UNPRIVILEGED to yes")
+ set(VESPA_UNPRIVILEGED "yes" PARENT_SCOPE)
+ set(VESPA_UNPRIVILEGED "yes")
+ endif()
+ if(VESPA_UNPRIVILEGED STREQUAL "no")
+ set(DEFAULT_CMAKE_INSTALL_PREFIX "/opt/vespa")
+ set(DEFAULT_VESPA_USER "vespa")
+ if(COMMAND vespa_use_specific_install_prefix)
+ vespa_use_specific_install_prefix()
+ endif()
+ if(COMMAND vespa_use_specific_vespa_user)
+ vespa_use_specific_vespa_user()
+ endif()
+ else()
+ set(DEFAULT_CMAKE_INSTALL_PREFIX "$ENV{HOME}/vespa")
+ set(DEFAULT_VESPA_USER "$ENV{USER}")
+ endif()
+ if(APPLE)
+ if(VESPA_COMPILER_VARIANT STREQUAL "clang")
+ set(VESPA_DEPS "/opt/vespa-deps-clang")
+ elseif(VESPA_COMPILER_VARIANT STREQUAL "appleclang")
+ set(VESPA_DEPS "/opt/vespa-deps-appleclang")
+ endif()
+ endif()
+ if(COMMAND vespa_use_specific_vespa_deps)
+ vespa_use_specific_vespa_deps()
+ endif()
+ if(COMMAND vespa_use_specific_compiler_rpath)
+ vespa_use_specific_compiler_rpath()
+ endif()
+ if(COMMAND vespa_use_specific_llvm_version)
+ vespa_use_specific_llvm_version()
+ endif()
+ if(VESPA_OS_DISTRO_COMBINED STREQUAL "rhel 6.10")
+ setup_vespa_default_build_settings_rhel_6_10()
+ elseif(VESPA_OS_DISTRO_COMBINED STREQUAL "rhel 7.7")
+ setup_vespa_default_build_settings_rhel_7_7()
+ elseif(VESPA_OS_DISTRO_COMBINED STREQUAL "rhel 8.1")
+ setup_vespa_default_build_settings_rhel_8_1()
+ elseif(VESPA_OS_DISTRO_COMBINED STREQUAL "centos 7")
+ setup_vespa_default_build_settings_centos_7()
+ elseif(VESPA_OS_DISTRO_COMBINED STREQUAL "centos 8")
+ setup_vespa_default_build_settings_centos_8()
+ elseif(VESPA_OS_DISTRO STREQUAL "darwin")
+ setup_vespa_default_build_settings_darwin()
+ elseif(VESPA_OS_DISTRO_COMBINED STREQUAL "fedora 29")
+ setup_vespa_default_build_settings_fedora_29()
+ elseif(VESPA_OS_DISTRO_COMBINED STREQUAL "fedora 30")
+ setup_vespa_default_build_settings_fedora_30()
+ elseif(VESPA_OS_DISTRO_COMBINED STREQUAL "fedora 31")
+ setup_vespa_default_build_settings_fedora_31()
+ elseif(VESPA_OS_DISTRO_COMBINED STREQUAL "fedora 32")
+ setup_vespa_default_build_settings_fedora_32()
+ elseif(VESPA_OS_DISTRO_COMBINED STREQUAL "ubuntu 18.10")
+ setup_vespa_default_build_settings_ubuntu_18_10()
+ else()
+ message(FATAL_ERROR "-- Unkonwn vespa build platform ${VESPA_OS_DISTRO_COMBINED}")
+ endif()
+ if(NOT DEFINED VESPA_LLVM_VERSION AND NOT DEFINED DEFAULT_VESPA_LLVM_VERSION)
+ message(FATAL_ERROR "-- Unkonwn default llvm version")
+ endif()
+ if(NOT DEFINED DEFAULT_CMAKE_PREFIX_PATH)
+ set(DEFAULT_CMAKE_PREFIX_PATH "${VESPA_DEPS}")
+ endif()
+ if(NOT DEFINED DEFAULT_EXTRA_LINK_DIRECTORY)
+ set(DEFAULT_EXTRA_LINK_DIRECTORY "${VESPA_DEPS}/lib64")
+ endif()
+ if(NOT DEFINED DEFAULT_EXTRA_INCLUDE_DIRECTORY)
+ set(DEFAULT_EXTRA_INCLUDE_DIRECTORY "${VESPA_DEPS}/include")
+ endif()
+ if(DEFINED DEFAULT_CMAKE_INSTALL_PREFIX)
+ message("-- DEFAULT_CMAKE_INSTALL_PREFIX is ${DEFAULT_CMAKE_INSTALL_PREFIX}")
+ endif()
+ if(DEFINED DEFAULT_CMAKE_PREFIX_PATH)
+ message("-- DEFAULT_CMAKE_PREFIX_PATH is ${DEFAULT_CMAKE_PREFIX_PATH}")
+ endif()
+ if(DEFINED DEFAULT_EXTRA_LINK_DIRECTORY)
+ message("-- DEFAULT_EXTRA_LINK_DIRECTORY is ${DEFAULT_EXTRA_LINK_DIRECTORY}")
+ endif()
+ if(DEFINED DEFAULT_EXTRA_INCLUDE_DIRECTORY)
+ message("-- DEFAULT_EXTRA_INCLUDE_DIRECTORY is ${DEFAULT_EXTRA_INCLUDE_DIRECTORY}")
+ endif()
+ if(DEFINED DEFAULT_VESPA_LLVM_VERSION)
+ message("-- DEFAULT_VESPA_LLVM_VERSION is ${DEFAULT_VESPA_LLVM_VERSION}")
+ endif()
+ if(DEFINED DEFAULT_VESPA_USER)
+ message("-- DEFAULT_VESPA_USER is ${DEFAULT_VESPA_USER}")
+ endif()
+ if(NOT DEFINED CMAKE_INSTALL_PREFIX AND DEFINED DEFAULT_CMAKE_INSTALL_PREFIX)
+ message("-- Setting CMAKE_INSTALL_PREFIX to ${DEFAULT_CMAKE_INSTALL_PREFIX}")
+ set(CMAKE_INSTALL_PREFIX "${DEFAULT_CMAKE_INSTALL_PREFIX}" PARENT_SCOPE)
+ set(CMAKE_INSTALL_PREFIX "${DEFAULT_CMAKE_INSTALL_PREFIX}")
+ endif()
+ if(NOT DEFINED CMAKE_PREFIX_PATH AND DEFINED DEFAULT_CMAKE_PREFIX_PATH)
+ message("-- Setting CMAKE_PREFIX_PATH to ${DEFAULT_CMAKE_PREFIX_PATH}")
+ set(CMAKE_PREFIX_PATH "${DEFAULT_CMAKE_PREFIX_PATH}" PARENT_SCOPE)
+ endif()
+ if(NOT DEFINED EXTRA_INCLUDE_DIRECTORY AND DEFINED DEFAULT_EXTRA_INCLUDE_DIRECTORY)
+ message("-- Setting EXTRA_INCLUDE_DIRECTORY to ${DEFAULT_EXTRA_INCLUDE_DIRECTORY}")
+ set(EXTRA_INCLUDE_DIRECTORY "${DEFAULT_EXTRA_INCLUDE_DIRECTORY}" PARENT_SCOPE)
+ endif()
+ if(NOT DEFINED EXTRA_LINK_DIRECTORY AND DEFINED DEFAULT_EXTRA_LINK_DIRECTORY)
+ message("-- Setting EXTRA_LINK_DIRECTORY to ${DEFAULT_EXTRA_LINK_DIRECTORY}")
+ set(EXTRA_LINK_DIRECTORY "${DEFAULT_EXTRA_LINK_DIRECTORY}" PARENT_SCOPE)
+ set(EXTRA_LINK_DIRECTORY "${DEFAULT_EXTRA_LINK_DIRECTORY}")
+ endif()
+ if(NOT DEFINED CMAKE_INSTALL_RPATH)
+ if(NOT "${VESPA_COMPILER_RPATH}" STREQUAL "${CMAKE_INSTALL_PREFIX}/lib64")
+ list(APPEND CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib64")
+ endif()
+ if(DEFINED EXTRA_LINK_DIRECTORY)
+ list(APPEND CMAKE_INSTALL_RPATH "${EXTRA_LINK_DIRECTORY}")
+ endif()
+ if(DEFINED VESPA_COMPILER_RPATH)
+ list(APPEND CMAKE_INSTALL_RPATH "${VESPA_COMPILER_RPATH}")
+ endif()
+ message("-- Setting CMAKE_INSTALL_RPATH to ${CMAKE_INSTALL_RPATH}")
+ set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_RPATH}" PARENT_SCOPE)
+ endif()
+ if(NOT DEFINED CMAKE_BUILD_RPATH AND DEFINED VESPA_COMPILER_RPATH)
+ if(DEFINED EXTRA_LINK_DIRECTORY)
+ list(APPEND CMAKE_BUILD_RPATH "${EXTRA_LINK_DIRECTORY}")
+ endif()
+ list(APPEND CMAKE_BUILD_RPATH "${VESPA_COMPILER_RPATH}")
+ if(DEFINED CMAKE_BUILD_RPATH)
+ message("-- Setting CMAKE_BUILD_RPATH to ${CMAKE_BUILD_RPATH}")
+ set(CMAKE_BUILD_RPATH "${CMAKE_BUILD_RPATH}" PARENT_SCOPE)
+ endif()
+ endif()
+ if(NOT DEFINED VESPA_LLVM_VERSION AND DEFINED DEFAULT_VESPA_LLVM_VERSION)
+ message("-- Setting VESPA_LLVM_VERSION to ${DEFAULT_VESPA_LLVM_VERSION}")
+ set(VESPA_LLVM_VERSION "${DEFAULT_VESPA_LLVM_VERSION}" PARENT_SCOPE)
+ endif()
+ if(NOT DEFINED VESPA_USER AND DEFINED DEFAULT_VESPA_USER)
+ message("-- Setting VESPA_USER to ${DEFAULT_VESPA_USER}")
+ set(VESPA_USER "${DEFAULT_VESPA_USER}" PARENT_SCOPE)
+ endif()
+endfunction()
+
+function(vespa_use_default_cxx_compiler)
+ if (DEFINED CMAKE_C_COMPILER AND DEFINED CMAKE_CXX_COMPILER)
+ return()
+ endif()
+ unset(DEFAULT_CMAKE_C_COMPILER)
+ unset(DEFAULT_CMAKE_CXX_COMPILER)
+ if(NOT DEFINED VESPA_COMPILER_VARIANT)
+ set(VESPA_COMPILER_VARIANT "gcc")
+ set(VESPA_COMPILER_VARIANT "gcc" PARENT_SCOPE)
+ endif()
+ if(VESPA_COMPILER_VARIANT STREQUAL "gcc")
+ if(APPLE)
+ set(DEFAULT_CMAKE_C_COMPILER "/usr/local/bin/gcc-9" PARENT_SCOPE)
+ set(DEFAULT_CMAKE_CXX_COMPILER "/usr/local/bin/g++-9" PARENT_SCOPE)
+ endif()
+ elseif(VESPA_COMPILER_VARIANT STREQUAL "clang")
+ if(APPLE)
+ set(DEFAULT_CMAKE_C_COMPILER, "/usr/local/opt/llvm/bin/clang" PARENT_SCOPE)
+ set(DEFAULT_CMAKE_CXX_COMPILER "/usr/local/opt/llvm/bin/clang++" PARENT_SCOPE)
+ elseif(VESPA_OS_DISTRO STREQUAL "fedora")
+ set(DEFAULT_CMAKE_C_COMPILER "/usr/bin/clang")
+ set(DEFAULT_CMAKE_CXX_COMPILER "/usr/bin/clang++")
+ else()
+ message(FATAL_ERROR "-- clang compiler variant not supported for ${VESPA_OS_DISTRO_COMBINED}")
+ endif()
+ elseif(VESPA_COMPILER_VARIANT STREQUAL "appleclang")
+ if(APPLE)
+ set(DEFAULT_CMAKE_C_COMPILER "/usr/bin/clang" PARENT_SCOPE)
+ set(DEFAULT_CMAKE_CXX_COMPILER "/usr/bin/clang++" PARENT_SCOPE)
+ else()
+ message(FATAL_ERROR "-- appleclang compiler variant not supported for ${VESPA_OS_DISTRO_COMBINED}")
+ endif()
+ else()
+ message(FATAL_ERROR "-- unknown compiler variant ${VESPA_COMPILER_VARIANT}")
+ endif()
+ if(COMMAND vespa_use_specific_cxx_compiler)
+ vespa_use_specific_cxx_compiler()
+ endif()
+ if(DEFINED DEFAULT_CMAKE_C_COMPILER)
+ message("-- DEFAULT_CMAKE_C_COMPILER is ${DEFAULT_CMAKE_C_COMPILER}")
+ endif()
+ if(DEFINED DEFAULT_CMAKE_CXX_COMPILER)
+ message("-- DEFAULT_CMAKE_CXX_COMPILER is ${DEFAULT_CMAKE_CXX_COMPILER}")
+ endif()
+ if(DEFINED DEFAULT_EXTRA_LINK_DIRECTORY)
+ message("-- DEFAULT_EXTRA_LINK_DIRECTORY is ${DEFAULT_EXTRA_LINK_DIRECTORY}")
+ endif()
+ if(NOT DEFINED CMAKE_C_COMPILER AND DEFINED DEFAULT_CMAKE_C_COMPILER)
+ message("-- Setting CMAKE_C_COMPILER to ${DEFAULT_CMAKE_C_COMPILER}")
+ set(CMAKE_C_COMPILER "${DEFAULT_CMAKE_C_COMPILER}" PARENT_SCOPE)
+ endif()
+ if(NOT DEFINED CMAKE_CXX_COMPILER AND DEFINED DEFAULT_CMAKE_CXX_COMPILER)
+ message("-- Setting CMAKE_CXX_COMPILER to ${DEFAULT_CMAKE_CXX_COMPILER}")
+ set(CMAKE_CXX_COMPILER "${DEFAULT_CMAKE_CXX_COMPILER}" PARENT_SCOPE)
+ endif()
+endfunction()
+
+function(vespa_use_default_java_home)
+ if (DEFINED JAVA_HOME)
+ return()
+ endif()
+ set(DEFAULT_JAVA_HOME "/usr/lib/jvm/java-11-openjdk")
+ if(APPLE)
+ execute_process(COMMAND "/usr/libexec/java_home" OUTPUT_VARIABLE DEFAULT_JAVA_HOME)
+ string(STRIP "${DEFAULT_JAVA_HOME}" DEFAULT_JAVA_HOME)
+ elseif(VESPA_OS_DISTRO STREQUAL "ubuntu")
+ set(DEFAULT_JAVA_HOME "/usr/lib/jvm/java-11-openjdk-amd64" PARENT_SCOPE)
+ endif()
+ if(COMMAND vespa_use_specific_java_home)
+ vespa_use_specific_java_home()
+ endif()
+ message("-- DEFAULT_JAVA_HOME is ${DEFAULT_JAVA_HOME}")
+ if(NOT DEFINED JAVA_HOME AND DEFINED DEFAULT_JAVA_HOME)
+ message("-- Setting JAVA_HOME to ${DEFAULT_JAVA_HOME}")
+ set(JAVA_HOME "${DEFAULT_JAVA_HOME}" PARENT_SCOPE)
+ endif()
+endfunction()