#!/usr/bin/env perl
-
#
# InspIRCd -- Internet Relay Chat Daemon
#
+# Copyright (C) 2019 iwalkalone <iwalkalone69@gmail.com>
+# Copyright (C) 2014 Attila Molnar <attilamolnar@hush.com>
+# Copyright (C) 2013, 2015-2016, 2018 Sadie Powell <sadie@witchery.services>
+# Copyright (C) 2012 Robby <robby@chatbelgie.be>
# Copyright (C) 2009-2010 Daniel De Graaf <danieldg@inspircd.org>
#
# This file is part of InspIRCd. InspIRCd is free software: you can
#
-BEGIN {
- push @INC, $ENV{SOURCEPATH};
- require 5.10.0;
-}
-
+use v5.10.0;
use strict;
use warnings FATAL => qw(all);
+use File::Basename qw(dirname);
use File::Spec::Functions qw(abs2rel);
+use FindBin qw($RealDir);
+use lib dirname $RealDir;
use make::console;
use make::directive;
my $type = shift;
my $out = shift;
-if ($type eq 'gen-ld') {
- do_static_find(@ARGV);
-} elsif ($type eq 'static-ld') {
- do_static_link(@ARGV);
-} elsif ($type eq 'core-ld') {
+if ($type eq 'core-ld') {
do_core_link(@ARGV);
} elsif ($type eq 'link-dir') {
do_link_dir(@ARGV);
sub message($$$) {
my ($type, $file, $command) = @_;
if ($ENV{INSPIRCD_VERBOSE}) {
- print "$command\n";
+ say $command;
} else {
- print_format "\t<|GREEN $type:|>\t\t$file\n";
+ say console_format "\t<|GREEN $type:|>\t\t$file";
}
}
return $message;
}
-sub do_static_find {
- my @flags;
- for my $file (@ARGV) {
- push @flags, rpath(get_directive($file, 'LinkerFlags', ''));
- }
- open F, '>', $out;
- print F join ' ', @flags;
- close F;
- exit 0;
-}
-
-sub do_static_link {
- my $execstr = "$ENV{CXX} -o $out $ENV{CORELDFLAGS}";
- my $link_flags = '';
- for (@ARGV) {
- if (/\.cmd$/) {
- open F, '<', $_;
- my $libs = <F>;
- chomp $libs;
- $link_flags .= ' '.$libs;
- close F;
- } else {
- $execstr .= ' '.$_;
- }
- }
- $execstr .= ' '.$ENV{LDLIBS}.' '.$link_flags;
- message 'LINK', $out, $execstr;
- exec $execstr;
-}
-
sub do_core_link {
my $execstr = "$ENV{CXX} -o $out $ENV{CORELDFLAGS} @_ $ENV{LDLIBS}";
message 'LINK', $out, $execstr;
for my $file (<$dir/*.cpp>) {
$link_flags .= rpath(get_directive($file, 'LinkerFlags', '')) . ' ';
}
- my $execstr = "$ENV{CXX} -o $out $ENV{PICLDFLAGS} $link_flags @_";
+ my $execstr = "$ENV{CXX} -o $out $ENV{PICLDFLAGS} @_ $link_flags";
message 'LINK', $out, $execstr;
exec $execstr;
}