diff options
Diffstat (limited to 'perl/Curl_easy/Makefile.PL')
-rw-r--r-- | perl/Curl_easy/Makefile.PL | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/perl/Curl_easy/Makefile.PL b/perl/Curl_easy/Makefile.PL index 58a8528ad..551808fa9 100644 --- a/perl/Curl_easy/Makefile.PL +++ b/perl/Curl_easy/Makefile.PL @@ -12,3 +12,76 @@ WriteMakefile( 'INC' => '', # e.g., '-I/usr/include/other' 'clean' => {FILES => "head.out body.out"} ); + +# +# This utility helper generates the constants function from curl.h +# +# It is normally only used by the maintainer, but if you're curl is older +# or missing some constants, you can delete curlopt-constants.c and re-run 'perl Makefile.PL' +# + +if (!open(CONSTANTS,"<curlopt-constants.c")) { + print "Rebuilding curlopt-constants.c for your libcurl version\n"; + close(CONSTANTS); + +# +# You may need to specify where to find curl.h on your platform +# These are guesses only +# +my $curl_h; +HEADER: foreach my $try (qw( + + curl.h + ../../include/curl.h + /usr/include/curl/curl.h + /usr/local/include/curl/curl.h + C:\\INCLUDE\\CURL\\CURL.H + + )) +{ + if (-e $try) { + $curl_h=$try; + last HEADER; + } +} + +if (!defined($curl_h)) { + die "Could not rebuild curlopt-constants.c - can't find curl.h\n"; +} + +print "Found curl.h in $curl_h\n"; +open (CURL_H,"<".$curl_h) or die "Can't open curl.h\n"; +my %types; +my %codes; +while(<CURL_H>) { + if ($_ =~ m/CINIT\(/ and $_ !~ m/#/) { + my ($option,$type,$code)=m/.*CINIT\((\w*)\s*,\s*(\w+)\s*,\s*(\d+).*/; + $types{$option}=$type; + $codes{$option}=$code; + } +} +close(CURL_H); + +# some things are ifdefed out... +foreach my $ifdef0 (qw(FLAGS PROGRESSMODE)) +{ + delete $types{$ifdef0}; delete $codes{$ifdef0}; +} + +open(CURL_XS,">curlopt-constants.c") or die "Can't write curlopt-constants.c\n"; +foreach my $next_initial ('A'..'Z') { + print CURL_XS " case '$next_initial':\n"; + my $count=0; + foreach my $option (sort keys %types) { + my $initial=substr($option,0,1); + if ($next_initial eq $initial) { + print CURL_XS " if (strEQ(name, \"$option\")) return CURLOPT_$option;\n"; + $count++; + } + } + if ($count) { + print CURL_XS " break;\n"; + } +} +close(CURL_XS); +} |