aboutsummaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorgatecat <gatecat@ds0.me>2021-03-18 22:02:37 +0000
committerGitHub <noreply@github.com>2021-03-18 22:02:37 +0000
commitaa8b12db6f0cb7859207a26de268315225270c94 (patch)
treebfd768bb1a370f6dc3aa8f66d1788108cb778c53 /CMakeLists.txt
parentbc3fe7d014d082c4e2b7b66f9e154fc8305d2c28 (diff)
parent76c6e1248c3550bf5dfc6191421225507dabe404 (diff)
downloadnextpnr-aa8b12db6f0cb7859207a26de268315225270c94.tar.gz
nextpnr-aa8b12db6f0cb7859207a26de268315225270c94.tar.bz2
nextpnr-aa8b12db6f0cb7859207a26de268315225270c94.zip
Merge pull request #631 from litghost/fixup_gui_dependencies
Update root CMake with some additional features
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt27
1 files changed, 23 insertions, 4 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6ebc2e75..e3c4472c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,6 +1,14 @@
cmake_minimum_required(VERSION 3.5)
project(nextpnr CXX C)
+# Allow family.cmake add additional dependencies to gui_${family}.
+cmake_policy(SET CMP0079 NEW)
+
+# Enable IPO support.
+cmake_policy(SET CMP0069 NEW)
+include(CheckIPOSupported)
+check_ipo_supported()
+
option(BUILD_GUI "Build GUI" OFF)
option(BUILD_PYTHON "Build Python Integration" ON)
option(BUILD_TESTS "Build tests" OFF)
@@ -10,6 +18,9 @@ option(COVERAGE "Add code coverage info" OFF)
option(STATIC_BUILD "Create static build" OFF)
option(EXTERNAL_CHIPDB "Create build with pre-built chipdb binaries" OFF)
option(WERROR "pass -Werror to compiler (used for CI)" OFF)
+option(PROFILER "Link against libprofiler" OFF)
+
+set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
if(WIN32 OR EXTERNAL_CHIPDB)
set(BBASM_MODE "binary")
@@ -223,6 +234,15 @@ else()
set(BBASM_ENDIAN_FLAG "--le")
endif()
+set(EXTRA_LIB_DEPS)
+if (USE_THREADS)
+ list(APPEND EXTRA_LIB_DEPS absl::flat_hash_map)
+ list(APPEND EXTRA_LIB_DEPS absl::flat_hash_set)
+endif()
+if(PROFILER)
+ list(APPEND EXTRA_LIB_DEPS profiler)
+endif()
+
foreach (family ${ARCH})
message(STATUS "Configuring architecture: ${family}")
string(TOUPPER ${family} ufamily)
@@ -276,10 +296,9 @@ foreach (family ${ARCH})
# Include the family-specific CMakeFile
include(${family}/family.cmake)
foreach (target ${family_targets})
- if (USE_THREADS)
- target_link_libraries(${target} PRIVATE absl::flat_hash_map)
- target_link_libraries(${target} PRIVATE absl::flat_hash_set)
- endif()
+ foreach(lib_dep ${EXTRA_LIB_DEPS})
+ target_link_libraries(${target} PRIVATE ${lib_dep})
+ endforeach()
# Include family-specific source files to all family targets and set defines appropriately
target_include_directories(${target} PRIVATE ${family}/ ${CMAKE_CURRENT_BINARY_DIR}/generated/)