<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -29,39 +29,41 @@ END)
 (set @c_files     (filelist &quot;^objc/.*\.c$&quot;))
 (set @m_files     (filelist &quot;^objc/.*\.m$&quot;))
 (@m_files unionSet:(filelist &quot;^baked/.*\.m$&quot;))
-(set @nu_files 	  (filelist &quot;^nu/.*\.nu$&quot;))
+(set @nu_files    (filelist &quot;^nu/.*\.nu$&quot;))
 (set @icon_files  (filelist &quot;^lib/.*\.icns$&quot;))
 (set @nib_files   '(&quot;share/nu/resources/English.lproj/MainMenu.nib&quot;))
 
 ;; libraries
-(ifDarwin
-         (then (set @frameworks '(&quot;Cocoa&quot;))
-               (set @libs       '(&quot;edit&quot; &quot;ffi&quot; ))
-               (set @lib_dirs   (NSMutableArray arrayWithObject:&quot;/usr/lib&quot;)))
-         (else (set @frameworks nil)
-               (set @libs       (list &quot;readline&quot; &quot;ffi&quot; &quot;m&quot; &quot;gnustep-base&quot; ))
-               (set @lib_dirs   (NSMutableArray arrayWithList:(list &quot;/usr/lib/GNUstep/System/Library/Libraries&quot;)))))
-
-(if (NSFileManager directoryExistsNamed:&quot;#{@prefix}/lib&quot;) (@lib_dirs addObject:&quot;#{@prefix}/lib&quot;))
+(set @frameworks (NSMutableArray array))
+(set @inc_dirs   (NSMutableArray arrayWithList:(list &quot;/usr/include&quot;)))
+(set @lib_dirs   (NSMutableArray arrayWithList:(list &quot;/usr/lib&quot;)))
+(set @libs       (NSMutableArray arrayWithList:(list &quot;objc&quot; &quot;ffi&quot; &quot;pcre&quot;)))
 
-;; includes
+(@inc_dirs addObjectsFromList:(list &quot;./include&quot; &quot;./include/Nu&quot;))
 (ifDarwin
-         (then (set @includes &quot; -I ./include -I ./include/Nu &quot;))
-         (else (set @includes &quot; -I ./include -I ./include/Nu -I /usr/local/include -I /usr/include/GNUstep/Headers&quot;)))
-
-;; cc main.m -fobjc-exceptions -fconstant-string-class=NSConstantString -L/usr/local/lib -lobjc -Wl,--rpath -Wl,/usr/local/lib -I /usr/include/GNUstep/Headers -L/usr/lib/GNUstep/System/Library/Libraries/ -lgnustep-base
+         (then (@frameworks addObject:&quot;Cocoa&quot;)
+               (@libs       addObject:&quot;edit&quot;))
+         (else (@libs       addObjectsFromList:(list &quot;readline&quot; &quot;m&quot; &quot;gnustep-base&quot;))
+               (@inc_dirs   addObject:&quot;/usr/include/GNUstep/Headers&quot;)
+               (@lib_dirs   addObject:&quot;/usr/lib/GNUstep/System/Library/Libraries&quot;)))
 
-(if (NSFileManager directoryExistsNamed:&quot;#{@prefix}/include&quot;) (@includes appendString:&quot; -I #{@prefix}/include&quot;))
+(if (NSFileManager directoryExistsNamed:&quot;#{@prefix}/include&quot;) (@inc_dirs addObject:&quot;#{@prefix}/include&quot;))
+(if (NSFileManager directoryExistsNamed:&quot;#{@prefix}/lib&quot;) (@lib_dirs addObject:&quot;#{@prefix}/lib&quot;))
 
 (ifDarwin
          (then (if (NSFileManager fileExistsNamed:&quot;/usr/lib/libffi.dylib&quot;)
                    (then ;; Use the libffi that ships with OS X.
-                         (@includes appendString:&quot; -I /usr/include&quot;))
+                         (@inc_dirs addObject:&quot;/usr/include/ffi&quot;))
                    (else ;; Use the libffi that is distributed with Nu.
-                         (@includes appendString:&quot; -I ./libffi/include&quot;)
-                         (@lib_dirs addObject:&quot;./libffi&quot;))))
-         (else ;; Use the libffi that ships with Linux
-               (@includes appendString:&quot; -I /usr/include&quot;)))
+                         (@inc_dirs addObject:&quot;./libffi/include&quot;)
+                         (@lib_dirs addObject:&quot;./libffi&quot;)))))
+
+(set @pcre_prefix &quot;&quot;)
+(let ((pcre_config ((NSString stringWithShellCommand:&quot;which pcre-config 2&gt;/dev/null&quot;) chomp)))
+     (if pcre_config
+         (then (set @pcre_prefix ((NSString stringWithShellCommand:&quot;#{pcre_config} --prefix&quot;) chomp))
+               (@inc_dirs addObject:&quot;#{@pcre_prefix}/include&quot;)
+               (@lib_dirs addObject:&quot;#{@pcre_prefix}/lib&quot;))))
 
 ;; framework description
 (set @framework &quot;Nu&quot;)
@@ -81,7 +83,7 @@ END)
             (set @leopard &quot;-DLEOPARD_OBJC2 -D__OBJC2__&quot;)
             (&quot;-isysroot /Developer/SDKs/MacOSX10.5.sdk&quot;))
            ((NSFileManager directoryExistsNamed:&quot;/Developer/SDKs/MacOSX10.4u.sdk&quot;)
-            (&quot; -isysroot /Developer/SDKs/MacOSX10.4u.sdk&quot;))
+            (&quot;-isysroot /Developer/SDKs/MacOSX10.4u.sdk&quot;))
            (else &quot;&quot;)))
 
 (ifDarwin
@@ -96,26 +98,23 @@ END)
 ;; or set this to just build for your chosen platform
 ;; (set @arch '(&quot;i386&quot;))
 
-(ifDarwin
-         (then (set @ldflags
-                    ((list
-                          (cond  ;; statically link in pcre since most people won't have it..
-                                 ((NSFileManager fileExistsNamed:&quot;#{@prefix}/lib/libpcre.a&quot;) (&quot;#{@prefix}/lib/libpcre.a&quot;))
-                                 (else (NSException raise:&quot;NukeBuildError&quot; format:&quot;Can't find static pcre library (libpcre.a).&quot;)))
-                          ((@frameworks map: (do (framework) &quot; -framework #{framework}&quot;)) join)
-                          ((@libs map: (do (lib) &quot; -l#{lib}&quot;)) join)
-                          ((@lib_dirs map: (do (libdir) &quot; -L#{libdir}&quot;)) join))
-                     join)))
-         (else (set @ldflags
-                    ((list
-                          &quot;-lgnustep-base -L /usr/lib/GNUstep/System/Library/Libraries -L/usr/local/lib -lobjc -Wl,--rpath -Wl,/usr/lib/GNUstep/System/Library/Libraries -Wl,--rpath -Wl,/usr/local/lib&quot;
-                          (cond  ;; statically link in pcre since most people won't have it..
-                                 ((NSFileManager fileExistsNamed:&quot;/usr/lib/libpcre.a&quot;) &quot;/usr/lib/libpcre.a&quot;)
-                                 ((NSFileManager fileExistsNamed:&quot;#{@prefix}/lib/libpcre.a&quot;) (&quot;#{@prefix}/lib/libpcre.a&quot;))
-                                 (else (NSException raise:&quot;NukeBuildError&quot; format:&quot;Can't find static pcre library (libpcre.a).&quot;)))
-                          ((@frameworks map: (do (framework) &quot; -framework #{framework}&quot;)) join)
-                          ((@libs map: (do (lib) &quot; -l#{lib}&quot;)) join))
-                     join))))
+(set @includes
+     ((@inc_dirs map: (do (inc) &quot; -I#{inc}&quot;)) join))
+(set @ldflags
+     ((list
+           (cond  ;; statically link in pcre since most people won't have it..
+                  ((NSFileManager fileExistsNamed:&quot;#{@pcre_prefix}/lib/libpcre.a&quot;) &quot;#{@pcre_prefix}/lib/libpcre.a&quot;)
+                  ((NSFileManager fileExistsNamed:&quot;/usr/lib/libpcre.a&quot;) &quot;/usr/lib/libpcre.a&quot;)
+                  ((NSFileManager fileExistsNamed:&quot;#{@prefix}/lib/libpcre.a&quot;) &quot;#{@prefix}/lib/libpcre.a&quot;)
+                  (else (NSException raise:&quot;NukeBuildError&quot; format:&quot;Can't find static pcre library (libpcre.a).&quot;)))
+           ((@frameworks map: (do (framework) &quot; -framework #{framework}&quot;)) join)
+           ((@libs map: (do (lib) &quot; -l#{lib}&quot;)) join)
+           (ifDarwin
+                    (then ((@lib_dirs map:
+                        (do (libdir) &quot; -L#{libdir}&quot;)) join))
+                    (else ((@lib_dirs map:
+                        (do (libdir) &quot; -L#{libdir} -Wl,--rpath #{libdir}&quot;)) join))))
+     join))
 
 (ifDarwin
          (set @public_headers (filelist &quot;include/Nu/Nu.h&quot;)))</diff>
      <filename>Nukefile</filename>
    </modified>
    <modified>
      <diff>@@ -8,45 +8,48 @@ require 'rake/clean'
 
 SYSTEM = `uname`.chomp
 
-PREFIX = ENV[&quot;PREFIX&quot;] ? ENV[&quot;PREFIX&quot;] : &quot;/usr/local&quot; 
+PREFIX = ENV['PREFIX'] || '/usr/local'
 
-if SYSTEM == &quot;Darwin&quot;
-  if File.exist? &quot;/usr/lib/libffi.dylib&quot;
+@frameworks = []
+@inc_dirs = %w{./include}
+@libs = %w{objc ffi pcre}
+@lib_dirs = []
+
+if SYSTEM == 'Darwin'
+  @frameworks &lt;&lt; 'Cocoa'
+  @libs += %w{edit}
+else
+  @libs += %w{readline m}
+end
+
+@inc_dirs &lt;&lt; &quot;#{PREFIX}/include&quot; if File.exist? &quot;#{PREFIX}/include&quot;
+@lib_dirs &lt;&lt; &quot;#{PREFIX}/lib&quot; if File.exists? &quot;#{PREFIX}/lib&quot;
+
+if SYSTEM == 'Darwin'
+  if File.exist? '/usr/lib/libffi.dylib'
     # Use the libffi that ships with OS X.
-    FFI_LIB = &quot;-L/usr/lib -lffi&quot;
-    FFI_INCLUDE = &quot;-I /usr/include/ffi&quot;
-    LEOPARD_CFLAGS = &quot;-DLEOPARD_OBJC2&quot;
+    @inc_dirs &lt;&lt; '/usr/include/ffi'
   else 
     # Use the libffi that is distributed with Nu.
-    FFI_LIB = &quot;-L./libffi -lffi&quot;
-    FFI_INCLUDE = &quot;-I ./libffi/include&quot;
-    LEOPARD_CFLAGS = &quot;&quot;
+    @inc_dirs &lt;&lt; './libffi/include'
+    @lib_dirs &lt;&lt; './libffi'
   end
-else # Linux
-  # Use the libffi that is distributed with Linux.
-  FFI_LIB = &quot;-lffi&quot;
-  FFI_INCLUDE = &quot;&quot;
-  LEOPARD_CFLAGS = &quot;&quot;
 end
 
-@includes = FFI_INCLUDE + &quot; -I ./include &quot;
-
-if SYSTEM == &quot;Darwin&quot;
-  @includes += &quot; -I #{PREFIX}/include&quot; if File.exist? &quot;#{PREFIX}/include&quot;
-  @frameworks = %w{Cocoa}
-  @libs = %w{objc pcre readline}
-  @lib_dirs = []
-  @lib_dirs &lt;&lt; &quot;#{PREFIX}/lib&quot; if File.exist? &quot;#{PREFIX}/lib&quot;
-else
-  @includes += &quot; -I /usr/local/include&quot;
-  @frameworks = [] # %w{Cocoa}
-  @libs = %w{m pcre readline }
-  @lib_dirs = []
+PCRE_CONFIG = `which pcre-config 2&gt;/dev/null`.chomp
+if PCRE_CONFIG
+  prefix = `#{PCRE_CONFIG} --prefix`.chomp
+  @inc_dirs &lt;&lt; &quot;#{prefix}/include&quot;
+  @lib_dirs &lt;&lt; &quot;#{prefix}/lib&quot;
 end
 
+@leopard_cflags = ''
+if File.exists? '/Developer/SDKs/MacOSX10.5.sdk'
+  @leopard_cflags = '-DLEOPARD_OBJC2'
+end
 
-CLEAN.include(&quot;*/*.o&quot;)
-CLOBBER.include(&quot;mininush&quot;)
+CLEAN.include('*/*.o')
+CLOBBER.include('mininush')
 
 @c_files      = FileList['objc/*.c'] 
 @objc_files   = FileList['objc/*.m'] + FileList['main/*.m']
@@ -55,28 +58,28 @@ CLOBBER.include(&quot;mininush&quot;)
 
 @cc = &quot;gcc&quot;
 if SYSTEM == &quot;Darwin&quot;
-  @cflags = &quot;-g -O2 -Wall -DMACOSX -DDARWIN -DMININUSH -std=gnu99 #{LEOPARD_CFLAGS}&quot;
+  @cflags = &quot;-g -O2 -Wall -DMACOSX -DDARWIN -DMININUSH -std=gnu99 #{@leopard_cflags}&quot;
   @mflags = &quot;-fobjc-exceptions&quot;
 else
-  @cflags = &quot;-g -O2 -Wall -DLINUX -DMININUSH -std=gnu99 #{LEOPARD_CFLAGS} &quot;
+  @cflags = &quot;-g -O2 -Wall -DLINUX -DMININUSH -std=gnu99 #{@leopard_cflags}&quot;
   @mflags = &quot;-fobjc-exceptions -fconstant-string-class=NSConstantString&quot;
 end
 
+@cflags += @inc_dirs.map {|inc| &quot; -I#{inc}&quot;}.join
 @ldflags = @frameworks.map {|framework| &quot; -framework #{framework}&quot;}.join
 @ldflags += @libs.map {|lib| &quot; -l#{lib}&quot;}.join
 @ldflags += @lib_dirs.map {|libdir| &quot; -L#{libdir}&quot;}.join 
-@ldflags += &quot; #{FFI_LIB}&quot;
 if SYSTEM == &quot;Linux&quot;
   @ldflags += &quot; -lobjc -lNuFound&quot;
   @ldflags += &quot; -Wl,--rpath -Wl,/usr/local/lib&quot;
 end
 
 rule &quot;.o&quot; =&gt; [&quot;.m&quot;] do |t|
-  sh &quot;#{@cc} #{@cflags} #{@mflags} #{@includes} -c -o #{t.name} #{t.source}&quot;
+  sh &quot;#{@cc} #{@cflags} #{@mflags} -c -o #{t.name} #{t.source}&quot;
 end
 
 rule &quot;.o&quot; =&gt; [&quot;.c&quot;] do |t|
-  sh &quot;#{@cc} #{@cflags} #{@includes} -c -o #{t.name} #{t.source}&quot;
+  sh &quot;#{@cc} #{@cflags} -c -o #{t.name} #{t.source}&quot;
 end
 
 file &quot;mininush&quot; =&gt; @gcc_objects do</diff>
      <filename>Rakefile</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>8e0f935014bd9476059b370df7798962b2733682</id>
    </parent>
  </parents>
  <author>
    <name>Martin Kuehl</name>
    <email>martin.kuehl@gmail.com</email>
  </author>
  <url>http://github.com/timburks/nu/commit/ebe578b558c4431c51b87233949d8dc277573c57</url>
  <id>ebe578b558c4431c51b87233949d8dc277573c57</id>
  <committed-date>2008-12-28T08:50:14-08:00</committed-date>
  <authored-date>2008-12-21T15:31:09-08:00</authored-date>
  <message>&#8226; Simplify Rakefile and Nukefile
&#8226; Add support for finding pcre via `pcre-config`</message>
  <tree>bf18f7b20848416599f1e2e137d19c495859a947</tree>
  <committer>
    <name>Martin Kuehl</name>
    <email>martin.kuehl@gmail.com</email>
  </committer>
</commit>
