load("@//tools/build_rules:select.bzl", "compiler_select")

cc_library(
    name = "apriltag",
    srcs = [
        "apriltag.c",
        "apriltag_pose.c",
        "apriltag_quad_thresh.c",
        "common/g2d.c",
        "common/getopt.c",
        "common/homography.c",
        "common/image_u8.c",
        "common/image_u8x3.c",
        "common/image_u8x4.c",
        "common/matd.c",
        "common/pam.c",
        "common/pjpeg.c",
        "common/pjpeg-idct.c",
        "common/pnm.c",
        "common/string_util.c",
        "common/svd22.c",
        "common/time_util.c",
        "common/unionfind.c",
        "common/workerpool.c",
        "common/zarray.c",
        "common/zhash.c",
        "common/zmaxheap.c",
        "tag16h5.c",
        "tag25h9.c",
        "tag36h11.c",
        "tagCircle21h7.c",
        "tagCircle49h12.c",
        "tagCustom48h12.c",
        "tagStandard41h12.c",
        "tagStandard52h13.c",
    ],
    hdrs = [
        "apriltag.h",
        "apriltag_math.h",
        "apriltag_pose.h",
        "common/debug_print.h",
        "common/g2d.h",
        "common/getopt.h",
        "common/homography.h",
        "common/image_types.h",
        "common/image_u8.h",
        "common/image_u8x3.h",
        "common/image_u8x4.h",
        "common/matd.h",
        "common/math_util.h",
        "common/pam.h",
        "common/pjpeg.h",
        "common/pnm.h",
        "common/postscript_utils.h",
        "common/pthreads_cross.h",
        "common/string_util.h",
        "common/svd22.h",
        "common/time_util.h",
        "common/timeprofile.h",
        "common/unionfind.h",
        "common/workerpool.h",
        "common/zarray.h",
        "common/zhash.h",
        "common/zmaxheap.h",
        "tag16h5.h",
        "tag25h9.h",
        "tag36h11.h",
        "tagCircle21h7.h",
        "tagCircle49h12.h",
        "tagCustom48h12.h",
        "tagStandard41h12.h",
        "tagStandard52h13.h",
    ],
    copts = compiler_select({
        "clang": [
            "-Wno-cast-align",
            "-Wno-incompatible-pointer-types-discards-qualifiers",
        ],
        "gcc": [
            "-Wno-discarded-qualifiers",
            "-Wno-shift-negative-value",
        ],
    }) + [
        "-Wno-sign-compare",
        "-Wno-cast-qual",
        "-Wno-unused-parameter",
        "-Wno-unused-variable",
        "-Wno-format-nonliteral",
    ],
    includes = ["."],
    target_compatible_with = ["@platforms//os:linux"],
    visibility = ["//visibility:public"],
)
