# Copyright 2010-2025 Google LLC # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. load("@rules_cc//cc:cc_library.bzl", "cc_library") package(default_visibility = ["//visibility:public"]) cc_library( name = "preprocessor", srcs = ["preprocessor.cc"], hdrs = ["preprocessor.h"], deps = [ "//ortools/glop:preprocessor", "//ortools/lp_data", "//ortools/lp_data:base", "//ortools/lp_data:lp_utils", "//ortools/lp_data:sparse", "//ortools/lp_data:sparse_column", "//ortools/util:fp_utils", "//ortools/util:return_macros", "//ortools/util:stats", "@abseil-cpp//absl/log", "@abseil-cpp//absl/log:check", ], ) cc_library( name = "proto_utils", hdrs = ["proto_utils.h"], deps = [ "//ortools/linear_solver:linear_solver_cc_proto", "//ortools/port:proto_utils", "@abseil-cpp//absl/log", "@abseil-cpp//absl/log:check", "@abseil-cpp//absl/status:statusor", "@protobuf", ], ) cc_library( name = "glop_proto_solver", srcs = ["glop_proto_solver.cc"], hdrs = ["glop_proto_solver.h"], deps = [ ":proto_utils", "//ortools/glop:lp_solver", "//ortools/glop:parameters_cc_proto", "//ortools/glop:parameters_validation", "//ortools/linear_solver:linear_solver_cc_proto", "//ortools/linear_solver:model_validator", "//ortools/lp_data", "//ortools/lp_data:base", "//ortools/lp_data:proto_utils", "//ortools/port:proto_utils", "//ortools/util:lazy_mutable_copy", "//ortools/util:logging", "//ortools/util:time_limit", "@abseil-cpp//absl/log", "@abseil-cpp//absl/log:check", "@abseil-cpp//absl/strings", ], ) cc_library( name = "pdlp_proto_solver", srcs = ["pdlp_proto_solver.cc"], hdrs = ["pdlp_proto_solver.h"], deps = [ "//ortools/base:logging", "//ortools/base:status_macros", "//ortools/linear_solver:linear_solver_cc_proto", "//ortools/linear_solver:model_validator", "//ortools/pdlp:iteration_stats", "//ortools/pdlp:primal_dual_hybrid_gradient", "//ortools/pdlp:quadratic_program", "//ortools/pdlp:solve_log_cc_proto", "//ortools/pdlp:solvers_cc_proto", "//ortools/port:proto_utils", "//ortools/util:lazy_mutable_copy", "@abseil-cpp//absl/status:statusor", ], ) cc_library( name = "sat_solver_utils", srcs = ["sat_solver_utils.cc"], hdrs = ["sat_solver_utils.h"], deps = [ ":preprocessor", "//ortools/glop:parameters_cc_proto", "//ortools/glop:preprocessor", "//ortools/linear_solver:linear_solver_cc_proto", "//ortools/lp_data", "//ortools/lp_data:base", "//ortools/lp_data:proto_utils", "//ortools/util:logging", "//ortools/util:time_limit", "@abseil-cpp//absl/log:check", ], ) cc_library( name = "sat_proto_solver", srcs = ["sat_proto_solver.cc"], hdrs = ["sat_proto_solver.h"], deps = [ ":proto_utils", ":sat_solver_utils", "//ortools/glop:preprocessor", "//ortools/linear_solver:linear_solver_cc_proto", "//ortools/linear_solver:model_validator", "//ortools/lp_data", "//ortools/lp_data:base", "//ortools/port:proto_utils", "//ortools/sat:cp_model_cc_proto", "//ortools/sat:cp_model_solver", "//ortools/sat:lp_utils", "//ortools/sat:model", "//ortools/sat:parameters_validation", "//ortools/sat:sat_parameters_cc_proto", "//ortools/util:lazy_mutable_copy", "//ortools/util:logging", "//ortools/util:time_limit", "@abseil-cpp//absl/log", "@abseil-cpp//absl/log:check", "@abseil-cpp//absl/strings", "@abseil-cpp//absl/types:span", ], ) cc_library( name = "scip_params", srcs = ["scip_params.cc"], hdrs = ["scip_params.h"], deps = [ "//ortools/base", "//ortools/linear_solver:scip_helper_macros", "@abseil-cpp//absl/status", "@abseil-cpp//absl/strings", "@abseil-cpp//absl/strings:str_format", "@scip", ], ) cc_library( name = "scip_proto_solver", srcs = ["scip_proto_solver.cc"], hdrs = ["scip_proto_solver.h"], defines = select({ "//ortools/linear_solver:use_scip": ["USE_SCIP"], "//conditions:default": [], }), deps = [ ":scip_params", "//ortools/base:status_macros", "//ortools/base:timer", "//ortools/linear_solver:linear_solver_cc_proto", "//ortools/linear_solver:model_validator", "//ortools/linear_solver:scip_helper_macros", "//ortools/util:lazy_mutable_copy", "@abseil-cpp//absl/base:core_headers", "@abseil-cpp//absl/cleanup", "@abseil-cpp//absl/container:btree", "@abseil-cpp//absl/flags:flag", "@abseil-cpp//absl/log", "@abseil-cpp//absl/log:check", "@abseil-cpp//absl/status", "@abseil-cpp//absl/status:statusor", "@abseil-cpp//absl/strings", "@abseil-cpp//absl/strings:str_format", "@abseil-cpp//absl/time", ] + select({ "//ortools/linear_solver:use_scip": ["@scip"], "//conditions:default": [], }), ) cc_library( name = "gurobi_proto_solver", srcs = ["gurobi_proto_solver.cc"], hdrs = ["gurobi_proto_solver.h"], deps = [ "//ortools/base:status_macros", "//ortools/base:timer", "//ortools/linear_solver:gurobi_util", "//ortools/linear_solver:linear_solver_cc_proto", "//ortools/linear_solver:model_validator", "//ortools/third_party_solvers:gurobi_environment", "//ortools/util:lazy_mutable_copy", "@abseil-cpp//absl/base:core_headers", "@abseil-cpp//absl/cleanup", "@abseil-cpp//absl/log", "@abseil-cpp//absl/log:check", "@abseil-cpp//absl/status", "@abseil-cpp//absl/status:statusor", "@abseil-cpp//absl/strings", "@abseil-cpp//absl/strings:str_format", "@abseil-cpp//absl/time", ], ) cc_library( name = "highs_proto_solver", srcs = ["highs_proto_solver.cc"], hdrs = ["highs_proto_solver.h"], defines = select({ "//ortools/linear_solver:use_highs": ["USE_HIGHS"], "//conditions:default": [], }), deps = [ "//ortools/base:timer", "//ortools/linear_solver:linear_solver_cc_proto", "//ortools/linear_solver:model_validator", "//ortools/util:lazy_mutable_copy", "@abseil-cpp//absl/status", "@abseil-cpp//absl/status:statusor", "@abseil-cpp//absl/strings", "@abseil-cpp//absl/time", "@abseil-cpp//absl/types:optional", "@highs", "@protobuf", ], )