From patchwork Wed Mar 20 16:44:58 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 47270 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:3a4a:b0:1a3:31a3:7958 with SMTP id zu10csp15867pzb; Wed, 20 Mar 2024 09:45:27 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVEXOa1Qz5DPInTIy4UQaS1QMDJt2e1Ftzt5AKzBqrPqKwKibxfGRAzO3BKkal75HTQvTM31IQbai967nd83OOw8+H9GdZ6k1t+rg== X-Google-Smtp-Source: AGHT+IFDDfzA5KUuQ0MlAE9bwPrr7NfSE3/n2h8mff7kYWqQF4X4J3TdUH4LECPHt3m7e9aflGyp X-Received: by 2002:a05:6402:3884:b0:568:b610:b7f5 with SMTP id fd4-20020a056402388400b00568b610b7f5mr4861279edb.35.1710953127098; Wed, 20 Mar 2024 09:45:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1710953127; cv=none; d=google.com; s=arc-20160816; b=vjg/avaJmQgsCrZkmKt5CmBprjbmJvc8rA0yuvHklC1CA9NbS2+y49PMgkAGn1cf2a w8WGwSpWxNPxrU1pUlTvXhInYKs9u7/9Tlz9QbXmtaqtN7LvGR2LyugpeIKhS82Amfbp nESR/9UsMuIvDgyN5k5aqGGx2cTbQcxx1PHiZEKMQVY0NDZxH/DJwqMD5EgVncQjoQC/ VU+83BefhVdX1RA0/jzKi/wfXvrFyoHMS6Kg0F1lI1VTgE9boj1x36rmWRhEot+twr78 ma3/UlIE7RVo/C4YlVIKO3Zw9PRvL2QK3/Aq64wDbbEv8ZyzwJLETnhNDzTylj2UfSmZ NXPA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=XIWf271bcE2sLIZWweCfEZeB+FJs7FKs23MtLhBd9JA=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=Bva20NNlen+Jss/jXAaXXnxp7MwBePY9wgELiJ7EQhuxzT4px9XDQE9D+ms4aDlwK4 2PlxopDLSXdGdfSqnMJmgt0ahYzAU4MGm6EIu7UhpAU41W6FuJ5IdQ5r7vh9YXuKoMnR 7nsOwRLO1F4szYRoCa7lDCyOCOrFpPsIrL4XFsFiLRt9UwS8pJm+FlDJyb7H2c5QgrXL RLr6f3o5oIDh2109VSt7zTM2yT4Xpi6xz92AjNPB/NIAYsmlKtPiT6iBpjVowgY03ojl MOcD1UQipyZ2LGd8VKk5Sx8WbU6lcSEE8tRr2GqbNLkeBMPNjUxBiMti3eueMCtj/z5i mgTA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=LdKsFwrG; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id g42-20020a056402322a00b0056bb2c5dbd8si733590eda.74.2024.03.20.09.45.18; Wed, 20 Mar 2024 09:45:27 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=LdKsFwrG; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C7F4968D4A7; Wed, 20 Mar 2024 18:45:15 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg1-f176.google.com (mail-pg1-f176.google.com [209.85.215.176]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E0D0568D3C1 for ; Wed, 20 Mar 2024 18:45:09 +0200 (EET) Received: by mail-pg1-f176.google.com with SMTP id 41be03b00d2f7-5d8b70b39efso25304a12.0 for ; Wed, 20 Mar 2024 09:45:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1710953107; x=1711557907; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=hrnfB47gRvtjFoLVuhS1TLsJTcv49CJY+rPeNXk5jK0=; b=LdKsFwrGWJdwil2yf7YIO7cKUsvy3yY+36HhJ1xJOYL+ju284TD59+z61zU57smUet 3csrUxQL2ZlHc+9pbqe5EJ87KjvZ5EjQE1C2JEGbr/Zfz/a3rzjCF9PMp4Ag89oNn5IM HqTQ3WTjPX2XyQ9RUBrMY1WIa2q2I3OMlcTSCqzcPJnSgJxBGeZ0vAJSGvzc8/qObEpl oiNuMfzh0wt44COgLFDHJwgStO/Dz/jxT3VC7TIW+2Px12DQGB5kqZ82SQIdTqlWeRCj 4BKviXrcCe2dFbHMje0xQ0Tj8YjsmbJvie9+WOChdzMt0cPo9ebuv5MvyTM+qUjRpiqn GUiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710953107; x=1711557907; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hrnfB47gRvtjFoLVuhS1TLsJTcv49CJY+rPeNXk5jK0=; b=eyCD2/dTl+Sdu3+1Wa6/CJt5fTO79Y36sJYpRc/ibKKpng0mXbjb82UpXq8JL+UoCZ 5lnt/DHf1NRrxe4YFZMfe+qvcttmW+J37CsA7GidE+HTH5fOz/Ao/mcXW0Zw8depDinS OnTf4s0aHkJU/gkXrqpwgLTcEXFg46+255+mQsj1lTQytFYURe5bHRNEBlIDrKVqP2a/ L0z/vhsFpiARLmN42H9WmOwpKon1oX/+C39zY7bhVIUSOPfViW1OXLMVltkToanDltaA gnat1kL73GeIJRgFzSyJ1t6j3wRx5rIoZib911LVpVnA6p8iAYUb3mc65Z8Sm7wpIu9O fMOQ== X-Gm-Message-State: AOJu0YzZj4L2Ww2GU9bhO4YK8jBDTsh12lD4Igi5l9iG9ON1fAbEKS4H 5BJYplZGCBO6wxaQ+VHM6UmCWxkYs9ZHqQC6F7+BrgbXA2Mn+eetkX2WNmYk X-Received: by 2002:a05:6a20:491e:b0:1a3:48c8:6855 with SMTP id ft30-20020a056a20491e00b001a348c86855mr15363264pzb.26.1710953106572; Wed, 20 Mar 2024 09:45:06 -0700 (PDT) Received: from localhost.localdomain ([190.194.167.233]) by smtp.gmail.com with ESMTPSA id e25-20020aa78c59000000b006e6bf17ba8asm11803928pfd.65.2024.03.20.09.45.05 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Mar 2024 09:45:06 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Wed, 20 Mar 2024 13:44:58 -0300 Message-ID: <20240320164458.19749-1-jamrial@gmail.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240319224428.46481-1-jamrial@gmail.com> References: <20240319224428.46481-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/2 v3] configure: make the C and C++ standard settable X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: gvoOCFnzJP6+ While ensuring it's at least C11, the minimum supported version. Also, enforce C11 on the host compiler, same as we already do for C11 on the target compiler. Signed-off-by: James Almer --- Now with the new options added to CMDLINE_SET configure | 75 ++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 66 insertions(+), 9 deletions(-) diff --git a/configure b/configure index e019d1b996..838929d7f3 100755 --- a/configure +++ b/configure @@ -387,7 +387,9 @@ Toolchain options: --windres=WINDRES use windows resource compiler WINDRES [$windres_default] --x86asmexe=EXE use nasm-compatible assembler EXE [$x86asmexe_default] --cc=CC use C compiler CC [$cc_default] + --stdc=STDC use C standard STDC [$stdc_default] --cxx=CXX use C compiler CXX [$cxx_default] + --stdcxx=STDCXX use C standard STDCXX [$stdcxx_default] --objcc=OCC use ObjC compiler OCC [$cc_default] --dep-cc=DEPCC use dependency generator DEPCC [$cc_default] --nvcc=NVCC use Nvidia CUDA compiler NVCC or clang [$nvcc_default] @@ -1454,6 +1456,33 @@ test_cflags_cc(){ EOF } +check_cflags_cc(){ + log check_cflags_cc "$@" + flags=$1 + test_cflags_cc "$@" && add_cflags $flags +} + +test_cxxflags_cc(){ + log test_cxxflags_cc "$@" + flags=$1 + header=$2 + condition=$3 + shift 3 + set -- $($cflags_filter "$flags") + test_cxx "$@" < +#if !($condition) +#error "unsatisfied condition: $condition" +#endif +EOF +} + +check_cxxflags_cc(){ + log check_cxxflags_cc "$@" + flags=$1 + test_cxxflags_cc "$@" && add_cxxflags $flags +} + check_lib(){ log check_lib "$@" name="$1" @@ -1695,6 +1724,27 @@ int x; EOF } +test_host_cflags_cc(){ + log test_host_cflags_cc "$@" + flags=$1 + header=$2 + condition=$3 + shift 3 + set -- $($host_cflags_filter "$flags") + test_host_cc "$@" < +#if !($condition) +#error "unsatisfied condition: $condition" +#endif +EOF +} + +check_host_cflags_cc(){ + log check_host_cflags_cc "$@" + flags=$1 + test_host_cflags_cc "$@" && add_host_cflags $flags +} + test_host_cpp_condition(){ log test_host_cpp_condition "$@" header=$1 @@ -2652,6 +2702,8 @@ CMDLINE_SET=" random_seed ranlib samples + stdc + stdcxx strip sws_max_filter_size sysinclude @@ -3980,6 +4032,8 @@ mandir_default='${prefix}/share/man' # toolchain ar_default="ar" cc_default="gcc" +stdc_default="c11" +stdcxx_default="c++11" cxx_default="g++" host_cc_default="gcc" doxygen_default="doxygen" @@ -4587,7 +4641,7 @@ if enabled cuda_nvcc; then fi set_default arch cc cxx doxygen pkg_config ranlib strip sysinclude \ - target_exec x86asmexe metalcc metallib + target_exec x86asmexe metalcc metallib stdc stdcxx enabled cross_compile || host_cc_default=$cc set_default host_cc @@ -4757,7 +4811,7 @@ icl_flags(){ # Despite what Intel's documentation says -Wall, which is supported # on Windows, does enable remarks so disable them here. -Wall) echo $flag -Qdiag-disable:remark ;; - -std=c11) echo -Qstd=c11 ;; + -std=$stdc) echo -Qstd=$stdc ;; -flto*) echo -ipo ;; esac done @@ -4805,7 +4859,7 @@ suncc_flags(){ athlon*) echo -xarch=pentium_proa ;; esac ;; - -std=c11) echo -xc11 ;; + -std=$stdc) echo -x$stdc ;; -fomit-frame-pointer) echo -xregs=frameptr ;; -fPIC) echo -KPIC -xcode=pic32 ;; -W*,*) echo $flag ;; @@ -4894,8 +4948,8 @@ probe_cc(){ _type=suncc _ident=$($_cc -V 2>&1 | head -n1 | cut -d' ' -f 2-) _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< | sed -e "1s,^.*: ,$@: ," -e "\$$!s,\$$, \\\," -e "1!s,^.*: , ," > $(@:.o=.d)' - _DEPFLAGS='-xM1 -xc11' - _ldflags='-std=c11' + _DEPFLAGS='-xM1 -x$stdc' + _ldflags='-std=$stdc' _cflags_speed='-O5' _cflags_size='-O5 -xspace' _flags_filter=suncc_flags @@ -5526,18 +5580,21 @@ fi add_cppflags -D_ISOC11_SOURCE add_cxxflags -D__STDC_CONSTANT_MACROS -check_cxxflags -std=c++11 || check_cxxflags -std=c++0x +check_cxxflags_cc -std=$stdcxx ctype.h "__cplusplus >= 201103L" || + { check_cxxflags -std=c++11 && stdcxx="c++11" || { check_cxxflags -std=c++0x && stdcxx="c++0x"; }; } # some compilers silently accept -std=c11, so we also need to check that the # version macro is defined properly -test_cflags_cc -std=c11 ctype.h "__STDC_VERSION__ >= 201112L" && - add_cflags -std=c11 || die "Compiler lacks C11 support" +check_cflags_cc -std=$stdc ctype.h "__STDC_VERSION__ >= 201112L" || + { check_cflags_cc -std=c11 ctype.h "__STDC_VERSION__ >= 201112L" && stdc="c11" || die "Compiler lacks C11 support"; } check_cppflags -D_FILE_OFFSET_BITS=64 check_cppflags -D_LARGEFILE_SOURCE add_host_cppflags -D_ISOC11_SOURCE -check_host_cflags -std=c11 +check_host_cflags_cc -std=$stdc ctype.h "__STDC_VERSION__ >= 201112L" || + check_host_cflags_cc -std=c11 ctype.h "__STDC_VERSION__ >= 201112L" || die "Host compiler lacks C11 support" + check_host_cflags -Wall check_host_cflags $host_cflags_speed