licenses(["notice"])  # lgpl

cc_library(
    name = "hpipm",
    srcs = [
        # dense qp
        "dense_qp/d_dense_qp.c",
        "dense_qp/d_dense_qp_sol.c",
        "dense_qp/d_dense_qp_kkt.c",
        "dense_qp/d_dense_qp_ipm_hard.c",
        "dense_qp/s_dense_qp.c",
        "dense_qp/s_dense_qp_sol.c",
        "dense_qp/s_dense_qp_kkt.c",
        "dense_qp/s_dense_qp_ipm_hard.c",
        # ocp qp
        "ocp_qp/d_ocp_qp.c",
        "ocp_qp/d_ocp_qp_sol.c",
        "ocp_qp/d_ocp_qp_kkt.c",
        "ocp_qp/d_ocp_qp_ipm_hard.c",
        "ocp_qp/s_ocp_qp.c",
        "ocp_qp/s_ocp_qp_sol.c",
        "ocp_qp/s_ocp_qp_kkt.c",
        "ocp_qp/s_ocp_qp_ipm_hard.c",
        "ocp_qp/m_ocp_qp.c",
        "ocp_qp/m_ocp_qp_kkt.c",
        "ocp_qp/m_ocp_qp_ipm_hard.c",
        # core qp
        "core_qp/d_core_qp_ipm_hard_aux.c",
        "core_qp/d_core_qp_ipm_hard.c",
        "core_qp/s_core_qp_ipm_hard_aux.c",
        "core_qp/s_core_qp_ipm_hard.c",
        # cond
        "cond/d_cond_aux.c",
        "cond/d_cond.c",
        "cond/d_part_cond.c",
    ],
    hdrs = [
        "include/hpipm_d_cond.h",
        "include/hpipm_d_cond_aux.h",
        "include/hpipm_d_core_qp_ipm_hard.h",
        "include/hpipm_d_core_qp_ipm_hard_aux.h",
        "include/hpipm_d_dense_qp.h",
        "include/hpipm_d_dense_qp_ipm_hard.h",
        "include/hpipm_d_dense_qp_kkt.h",
        "include/hpipm_d_dense_qp_sol.h",
        "include/hpipm_d_ocp_qp.h",
        "include/hpipm_d_ocp_qp_ipm_hard.h",
        "include/hpipm_d_ocp_qp_kkt.h",
        "include/hpipm_d_ocp_qp_sol.h",
        "include/hpipm_m_ocp_qp_ipm_hard.h",
        "include/hpipm_m_ocp_qp_kkt.h",
        "include/hpipm_s_core_qp_ipm_hard.h",
        "include/hpipm_s_core_qp_ipm_hard_aux.h",
        "include/hpipm_s_dense_qp.h",
        "include/hpipm_s_dense_qp_ipm_hard.h",
        "include/hpipm_s_dense_qp_kkt.h",
        "include/hpipm_s_dense_qp_sol.h",
        "include/hpipm_s_ocp_qp.h",
        "include/hpipm_s_ocp_qp_ipm_hard.h",
        "include/hpipm_s_ocp_qp_kkt.h",
        "include/hpipm_s_ocp_qp_sol.h",
    ],
    copts = [
        "-Wno-pointer-arith",
        "-Wno-unused-variable",
        "-Wno-unused-parameter",
    ],
    includes = ["include"],
    restricted_to = ["//tools:k8"],
    textual_hdrs = [
        "ocp_qp/x_ocp_qp_sol.c",
        "dense_qp/x_dense_qp.c",
        "dense_qp/x_dense_qp_ipm_hard.c",
        "core_qp/x_core_qp_ipm_hard_aux.c",
        "core_qp/x_core_qp_ipm_hard.c",
        "dense_qp/x_dense_qp_sol.c",
        "ocp_qp/x_ocp_qp_ipm_hard.c",
        "ocp_qp/x_ocp_qp.c",
        "ocp_qp/x_ocp_qp_kkt.c",
        "dense_qp/x_dense_qp_kkt.c",
    ],
    visibility = ["//visibility:public"],
    deps = [
        "//third_party/blasfeo",
    ],
)
