CMakeLists.txt 3.3 KB
Newer Older
1
2
3
4
5
6
7
# ******************************************************************************
# * Copyright (c) 2017 UT-Battelle, LLC. All rights reserved. This program and
#   the accompanying materials are made available under the terms of the Eclipse
#   Public License v1.0 and Eclipse Distribution License v.10 which accompany
#   this distribution. The Eclipse Public License is available at
#   http://www.eclipse.org/legal/epl-v10.html and the Eclipse Distribution
#   License is available at https://eclipse.org/org/documents/edl-v10.php
Mccaskey, Alex's avatar
Mccaskey, Alex committed
8
#
9
10
11
12
# Contributors: Alexander J. McCaskey - initial API and implementation
# ******************************************************************************
# */
set(LIBRARY_NAME xacc-quantum-gate)
13
14


15
16
17
18
19
20
21
22
23
24
file(GLOB_RECURSE HEADERS *.hpp)
file(GLOB SRC
          *.cpp
          accelerator/*.cpp
          compiler/*.cpp
          ir/*.cpp
          ir/instructions/*.cpp
          utils/*.cpp
          ir/algorithms/*.cpp
          ir/transformations/*.cpp)
Mccaskey, Alex's avatar
Mccaskey, Alex committed
25
26
27
28
29
30
31
32


# Set up dependencies to resources to track changes
usFunctionGetResourceSource(TARGET ${LIBRARY_NAME} OUT SRC)

# Generate bundle initialization code
usFunctionGenerateBundleInit(TARGET ${LIBRARY_NAME} OUT SRC)

33
34
35
36
37
38
39
40
41
42
43
44
add_library(${LIBRARY_NAME} SHARED ${SRC})

target_include_directories(${LIBRARY_NAME}
                           PRIVATE utils
                                   ir
                                   compiler
                                   ir/instructions
                                   ir/algorithms
                                   accelerator
                                   ${CMAKE_BINARY_DIR}
                                   ${CMAKE_SOURCE_DIR}/quantum/utils
                                   ${CMAKE_SOURCE_DIR}/tpls/exprtk
45
46
47
48
                                   ${CMAKE_SOURCE_DIR}/tpls/rapidjson/include
                                   ${CMAKE_SOURCE_DIR}/tpls/taocpp
                                   ${CMAKE_SOURCE_DIR}/tpls/eigen)

49
set(_bundle_name xacc_quantum_gate)
50
51
52
53
54
55
56
set_target_properties(${LIBRARY_NAME}
                      PROPERTIES # This is required for every bundle
                                 COMPILE_DEFINITIONS
                                 US_BUNDLE_NAME=${_bundle_name}
                                 # This is for convenience, used by other CMake
                                 # functions
                                 US_BUNDLE_NAME ${_bundle_name})
57
58

# Embed meta-data from a manifest.json file
Mccaskey, Alex's avatar
Mccaskey, Alex committed
59
usFunctionEmbedResources(TARGET
60
61
62
63
64
65
66
                         ${LIBRARY_NAME}
                         WORKING_DIRECTORY
                         ${CMAKE_CURRENT_SOURCE_DIR}
                         FILES
                         manifest.json)

target_link_libraries(${LIBRARY_NAME} PUBLIC xacc Boost::graph)
67
68

if(APPLE)
69
70
71
72
  set_target_properties(xacc-quantum-gate
                        PROPERTIES INSTALL_RPATH "@loader_path")
  set_target_properties(xacc-quantum-gate
                        PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
73
else()
74
75
  set_target_properties(xacc-quantum-gate PROPERTIES INSTALL_RPATH "$ORIGIN")
  set_target_properties(xacc-quantum-gate PROPERTIES LINK_FLAGS "-shared")
76
77
endif()

78
add_subdirectory(compiler)
Mccaskey, Alex's avatar
Mccaskey, Alex committed
79
add_subdirectory(ir)
80
add_subdirectory(utils)
81
add_subdirectory(accelerator)
82

83
84
install(FILES ${HEADERS} DESTINATION include/quantum/gate)
install(TARGETS ${LIBRARY_NAME} DESTINATION lib)