1#!/usr/bin/env perl 2#*************************************************************************** 3# _ _ ____ _ 4# Project ___| | | | _ \| | 5# / __| | | | |_) | | 6# | (__| |_| | _ <| |___ 7# \___|\___/|_| \_\_____| 8# 9# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al. 10# 11# This software is licensed as described in the file COPYING, which 12# you should have received as part of this distribution. The terms 13# are also available at https://curl.se/docs/copyright.html. 14# 15# You may opt to use, copy, modify, merge, publish, distribute and/or sell 16# copies of the Software, and permit persons to whom the Software is 17# furnished to do so, under the terms of the COPYING file. 18# 19# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 20# KIND, either express or implied. 21# 22# SPDX-License-Identifier: curl 23# 24########################################################################### 25 26my $autotools = $ARGV[0]; 27my $cmake = $ARGV[1]; 28 29if(!$cmake) { 30 print "Usage: cmp-config <config1> <config2.h>\n"; 31 exit; 32} 33 34# this lists complete lines that will be removed from the output if 35# matching 36my %remove = ( 37 '#define _FILE_OFFSET_BITS 64' => 1, 38 '#define CURL_EXTERN_SYMBOL' => 1, 39 '#define CURL_SA_FAMILY_T sa_family_t' => 1, 40 '#define CURL_SA_FAMILY_T ADDRESS_FAMILY' => 1, 41 '#define HAVE_ADDRESS_FAMILY 1' => 1, 42 '#define GETHOSTNAME_TYPE_ARG2 size_t' => 1, 43 '#define GETHOSTNAME_TYPE_ARG2 int' => 1, 44 '#define HAVE_BROTLI 1' => 1, 45 '#define HAVE_BROTLI_DECODE_H 1' => 1, 46 '#define HAVE_DECL_GETPWUID_R 1' => 1, 47 '#define HAVE_DECL_GETPWUID_R 0' => 1, 48 '#define HAVE_DECL_GETPWUID_R_MISSING 1' => 1, 49 '#define HAVE_DLFCN_H 1' => 1, 50 '#define HAVE_GETHOSTBYNAME 1' => 1, 51 '#define HAVE_GSSAPI_GSSAPI_KRB5_H 1' => 1, 52 '#define HAVE_INTTYPES_H 1' => 1, 53 '#define HAVE_IOCTL 1' => 1, 54 '#define HAVE_LDAP_H 1' => 1, 55 '#define HAVE_LDAP_SSL 1' => 1, 56 '#define HAVE_LIBBROTLIDEC 1' => 1, 57 '#define HAVE_LIBSOCKET 1' => 1, 58 '#define HAVE_LIBSSH2 1' => 1, 59 '#define HAVE_LIBSSL 1' => 1, 60 '#define HAVE_LIBZSTD 1' => 1, 61 '#define HAVE_NGHTTP2_NGHTTP2_H 1' => 1, 62 '#define HAVE_OPENSSL_CRYPTO_H 1' => 1, 63 '#define HAVE_OPENSSL_ERR_H 1' => 1, 64 '#define HAVE_OPENSSL_PEM_H 1' => 1, 65 '#define HAVE_OPENSSL_RSA_H 1' => 1, 66 '#define HAVE_OPENSSL_SSL_H 1' => 1, 67 '#define HAVE_OPENSSL_X509_H 1' => 1, 68 '#define HAVE_SA_FAMILY_T 1' => 1, 69 '#define HAVE_SETJMP_H 1' => 1, 70 '#define HAVE_STDINT_H 1' => 1, 71 '#define HAVE_STDIO_H 1' => 1, 72 '#define HAVE_STDLIB_H 1' => 1, 73 '#define HAVE_STRING_H 1' => 1, 74 '#define HAVE_SYS_XATTR_H 1' => 1, 75 '#define HAVE_ZSTD 1' => 1, 76 '#define HAVE_ZSTD_H 1' => 1, 77 '#define LT_OBJDIR ".libs/"' => 1, 78 '#define NEED_LBER_H 1' => 1, 79 '#define CURL_OS "Linux"' => 1, 80 '#define CURL_OS "x86_64-pc-linux-gnu"' => 1, 81 '#define PACKAGE "curl"' => 1, 82 '#define PACKAGE_BUGREPORT "a suitable curl mailing list: https://curl.se/mail/"' => 1, 83 '#define PACKAGE_NAME "curl"' => 1, 84 '#define PACKAGE_STRING "curl -"' => 1, 85 '#define PACKAGE_TARNAME "curl"' => 1, 86 '#define PACKAGE_URL ""' => 1, 87 '#define PACKAGE_VERSION "-"' => 1, 88 '#define SIZEOF_LONG_LONG 8' => 1, 89 '#define VERSION "-"' => 1, 90 ); 91 92sub filter { 93 my ($line) = @_; 94 if(!$remove{$line}) { 95 return "$line\n"; 96 } 97 $remove{$line}++; 98 return ""; 99} 100 101sub grepit { 102 my ($input, $output) = @_; 103 my @defines; 104 # first get all the #define lines 105 open(F, "<$input"); 106 while(<F>) { 107 if($_ =~ /^#def/) { 108 chomp; 109 push @defines, $_; 110 } 111 } 112 close(F); 113 114 open(O, ">$output"); 115 116 # output the sorted list through the filter 117 foreach my $d(sort @defines) { 118 print O filter($d); 119 } 120 close(O); 121} 122 123grepit($autotools, "/tmp/autotools"); 124grepit($cmake, "/tmp/cmake"); 125 126foreach my $v (keys %remove) { 127 if($remove{$v} == 1) { 128 print "Ignored, never matched line: $v\n"; 129 } 130} 131 132 133# return the exit code from diff 134exit system("diff -u /tmp/autotools /tmp/cmake") >> 8; 135