[go: up one dir, main page]

File: CMakeLists.txt

package info (click to toggle)
iminuit 2.30.1-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 8,660 kB
  • sloc: cpp: 14,591; python: 11,177; makefile: 11; sh: 5
file content (120 lines) | stat: -rw-r--r-- 5,108 bytes parent folder | download
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
110
111
112
113
114
115
116
117
118
119
120
cmake_minimum_required(VERSION 3.15...3.26)

project(iminuit LANGUAGES CXX)

if(NOT DEFINED SKBUILD)
  message(
    WARNING
      "You should call this through Python so that all variables are set; pip install -v ."
  )
endif()

include(CheckIPOSupported)
check_ipo_supported(RESULT ipo_supported OUTPUT error)

set(CMAKE_CXX_STANDARD
    14
    CACHE STRING "C++ version selection") # or 11, 14, 17, 20
set(CMAKE_CXX_STANDARD_REQUIRED ON) # optional, ensure standard is supported
set(CMAKE_CXX_EXTENSIONS OFF) # optional, keep compiler extensionsn off
set(PYBIND11_FINDPYTHON ON)
find_package(pybind11 CONFIG REQUIRED)

file(GLOB SOURCES_A "src/*.cpp")
set(SOURCES_B
    extern/root/math/minuit2/src/AnalyticalGradientCalculator.cxx
    extern/root/math/minuit2/src/BFGSErrorUpdator.cxx
    extern/root/math/minuit2/src/DavidonErrorUpdator.cxx
    extern/root/math/minuit2/src/HessianGradientCalculator.cxx
    extern/root/math/minuit2/src/ExternalInternalGradientCalculator.cxx
    extern/root/math/minuit2/src/InitialGradientCalculator.cxx
    extern/root/math/minuit2/src/LaEigenValues.cxx
    extern/root/math/minuit2/src/LaInnerProduct.cxx
    extern/root/math/minuit2/src/LaInverse.cxx
    extern/root/math/minuit2/src/LaOuterProduct.cxx
    extern/root/math/minuit2/src/LaSumOfElements.cxx
    extern/root/math/minuit2/src/LaVtMVSimilarity.cxx
    extern/root/math/minuit2/src/MPIProcess.cxx
    extern/root/math/minuit2/src/MinimumBuilder.cxx
    extern/root/math/minuit2/src/MnApplication.cxx
    extern/root/math/minuit2/src/MnContours.cxx
    extern/root/math/minuit2/src/MnCovarianceSqueeze.cxx
    extern/root/math/minuit2/src/MnFcn.cxx
    extern/root/math/minuit2/src/MnFunctionCross.cxx
    extern/root/math/minuit2/src/MnGlobalCorrelationCoeff.cxx
    extern/root/math/minuit2/src/MnHesse.cxx
    extern/root/math/minuit2/src/MnLineSearch.cxx
    extern/root/math/minuit2/src/MnMachinePrecision.cxx
    extern/root/math/minuit2/src/MnMinos.cxx
    extern/root/math/minuit2/src/MnParabolaFactory.cxx
    extern/root/math/minuit2/src/MnParameterScan.cxx
    extern/root/math/minuit2/src/MnPlot.cxx
    extern/root/math/minuit2/src/MnPosDef.cxx
    extern/root/math/minuit2/src/MnPrint.cxx
    extern/root/math/minuit2/src/MnSeedGenerator.cxx
    extern/root/math/minuit2/src/MnStrategy.cxx
    extern/root/math/minuit2/src/MnScan.cxx
    extern/root/math/minuit2/src/MnTiny.cxx
    extern/root/math/minuit2/src/MnTraceObject.cxx
    extern/root/math/minuit2/src/MnUserFcn.cxx
    extern/root/math/minuit2/src/MnUserParameterState.cxx
    extern/root/math/minuit2/src/MnUserParameters.cxx
    extern/root/math/minuit2/src/MnUserTransformation.cxx
    extern/root/math/minuit2/src/ModularFunctionMinimizer.cxx
    extern/root/math/minuit2/src/NegativeG2LineSearch.cxx
    extern/root/math/minuit2/src/Numerical2PGradientCalculator.cxx
    extern/root/math/minuit2/src/SimplexSeedGenerator.cxx
    extern/root/math/minuit2/src/SimplexBuilder.cxx
    extern/root/math/minuit2/src/SimplexParameters.cxx
    extern/root/math/minuit2/src/SinParameterTransformation.cxx
    extern/root/math/minuit2/src/ScanBuilder.cxx
    extern/root/math/minuit2/src/SqrtLowParameterTransformation.cxx
    extern/root/math/minuit2/src/SqrtUpParameterTransformation.cxx
    extern/root/math/minuit2/src/VariableMetricBuilder.cxx
    extern/root/math/minuit2/src/VariableMetricEDMEstimator.cxx
    extern/root/math/minuit2/src/mnbins.cxx
    extern/root/math/minuit2/src/mndasum.cxx
    extern/root/math/minuit2/src/mndaxpy.cxx
    extern/root/math/minuit2/src/mnddot.cxx
    extern/root/math/minuit2/src/mndscal.cxx
    extern/root/math/minuit2/src/mndspmv.cxx
    extern/root/math/minuit2/src/mndspr.cxx
    extern/root/math/minuit2/src/mnlsame.cxx
    extern/root/math/minuit2/src/mnteigen.cxx
    extern/root/math/minuit2/src/mntplot.cxx
    extern/root/math/minuit2/src/mnvert.cxx
    extern/root/math/minuit2/src/mnxerbla.cxx)

pybind11_add_module(_core MODULE ${SOURCES_A} ${SOURCES_B})

target_include_directories(_core PRIVATE extern/root/math/minuit2/inc)
target_compile_definitions(_core PUBLIC PYBIND11_DETAILED_ERROR_MESSAGES=1)
set_target_properties(_core PROPERTIES VISIBILITY_INLINES_HIDDEN ON)
if(ipo_supported)
  set_target_properties(_core PROPERTIES INTERPROCEDURAL_OPTIMIZATION TRUE)
endif()

# Add compiler-specific extra warnings
if(MSVC)
  target_compile_options(_core PRIVATE /std:c++14 /Y-)
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
  # lots of warnings from gcc, including odr violations
  target_compile_options(
    _core
    PRIVATE -Wall
            -Wextra
            -Werror
            -Werror=odr
            -Werror=lto-type-mismatch
            -Werror=strict-aliasing
            -pedantic
            -fstrict-aliasing)
  target_link_options(_core PRIVATE -Werror -Wodr -Wlto-type-mismatch)
else()
  # lots of warnings from clang
  target_compile_options(_core PRIVATE -Wall -Wextra -pedantic -Werror
                                       -Werror=odr -fstrict-aliasing)
  target_link_options(_core PRIVATE -Werror -Wodr)
endif()

install(TARGETS _core DESTINATION iminuit)