From patchwork Tue Mar 19 22:44:27 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 47238 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8ba5:b0:1a3:31a3:7958 with SMTP id m37csp48240pzh; Tue, 19 Mar 2024 15:44:45 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWTwH4+RyyBlYBJ1eibvtkQqquXMG3Ml/oohrJTaLecSnYTaHILhSer1G0V7BiBKgEbzsOm6sqpvbYJ9wyM03gfA5guqVyKOApvWQ== X-Google-Smtp-Source: AGHT+IG7KVXbDbOSvASl49Zr80P5xPd85KxhFyZykmpWXGF9c+IQfjL/EdTXltYBq8d4QR5nbniR X-Received: by 2002:a17:906:4902:b0:a46:7b92:8d2b with SMTP id b2-20020a170906490200b00a467b928d2bmr169486ejq.46.1710888285127; Tue, 19 Mar 2024 15:44:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1710888285; cv=none; d=google.com; s=arc-20160816; b=vMB9uTScUD977mR528SUbwc7IvPF/cEJzl43GSJLhaigXJ5o6L+nN+UP0ZbWExuL79 v8scZB6/9pyG+aR6wBpdsnTu0110OqSOfcyDjfwglw2VuXUdbv8ANk4MR6BNoXMJ+sAq vmB+z9Z5C/CnY0N50xvQrMGxyjH311QczBG8YJ7KLGqrE9eH3oP5Gr/nTO0KGrEDyVHp O0htrLngDGjagT+a2/EZoalqaVnlegkSUhzMoesUxGKN7FyYaNZekcWYhe7DJXf9WZX0 yVqOi35pXmizPE91LBkLvmOVV2mHWS1zONyl49gcmGw1y+YpJgDI1sW6i7+KY/Vpd6Hm Iz+g== 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:message-id:date:to:from :dkim-signature:delivered-to; bh=jubNOfNhE484NyGU6FEiKYDYD5hgAH6ItLwK3h5zP9Q=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=H9QnPzZipHv2JKapyHYCbpX6uWTSeZ9DHqfxehfrwiDMvTYPio9da8kfXBlTzUwhK0 fmcl3z7oeaiUWK0JFjEZabd6NYZcLiDz0jxEAo4G7H4h75W21STfsGGxn1fmJZyQiRXl gPUgy8Sksu/U47X0pILIN/7p068tWNkqtjrFDFWJp80dTPNUWyqGShNNBVbm+Y/HjCL4 fvmk54P7YWdPKAvcQY4Ij1gvgBVQ29IVADeVdjBK+J/ZTTAF8sXugBmVvUssL1waZRk/ JbcVj/w+ksxYT7LultwTm+kFGjylFW02K0b8VLptF4nnTJBgMa38zwY7D/59S3/jtqCI ffSw==; 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=W+3eeylL; 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 o21-20020a1709061b1500b00a46d018cb95si1552283ejg.807.2024.03.19.15.44.40; Tue, 19 Mar 2024 15:44:45 -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=W+3eeylL; 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 3744968C0F8; Wed, 20 Mar 2024 00:44:36 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pl1-f180.google.com (mail-pl1-f180.google.com [209.85.214.180]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8E7A268D41E for ; Wed, 20 Mar 2024 00:44:29 +0200 (EET) Received: by mail-pl1-f180.google.com with SMTP id d9443c01a7336-1deffa23bb9so30289825ad.2 for ; Tue, 19 Mar 2024 15:44:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1710888264; x=1711493064; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=/OQL/Zwo2LgUlg3JWVLhh+g8aMjYAVxidMziZ2myJTY=; b=W+3eeylL10dkMqPnE4w822CkYoTVnSmCGRzU35ueDR3QCEkU0pnPYiK59y3YxbIpE7 I8JJWrrhmbVYx8A0r37OFHxM6kqm11cFP3ykCmxjibuS5cB+x8z2MHHs2kpb5MTALtIB bIxt1GDPBlVftw4LZmtkXfAdFPNKP4YPfn0+Hn7x3TyBYKuB2C2bTHL3y1XZBPgwee0p OCBmm3FQvTfP6n0ZeBE3qBrAeAeJVbDmprecf/hgKUTfxqk/70C6HOGTafHdpXoqn05u LcbA9vz9Qusj8bY21/5QAIjN5KlBjfJxKX4jKfpSlhHkgye8Po8OtMpdrxPsfHPflW1y n2PQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710888264; x=1711493064; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=/OQL/Zwo2LgUlg3JWVLhh+g8aMjYAVxidMziZ2myJTY=; b=d6tZLGY49asNQaUzsb+Cm6g8dSMjA/WDG9IRm0zxtup3Hs2nkrbwZHXWPXoRlBI7nI ajsFtVCvNCKFB30c9oh9aLHXVru75wEzi2gMceToiPzxxaOBw28uZkVWYddFJPGHlNg0 nP6qkm5XD1k1c7Kk1gK9lEmc6tknldnO2kpoR5RHbFkCIPYk1wKOe7vS2byErunE53KM nZfviiRQGC7EBAjF7vkBsWNow3sJvCGMoE+eBioqC3G2mdjJtjMfW+m8Z1Qzom1V2YZY jsk7ncZ/9/Y4kpNKo7Osm0ybmoOqlNecOCY9PoX4v23/FQvy9Gv7WWwkvt6ewJZJ5tdZ bueQ== X-Gm-Message-State: AOJu0YzKDhO3Y8m/w4FEOk4i9RZ3QKtPKPiEauRYMpmDkzOjngABWj5B l409/ZfK+jKJfiN87/Z2A6e1GW1wpfEHi2wlR72SjadC8gX742w3xCUeAGOG X-Received: by 2002:a17:902:f681:b0:1e0:36e:2bb9 with SMTP id l1-20020a170902f68100b001e0036e2bb9mr12972256plg.11.1710888264335; Tue, 19 Mar 2024 15:44:24 -0700 (PDT) Received: from localhost.localdomain ([190.194.167.233]) by smtp.gmail.com with ESMTPSA id k10-20020a170902c40a00b001defa2d8e22sm8753294plk.233.2024.03.19.15.44.23 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Mar 2024 15:44:23 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Tue, 19 Mar 2024 19:44:27 -0300 Message-ID: <20240319224428.46481-1-jamrial@gmail.com> X-Mailer: git-send-email 2.44.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/2 v2] 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: tv5OzIHstU4b 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 --- Fixed the fallback code. configure | 56 ++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 47 insertions(+), 9 deletions(-) diff --git a/configure b/configure index e019d1b996..f8381d15ff 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,21 @@ test_cflags_cc(){ EOF } +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_lib(){ log check_lib "$@" name="$1" @@ -1695,6 +1712,21 @@ 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 +} + test_host_cpp_condition(){ log test_host_cpp_condition "$@" header=$1 @@ -3980,6 +4012,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 +4621,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 +4791,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 +4839,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 +4928,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 +5560,22 @@ fi add_cppflags -D_ISOC11_SOURCE add_cxxflags -D__STDC_CONSTANT_MACROS -check_cxxflags -std=c++11 || check_cxxflags -std=c++0x +test_cxxflags_cc -std=$stdcxx ctype.h "__cplusplus >= 201103L" && + add_cxxflags -std=$stdcxx || { 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" +test_cflags_cc -std=$stdc ctype.h "__STDC_VERSION__ >= 201112L" && + add_cflags -std=$stdc || { check_cflags -std=c11 && 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 +test_host_cflags_cc -std=$stdc ctype.h "__STDC_VERSION__ >= 201112L" && + add_host_cflags -std=$stdc || { check_host_cflags -std=c11 || die "Host compiler lacks C11 support"; } + check_host_cflags -Wall check_host_cflags $host_cflags_speed