Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 7 additions & 6 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,11 @@ project(
# Add path for custom modules
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")

include(cmake/StandardProjectSettings.cmake)
include(cmake/PreventInSourceBuilds.cmake)
include(cmake/PackageAddTest.cmake)
include(cmake/Cache.cmake)
include(StandardProjectSettings)
include(PreventInSourceBuilds)
include(PackageAddTest)
include(Cache)
include(AddMQTCoreLibrary)

option(BUILD_MQT_CORE_BINDINGS "Build the MQT Core Python bindings" OFF)
if(BUILD_MQT_CORE_BINDINGS)
Expand Down Expand Up @@ -60,7 +61,7 @@ option(MQT_CORE_INSTALL "Generate installation instructions for MQT Core"
option(BUILD_MQT_CORE_TESTS "Also build tests for the MQT Core project" ${MQT_CORE_MASTER_PROJECT})

# try to determine the project version
include(cmake/GetVersion.cmake)
include(GetVersion)
get_mqt_core_version()

project(
Expand All @@ -69,7 +70,7 @@ project(
VERSION ${MQT_CORE_VERSION}
DESCRIPTION "MQT Core - The Backbone of the Munich Quantum Toolkit")

include(cmake/ExternalDependencies.cmake)
include(ExternalDependencies)

# set the include directory for the build tree
set(MQT_CORE_INCLUDE_BUILD_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include/mqt-core")
Expand Down
37 changes: 37 additions & 0 deletions cmake/AddMQTCoreLibrary.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Copyright (c) 2023 - 2025 Chair for Design Automation, TUM
# Copyright (c) 2025 Munich Quantum Software Company GmbH
# All rights reserved.
#
# SPDX-License-Identifier: MIT
#
# Licensed under the MIT License

function(kebab_to_camel output input)
string(REPLACE "-" ";" parts "${input}")
set(result "")
foreach(part ${parts})
string(SUBSTRING ${part} 0 1 first)
string(SUBSTRING ${part} 1 -1 rest)
string(TOUPPER ${first} first)
string(APPEND result "${first}${rest}")
endforeach()
set(${output}
"${result}"
PARENT_SCOPE)
endfunction()

function(add_mqt_core_library name)
cmake_parse_arguments(ARG "" "ALIAS_NAME" "" ${ARGN})
if(BUILD_MQT_CORE_SHARED_LIBS)
add_library(${name} SHARED ${ARG_UNPARSED_ARGUMENTS})
else()
add_library(${name} ${ARG_UNPARSED_ARGUMENTS})
endif()
if(NOT ARG_ALIAS_NAME)
# remove prefix 'mqt-' from target name if exists
string(REGEX REPLACE "^${MQT_CORE_TARGET_NAME}" "" ALIAS_NAME_ARG ${name})
# transform kebab-case to camelCase
kebab_to_camel(ARG_ALIAS_NAME ${ALIAS_NAME_ARG})
endif()
add_library(MQT::Core${ARG_ALIAS_NAME} ALIAS ${name})
endfunction()
5 changes: 1 addition & 4 deletions src/algorithms/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ if(NOT TARGET ${MQT_CORE_TARGET_NAME}-algorithms)
file(GLOB_RECURSE ALGO_SOURCES **.cpp)

# create the library target (initially empty)
add_library(${MQT_CORE_TARGET_NAME}-algorithms)
add_mqt_core_library(${MQT_CORE_TARGET_NAME}-algorithms)

# add sources to target
target_sources(${MQT_CORE_TARGET_NAME}-algorithms PRIVATE ${ALGO_SOURCES})
Expand All @@ -28,9 +28,6 @@ if(NOT TARGET ${MQT_CORE_TARGET_NAME}-algorithms)
PUBLIC MQT::CoreIR
PRIVATE MQT::CoreCircuitOptimizer MQT::ProjectOptions MQT::ProjectWarnings)

# add MQT alias
add_library(MQT::CoreAlgorithms ALIAS ${MQT_CORE_TARGET_NAME}-algorithms)

# set versioning information
set_target_properties(
${MQT_CORE_TARGET_NAME}-algorithms
Expand Down
5 changes: 1 addition & 4 deletions src/circuit_optimizer/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ if(NOT TARGET ${MQT_CORE_TARGET_NAME}-circuit-optimizer)
file(GLOB_RECURSE CIRCUIT_OPTIMIZER_SOURCES **.cpp)

# create the library target (initially empty)
add_library(${MQT_CORE_TARGET_NAME}-circuit-optimizer)
add_mqt_core_library(${MQT_CORE_TARGET_NAME}-circuit-optimizer)

# add sources to target
target_sources(${MQT_CORE_TARGET_NAME}-circuit-optimizer PRIVATE ${CIRCUIT_OPTIMIZER_SOURCES})
Expand All @@ -29,9 +29,6 @@ if(NOT TARGET ${MQT_CORE_TARGET_NAME}-circuit-optimizer)
PUBLIC MQT::CoreIR
PRIVATE MQT::ProjectOptions MQT::ProjectWarnings)

# add MQT alias
add_library(MQT::CoreCircuitOptimizer ALIAS ${MQT_CORE_TARGET_NAME}-circuit-optimizer)

# set versioning information
set_target_properties(
${MQT_CORE_TARGET_NAME}-circuit-optimizer
Expand Down
5 changes: 1 addition & 4 deletions src/datastructures/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ if(NOT TARGET ${MQT_CORE_TARGET_NAME}-ds)
file(GLOB_RECURSE DS_SOURCES **.cpp)

# create the library target (initially empty)
add_library(${MQT_CORE_TARGET_NAME}-ds)
add_mqt_core_library(${MQT_CORE_TARGET_NAME}-ds ALIAS_NAME DS)

# add sources to target
target_sources(${MQT_CORE_TARGET_NAME}-ds PRIVATE ${DS_SOURCES})
Expand All @@ -28,9 +28,6 @@ if(NOT TARGET ${MQT_CORE_TARGET_NAME}-ds)
PUBLIC MQT::CoreIR
PRIVATE MQT::ProjectOptions MQT::ProjectWarnings)

# add MQT alias
add_library(MQT::CoreDS ALIAS ${MQT_CORE_TARGET_NAME}-ds)

# set versioning information
set_target_properties(
${MQT_CORE_TARGET_NAME}-ds
Expand Down
5 changes: 1 addition & 4 deletions src/dd/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ if(NOT TARGET ${MQT_CORE_TARGET_NAME}-dd)
file(GLOB_RECURSE DD_SOURCES **.cpp)

# create the library target (initially empty)
add_library(${MQT_CORE_TARGET_NAME}-dd)
add_mqt_core_library(${MQT_CORE_TARGET_NAME}-dd ALIAS_NAME DD)

# add sources to target
target_sources(${MQT_CORE_TARGET_NAME}-dd PRIVATE ${DD_SOURCES})
Expand All @@ -28,9 +28,6 @@ if(NOT TARGET ${MQT_CORE_TARGET_NAME}-dd)
PUBLIC MQT::CoreIR nlohmann_json::nlohmann_json
PRIVATE MQT::ProjectOptions MQT::ProjectWarnings)

# add MQT alias
add_library(MQT::CoreDD ALIAS ${MQT_CORE_TARGET_NAME}-dd)

# set versioning information
set_target_properties(
mqt-core-dd
Expand Down
5 changes: 1 addition & 4 deletions src/ir/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ if(NOT TARGET MQT::CoreIR)
file(GLOB_RECURSE IR_SOURCES **.cpp)

# create the library target (initially empty)
add_library(${MQT_CORE_TARGET_NAME}-ir)
add_mqt_core_library(${MQT_CORE_TARGET_NAME}-ir ALIAS_NAME IR)

# add sources to target
target_sources(${MQT_CORE_TARGET_NAME}-ir PRIVATE ${IR_SOURCES})
Expand All @@ -26,9 +26,6 @@ if(NOT TARGET MQT::CoreIR)
# add link libraries
target_link_libraries(${MQT_CORE_TARGET_NAME}-ir PRIVATE MQT::ProjectOptions MQT::ProjectWarnings)

# add MQT alias
add_library(MQT::CoreIR ALIAS ${MQT_CORE_TARGET_NAME}-ir)

# set required C++ standard
target_compile_features(${MQT_CORE_TARGET_NAME}-ir PUBLIC cxx_std_17)

Expand Down
5 changes: 1 addition & 4 deletions src/na/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ if(NOT TARGET ${MQT_CORE_TARGET_NAME}-na)
file(GLOB_RECURSE NA_SOURCES **.cpp)

# create the library target (initially empty)
add_library(${MQT_CORE_TARGET_NAME}-na)
add_mqt_core_library(${MQT_CORE_TARGET_NAME}-na ALIAS_NAME NA)

# add sources to target
target_sources(${MQT_CORE_TARGET_NAME}-na PRIVATE ${NA_SOURCES})
Expand All @@ -28,9 +28,6 @@ if(NOT TARGET ${MQT_CORE_TARGET_NAME}-na)
PUBLIC MQT::CoreIR
PRIVATE MQT::ProjectOptions MQT::ProjectWarnings)

# add MQT alias
add_library(MQT::CoreNA ALIAS ${MQT_CORE_TARGET_NAME}-na)

# set versioning information
set_target_properties(
${MQT_CORE_TARGET_NAME}-na
Expand Down
5 changes: 1 addition & 4 deletions src/qasm3/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ if(NOT TARGET MQT::CoreQASM)
file(GLOB_RECURSE QASM_SOURCES **.cpp)

# create the library target (initially empty)
add_library(${MQT_CORE_TARGET_NAME}-qasm)
add_mqt_core_library(${MQT_CORE_TARGET_NAME}-qasm ALIAS_NAME QASM)

# add sources to target
target_sources(${MQT_CORE_TARGET_NAME}-qasm PRIVATE ${QASM_SOURCES})
Expand All @@ -28,9 +28,6 @@ if(NOT TARGET MQT::CoreQASM)
PRIVATE MQT::ProjectOptions MQT::ProjectWarnings
PUBLIC MQT::CoreIR)

# add MQT alias
add_library(MQT::CoreQASM ALIAS ${MQT_CORE_TARGET_NAME}-qasm)

# set versioning information
set_target_properties(
${MQT_CORE_TARGET_NAME}-qasm
Expand Down
5 changes: 1 addition & 4 deletions src/zx/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ if(NOT TARGET ${MQT_CORE_TARGET_NAME}-zx)
file(GLOB_RECURSE ZX_SOURCES **.cpp)

# create the library target (initially empty)
add_library(${MQT_CORE_TARGET_NAME}-zx)
add_mqt_core_library(${MQT_CORE_TARGET_NAME}-zx ALIAS_NAME ZX)

# add sources to target
target_sources(${MQT_CORE_TARGET_NAME}-zx PRIVATE ${ZX_SOURCES})
Expand All @@ -72,9 +72,6 @@ if(NOT TARGET ${MQT_CORE_TARGET_NAME}-zx)
target_link_libraries(${MQT_CORE_TARGET_NAME}-zx PUBLIC GMP::gmp GMP::gmpxx)
endif()

# add MQT alias
add_library(MQT::CoreZX ALIAS ${MQT_CORE_TARGET_NAME}-zx)

# set versioning information
set_target_properties(
${MQT_CORE_TARGET_NAME}-zx
Expand Down
Loading