# frozen_string_literal: true
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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.
#

if defined?(RUBY_ENGINE) && RUBY_ENGINE =~ /jruby/
  File.open('Makefile', 'w'){ |f| f.puts "all:\n\ninstall:\n" }
else
  require 'mkmf'

  append_cflags(["-fsigned-char", "-g", "-O2", "-Wall", "-Werror", "-Werror=old-style-definition"])

  # clang 21+ introduced -Wdefault-const-init-field-unsafe, which fires on
  # Ruby 3.2's rstring.h (struct RString has a const field via RBasic).
  # This is a Ruby header issue, not a Thrift bug, so suppress the warning here.
  # append_cflags silently ignores flags unsupported by the compiler, so this
  # is safe across all clang versions.
  append_cflags("-Wno-default-const-init-field-unsafe")

  # Makes all symbols private by default to avoid unintended conflict
  # with other gems. To explicitly export symbols you can use RUBY_FUNC_EXPORTED
  # selectively, or entirely remove this flag.
  append_cflags("-fvisibility=hidden")

  have_func("strlcpy", "string.h")

  create_makefile 'thrift_native'
end
