homebrew-core/Formula/nmap.rb
Bert JW Regeer 1071fc860b Add small patch to fix build of nmap with clang
This adds a very small patch to fix an issue with building nmap with
clang. The crux of the issue is that clang no longer compiles files with
void main() instead requiring int main(). This causes the configure to
fail when attempting to identify if a certain feature exists which
causes nmap to include its own version which off course causes a compile
failure because now you have two structs with the same name and two
functions with the same name in the same compilation unit.

This patch should probably be sent upstream as well.

Closes Homebrew/homebrew#10302.
Closes Homebrew/homebrew#10300.

Signed-off-by: Max Howell <max@methylblue.com>
2012-02-20 19:01:46 +00:00

60 lines
1.5 KiB
Ruby

require 'formula'
class Nmap < Formula
url 'http://nmap.org/dist/nmap-5.51.tar.bz2'
homepage 'http://nmap.org/5/'
md5 '0b80d2cb92ace5ebba8095a4c2850275'
head 'https://guest:@svn.nmap.org/nmap/', :using => :svn
# Leopard's version of OpenSSL isn't new enough
depends_on "openssl" if MacOS.leopard?
fails_with_llvm :build => 2334
def install
ENV.deparallelize
args = ["--prefix=#{prefix}", "--without-zenmap"]
if MacOS.leopard?
openssl = Formula.factory('openssl')
args << "--with-openssl=#{openssl.prefix}"
end
system "./configure", *args
system "make" # separate steps required otherwise the build fails
system "make install"
end
def patches
# The configure script has a C file to test for some functionality that
# uses void main(void). This does not compile with clang but does compile
# with GCC/gcc-llvm. This small patch fixes the issues so that the
# project will compile without issues with clang as well.
#
# See: https://github.com/mxcl/homebrew/issues/10300
DATA
end
end
__END__
--- nmap-5.51/nbase/configure 2012-02-18 02:40:16.000000000 -0700
+++ nmap-5.51/nbase/configure.old 2012-02-18 02:40:01.000000000 -0700
@@ -4509,7 +4509,7 @@
#include <sys/socket.h>
#endif
-void main(void) {
+int main(void) {
struct addrinfo hints, *ai;
int error;
@@ -4641,7 +4641,7 @@
#include <netinet/in.h>
#endif
-void main(void) {
+int main(void) {
struct sockaddr_in sa;
char hbuf[256];
int error;