CMakeLists.txt 3.2 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
45
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
                                   ${CMAKE_SOURCE_DIR}/tpls/rapidjson/include)
Mccaskey, Alex's avatar
Mccaskey, Alex committed
46
                                   
47
set(_bundle_name xacc_quantum_gate)
48
49
50
51
52
53
54
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})
55
56

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

target_link_libraries(${LIBRARY_NAME} PUBLIC xacc Boost::graph)
65
66

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

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

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