File: Directories.cmake

package info (click to toggle)
bornagain 23.0-6
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 103,956 kB
  • sloc: cpp: 423,131; python: 40,997; javascript: 11,167; awk: 630; sh: 356; ruby: 173; xml: 130; makefile: 45; ansic: 24
file content (109 lines) | stat: -rw-r--r-- 4,592 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
##  ************************************************************************************************
##
##  BornAgain: simulate and fit reflection and scattering
##
##! @file      cmake/BornAgain/Directories.cmake
##! @brief     Make directories, and set directory valued variables.
##!
##! @homepage  http://www.bornagainproject.org
##! @license   GNU General Public License v3 or higher (see COPYING)
##! @copyright Forschungszentrum Jülich GmbH 2024
##! @authors   Scientific Computing Group at MLZ (see CITATION, AUTHORS)
##
##  ************************************************************************************************
include(GNUInstallDirs)

# -----------------------------------------------------------------------------
# source directories
# -----------------------------------------------------------------------------

set(TOOL_DIR ${CMAKE_SOURCE_DIR}/devtools)
set(WRAP_DIR ${CMAKE_SOURCE_DIR}/Wrap)
set(SWIG_DIR ${WRAP_DIR}/Swig)

set(GUI_PROJECTS_DIR            ${CMAKE_SOURCE_DIR}/Tests/GUIprojects)
set(REFERENCE_DIR               ${CMAKE_SOURCE_DIR}/Tests/ReferenceData)
set(REFERENCE_DIR_CORESPECIAL   ${REFERENCE_DIR}/CoreSpecial)
set(REFERENCE_DIR_MINIEXAMPLES  ${REFERENCE_DIR}/MiniExamples)
set(REFERENCE_DIR_SUITE         ${REFERENCE_DIR}/Suite)

# -----------------------------------------------------------------------------
# auto directories (refreshed when CONFIGURE options are set)
# -----------------------------------------------------------------------------

set(AUTO_WRAP_DIR ${CMAKE_SOURCE_DIR}/auto/Wrap)
set(EXAMPLES_SRC_DIR ${CMAKE_SOURCE_DIR}/rawEx)
set(EXAMPLES_DATA_DIR ${CMAKE_SOURCE_DIR}/testdata)
set(EXAMPLES_PUBL_DIR ${CMAKE_SOURCE_DIR}/auto/Examples)
set(EXAMPLES_TEST_DIR ${CMAKE_SOURCE_DIR}/auto/MiniExamples)
set(EXAMPLES_FIGURES_DIR ${CMAKE_SOURCE_DIR}/auto/FigExamples)

file(MAKE_DIRECTORY ${AUTO_WRAP_DIR})
file(MAKE_DIRECTORY ${EXAMPLES_PUBL_DIR})
file(MAKE_DIRECTORY ${EXAMPLES_TEST_DIR})
file(MAKE_DIRECTORY ${EXAMPLES_FIGURES_DIR})

# -----------------------------------------------------------------------------
# output directories
# -----------------------------------------------------------------------------

set(CMAKE_LIBRARY_OUTPUT_DIRECTORY         ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY         ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG   ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})

set(BUILD_VAR_DIR ${CMAKE_BINARY_DIR}/var)
set(BUILD_INC_DIR ${CMAKE_BINARY_DIR}/inc)
set(BUILD_SRC_DIR ${CMAKE_BINARY_DIR}/src)

set(TEST_OUTPUT_DIR             ${CMAKE_BINARY_DIR}/test_output)
set(TEST_OUTPUT_DIR_SUITE       ${TEST_OUTPUT_DIR}/Suite)

configure_file("${CONFIGURABLES_DIR}/auto_README.in.md" "${CMAKE_SOURCE_DIR}/auto/README.md" @ONLY)

file(MAKE_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
file(MAKE_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
file(MAKE_DIRECTORY ${BUILD_VAR_DIR})
file(MAKE_DIRECTORY ${BUILD_INC_DIR})
file(MAKE_DIRECTORY ${BUILD_SRC_DIR})
file(MAKE_DIRECTORY ${TEST_OUTPUT_DIR})
file(MAKE_DIRECTORY ${TEST_OUTPUT_DIR_SUITE})

# -----------------------------------------------------------------------------
# file extensions
# -----------------------------------------------------------------------------
set(libprefix _lib)

if(WIN32)
    # under Windows, .pyd files are needed as the Python extension; see
    # <https://docs.python.org/3/faq/windows.html#is-a-pyd-file-the-same-as-a-dll>
    set(libsuffix .pyd)
else()
    set(libsuffix .so)
endif()

# -----------------------------------------------------------------------------
# destinations
# -----------------------------------------------------------------------------
set(destination_suffix ${CMAKE_PROJECT_NAME})

set(dstIds "")

set(destination_bin ${destination_root}bin/)
set(destination_lib ${destination_root}lib/${CMAKE_DEB_HOST_MULTIARCH}/bornagain/)
if(WIN32)
    # on Window, the libraries must be in the same folder as the executable
    set(destination_lib ${destination_bin})
endif()
set(destination_include ${CMAKE_INSTALL_INCLUDEDIR}/${CMAKE_PROJECT_NAME})
set(destination_share ${CMAKE_INSTALL_DATAROOTDIR}/${CMAKE_PROJECT_NAME})
set(destination_examples ${destination_share}/Examples)
set(destination_images ${destination_share}/Images)
set(destination_man ${destination_root}share/man/man1/)

list(APPEND dstIds bin lib include share examples images man)

message(STATUS "Destination directories:")
foreach(dstId IN LISTS dstIds)
    message("     ${dstId} -> ${destination_${dstId}}")
endforeach()