Skip to content

Commit 5142796

Browse files
committed
Fixing cmake usage
1 parent 7c46d35 commit 5142796

6 files changed

Lines changed: 182 additions & 37 deletions

File tree

.clang-tidy

Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
Checks: >
2+
-clang-analyzer-core.NonNullParamChecker,
3+
-clang-analyzer-optin.cplusplus.UninitializedObject,
4+
abseil-duration-*,
5+
abseil-faster-strsplit-delimiter,
6+
abseil-no-namespace,
7+
abseil-redundant-strcat-calls,
8+
abseil-str-cat-append,
9+
abseil-string-find-startswith,
10+
abseil-upgrade-duration-conversions,
11+
bugprone-assert-side-effect,
12+
bugprone-unused-raii,
13+
bugprone-use-after-move,
14+
clang-analyzer-core.DivideZero,
15+
misc-unused-using-decls,
16+
modernize-deprecated-headers,
17+
modernize-loop-convert,
18+
modernize-make-shared,
19+
modernize-make-unique,
20+
# modernize-return-braced-init-list,
21+
modernize-use-default-member-init,
22+
modernize-use-equals-default,
23+
modernize-use-nullptr,
24+
modernize-use-override,
25+
modernize-use-using,
26+
performance-faster-string-find,
27+
performance-for-range-copy,
28+
performance-inefficient-algorithm,
29+
performance-inefficient-vector-operation,
30+
performance-noexcept-move-constructor,
31+
performance-move-constructor-init,
32+
performance-type-promotion-in-math-fn,
33+
performance-unnecessary-copy-initialization,
34+
readability-container-size-empty,
35+
readability-identifier-naming,
36+
readability-redundant-control-flow,
37+
readability-redundant-member-init,
38+
readability-redundant-smartptr-get,
39+
readability-redundant-string-cstr
40+
41+
CheckOptions:
42+
- key: cppcoreguidelines-unused-variable.IgnorePattern
43+
value: "^_$"
44+
- key: bugprone-assert-side-effect.AssertMacros
45+
value: 'ASSERT'
46+
- key: bugprone-dangling-handle.HandleClasses
47+
value: 'std::basic_string_view;std::experimental::basic_string_view;absl::string_view'
48+
- key: modernize-use-auto.MinTypeNameLength
49+
value: '10'
50+
- key: readability-identifier-naming.ClassCase
51+
value: 'lower_case'
52+
- key: readability-identifier-naming.EnumCase
53+
value: 'CamelCase'
54+
- key: readability-identifier-naming.EnumConstantCase
55+
value: 'lower_case'
56+
# Ignore GoogleTest function macros.
57+
- key: readability-identifier-naming.FunctionIgnoredRegexp
58+
# To have the regex chomped correctly fence all items with `|` (other than first/last)
59+
value: >-
60+
(^AbslHashValue$|
61+
|^called_count$|
62+
|^case_sensitive$|
63+
|^Create$|
64+
|^envoy_resolve_dns$|
65+
|^evconnlistener_free$|
66+
|^event_base_free$|
67+
|^(get|set)EVP_PKEY$|
68+
|^has_value$|
69+
|^Ip6(ntohl|htonl)$|
70+
|^get_$|
71+
|^HeaderHasValue(Ref)?$|
72+
|^HeaderValueOf$|
73+
|^Is(Superset|Subset)OfHeaders$|
74+
|^LLVMFuzzerInitialize$|
75+
|^LLVMFuzzerTestOneInput$|
76+
|^Locality$|
77+
|^MOCK_METHOD$|
78+
|^PrepareCall$|
79+
|^PrintTo$|
80+
|^resolve_dns$|
81+
|^result_type$|
82+
|Returns(Default)?WorkerId$|
83+
|^sched_getaffinity$|
84+
|^shutdownThread_$|
85+
|TEST|
86+
|^use_count$)
87+
- key: readability-identifier-naming.VariableCase
88+
value: 'lower_case'
89+
- key: readability-identifier-naming.ClassCase
90+
value: 'CamelCase'
91+
- key: readability-identifier-naming.ParameterCase
92+
value: 'lower_case'
93+
- key: readability-identifier-naming.ParameterIgnoredRegexp
94+
value: >-
95+
(^cname_ttl_$|
96+
|^_.*$|
97+
|^.*limitK$|
98+
|^.*limitM$)
99+
- key: readability-identifier-naming.PrivateMemberCase
100+
value: 'lower_case'
101+
# - key: readability-identifier-naming.PrivateMemberSuffix
102+
# value: '_'
103+
- key: readability-identifier-naming.StructCase
104+
value: 'CamelCase'
105+
- key: readability-identifier-naming.TypeAliasCase
106+
value: 'lower_case'
107+
- key: readability-identifier-naming.TypeAliasIgnoredRegexp
108+
value: '(result_type)'
109+
- key: readability-identifier-naming.UnionCase
110+
value: 'CamelCase'
111+
- key: readability-identifier-naming.FunctionCase
112+
value: 'lower_case'
113+
- key: readability-identifier-naming.FunctionIgnoredRegexp
114+
value: >-
115+
(^.*nVars.*$|
116+
|^.*limitK$|
117+
|^.*limitM$)
118+
119+
HeaderFilterRegex: '^./source/.*|^./contrib/.*|^./test/.*|^./envoy/.*'
120+
121+
UseColor: true
122+
123+
WarningsAsErrors: ''
124+
125+
## The version here is arbitrary since any change to this file will
126+
## trigger a full run of clang-tidy against all files.
127+
## It can be useful as it seems some header changes may not trigger the
128+
## expected rerun.
129+
# v0

CMakeLists.txt

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
1919
# THE SOFTWARE.
2020

21-
cmake_minimum_required(VERSION 3.12 FATAL_ERROR)
21+
cmake_minimum_required(VERSION 3.15 FATAL_ERROR)
2222

2323
# CMP0104 (CUDA architectures default) was introduced in 3.18; guard needed
2424
if(POLICY CMP0104)
@@ -58,6 +58,8 @@ foreach(build_config ${build_types})
5858
endforeach()
5959
endforeach()
6060

61+
set(CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY ON)
62+
set(CMAKE_EXPORT_PACKAGE_REGISTRY OFF)
6163
project(ganak)
6264
set(CMAKE_CXX_EXTENSIONS OFF)
6365
set(CMAKE_C_STANDARD 99)
@@ -297,7 +299,6 @@ set(FPHSA_NAME_MISMATCHED 1) # Suppress warnings, see https://cmake.org/cmake/he
297299
find_package(GMP REQUIRED)
298300
find_package(MPFR REQUIRED)
299301
find_package(MPFI REQUIRED)
300-
301302
find_package(FLINT REQUIRED)
302303
message(STATUS "MPFR include dir: ${MPFR_INCLUDE_DIR}")
303304
message(STATUS "MPFI include dir: ${MPFI_INCLUDES}")
@@ -315,12 +316,14 @@ if(NOT NOZLIB AND NOT (STATICCOMPILE AND WIN32))
315316
endif()
316317
endif()
317318

319+
set(cryptominisat5_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../cryptominisat/build")
318320
find_package(cryptominisat5 CONFIG REQUIRED)
321+
set(arjun_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../arjun/build")
319322
find_package(arjun CONFIG REQUIRED)
320-
find_package(sbva CONFIG REQUIRED)
321-
find_package(breakid CONFIG REQUIRED)
323+
# find_package(breakid CONFIG REQUIRED)
324+
set(approxmc_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../approxmc/build")
322325
find_package(approxmc CONFIG REQUIRED)
323-
find_package(EvalMaxSAT REQUIRED)
326+
set(treedecomp_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../treedecomp/build")
324327
find_package(treedecomp CONFIG REQUIRED)
325328

326329
message(STATUS "CryptoMiniSat5 dynamic lib: ${CRYPTOMINISAT5_LIBRARIES}")

flake.nix

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@
1818
url = "github:meelgroup/approxmc/synth";
1919
inputs.nixpkgs.follows = "nixpkgs";
2020
};
21-
breakid = {
22-
url = "github:meelgroup/breakid/master";
23-
inputs.nixpkgs.follows = "nixpkgs";
24-
};
21+
# breakid = {
22+
# url = "github:meelgroup/breakid/master";
23+
# inputs.nixpkgs.follows = "nixpkgs";
24+
# };
2525
evalmaxsat = {
2626
url = "github:meelgroup/EvalMaxSAT/master";
2727
inputs.nixpkgs.follows = "nixpkgs";
@@ -38,7 +38,7 @@
3838
nixpkgs,
3939
arjun,
4040
approxmc,
41-
breakid,
41+
# breakid,
4242
cryptominisat,
4343
sbva,
4444
evalmaxsat,
@@ -64,7 +64,7 @@
6464
cryptominisat,
6565
arjun,
6666
sbva,
67-
breakid,
67+
# breakid,
6868
approxmc,
6969
python3,
7070
python3Packages,
@@ -89,7 +89,7 @@
8989
cryptominisat
9090
arjun
9191
sbva
92-
breakid
92+
# breakid
9393
approxmc
9494
evalmaxsat
9595
treedecomp
@@ -123,7 +123,7 @@
123123
cryptominisat = cryptominisat.packages.${system}.cryptominisat;
124124
arjun = arjun.packages.${system}.arjun;
125125
sbva = sbva.packages.${system}.sbva;
126-
breakid = breakid.packages.${system}.breakid;
126+
# breakid = breakid.packages.${system}.breakid;
127127
approxmc = approxmc.packages.${system}.approxmc;
128128
evalmaxsat = evalmaxsat.packages.${system}.evalmaxsat;
129129
treedecomp = treedecomp.packages.${system}.treedecomp;

scripts/build_norm.sh

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
rm -rf CMake* src cmake* ganak* sharp* Make* Testing* tests* include
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
rm -rf CMake* src cmake* ganak* sharp* Make* Testing* tests* include .cmake
25
cmake -DENABLE_TESTING=ON ..
36
make -j12
47
make test

src/CMakeLists.txt

Lines changed: 29 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -70,31 +70,20 @@ target_include_directories(ganak
7070
${CMAKE_CURRENT_SOURCE_DIR}
7171
${CMAKE_CURRENT_SOURCE_DIR}/buddy-2.4/
7272
${CMAKE_CURRENT_SOURCE_DIR}/buddy-2.4/src/
73-
PUBLIC
74-
${CRYPTOMINISAT5_INCLUDE_DIRS}
75-
${ARJUN_INCLUDE_DIRS}
76-
${MPFR_INCLUDE_DIR}
77-
${MPFI_INCLUDES}
78-
${GMP_INCLUDE_DIR}
79-
${BREAKID_INCLUDE_DIRS}
8073
${APPROXMC_INCLUDE_DIRS}
81-
${FLINT_INCLUDE_DIRS}
82-
${EVALMAXSAT_INCLUDE_DIRS}
8374
${TREEDECOMP_INCLUDE_DIRS}
75+
${ARJUN_INCLUDE_DIRS}
76+
PUBLIC
77+
${CRYPTOMINISAT5_INCLUDE_DIRS}
8478
)
8579

8680
target_link_libraries(ganak
87-
PUBLIC
81+
PRIVATE
8882
Threads::Threads
89-
${CRYPTOMINISAT5_LIBRARIES}
90-
${ARJUN_LIBRARIES}
9183
${APPROXMC_LIBRARIES}
92-
${BREAKID_LIBRARIES}
93-
${FLINT_LIBRARIES}
94-
${MPFI_LIBRARIES}
95-
${MPFR_LIBRARIES}
96-
${GMP_LIBRARIES}
9784
${TREEDECOMP_LIBRARIES}
85+
PUBLIC
86+
${CRYPTOMINISAT5_LIBRARIES}
9887
)
9988

10089
set_target_properties(ganak PROPERTIES
@@ -107,16 +96,37 @@ set_target_properties(ganak PROPERTIES
10796
add_executable(ganak-bin main.cpp)
10897
add_executable(example-bin example.cpp)
10998

110-
target_link_libraries(ganak-bin PRIVATE ganak)
111-
target_link_libraries(example-bin PRIVATE ganak)
99+
target_link_libraries(ganak-bin
100+
PRIVATE
101+
ganak
102+
${ARJUN_LIBRARIES}
103+
${FLINT_LIBRARIES}
104+
${MPFI_LIBRARIES}
105+
${MPFR_LIBRARIES}
106+
${GMP_LIBRARIES}
107+
# ${BREAKID_INCLUDE_DIRS}
108+
${FLINT_INCLUDE_DIRS}
109+
${APPROXMC_LIBRARIES}
110+
)
111+
target_link_libraries(example-bin
112+
PRIVATE
113+
ganak
114+
${ARJUN_LIBRARIES}
115+
${GMP_LIBRARIES}
116+
)
112117

113118
target_include_directories(ganak-bin PRIVATE
114119
${PROJECT_SOURCE_DIR}
115120
${CMAKE_CURRENT_SOURCE_DIR}
121+
${ARJUN_INCLUDE_DIRS}
122+
${GMP_INCLUDE_DIR}
123+
${APPROXMC_INCLUDE_DIRS}
116124
)
117125
target_include_directories(example-bin PRIVATE
118126
${PROJECT_SOURCE_DIR}
119127
${CMAKE_CURRENT_SOURCE_DIR}
128+
${ARJUN_INCLUDE_DIRS}
129+
${GMP_INCLUDE_DIR}
120130
)
121131

122132
if(ZLIB_FOUND)

src/main.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ THE SOFTWARE.
4949
#include "fmpfi.hpp"
5050
#include <approxmc/approxmc.h>
5151

52-
#define MAX_DIGIT_PRECISION 1e6
52+
static constexpr uint32_t max_digit_precision = 1e6;
5353

5454
using CMSat::StreamBuffer;
5555
using CMSat::DimacsParser;
@@ -503,16 +503,16 @@ double digit_precision_mpfi(mpfi_srcptr v) {
503503
mpfr_clear(diam);
504504
mpfr_clear(left);
505505
mpfr_clear(right);
506-
return MAX_DIGIT_PRECISION;
506+
return max_digit_precision;
507507
}
508508

509509
mpfr_log10(diam, diam, MPFR_RNDN);
510510
double result = -mpfr_get_d(diam, MPFR_RNDN);
511511
if (result < 0)
512512
result = 0.0;
513513

514-
if (result > MAX_DIGIT_PRECISION)
515-
result = MAX_DIGIT_PRECISION;
514+
if (result > max_digit_precision)
515+
result = max_digit_precision;
516516

517517
mpfr_clear(diam);
518518
mpfr_clear(left);

0 commit comments

Comments
 (0)