3 # This program is free software; you can redistribute it and/or modify
4 # it under the terms of the GNU General Public License as published by
5 # the Free Software Foundation; either version 2 of the License, or
6 # (at your option) any later version.
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # GNU General Public License for more details.
13 # You should have received a copy of the GNU General Public License
14 # along with this program; if not, write to the Free Software
15 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
22 use Term::ANSIColor qw(:constants);
23 use List::Util qw(any);
27 my $derefs = $$filename;
30 open($fh, '<:encoding(UTF-8)', $derefs)
31 or die "Could not open file '$derefs' $!";
32 local $/ = undef; # <--- slurp mode
33 my $concatArr = <$fh>;
40 my ($filename,$concatArr) = @_;
41 my $derefs = $$filename;
44 open($fh, '>:encoding(UTF-8)', $derefs)
45 or die "Could not open file '$derefs' $!";
47 print $fh $$concatArr;
52 sub reflace_configure {
54 my $filename = "configure.ac";
55 my @arr = split("\n",${re_read(\$filename)});
60 my $concatArr = join("\n", @arr);
62 re_write(\$filename,\$concatArr);
67 my ($arr,$filename) = @_;
68 my $derefFilename = $$filename;
70 my ($x,$arrLen) = (0,$#arr2);
71 my $derefs = ${re_read(\$derefFilename)};
73 for (; $x <= $arrLen; $x++) {
74 $derefs =~ s/${$arr2[$x][0]}/${$arr2[$x][1]}/g;
76 re_write(\$derefFilename,\$derefs);
81 my ($ag1,$ag2,$filename) = @_;
82 my $derefFilename = $$filename;
83 my $derefs = ${re_read(\$derefFilename)};
85 $derefs =~ s/$$ag1/$$ag2/g;
86 re_write(\$derefFilename,\$derefs);
94 die "No OS/Distro supplied.";
97 my $osEntered = uc $ARGV[0];
99 "PALDO","DRAGORA","GUIXSD",
100 "SLITAZ","TINYCORELINUX","NIXOS",
101 "ARCHLINUX","DEBIAN","ALPINELINUX",
102 "GENTOO","SLACKWARE","CRUX",
103 "RHEL","FRUGALWARE","VOIDLINUX",
104 "ANGSTROM","FREEBSD","OPENBSD"
106 my $hasMatch = any { $_ eq $osEntered } @osArr;
107 if ($hasMatch eq "") {
108 print GREEN, "Pick one base: ", BRIGHT_BLUE, "@osArr\n", RESET;
109 die RED, "Invalid \"", YELLOW, $osEntered, RED, "\" - OS/Distro supplied.", RESET;
112 my $srcMake = "src/Makefile.am";
113 my $defTits = "m4_define([cuRos],[$osEntered])";
114 my $bsdCF = "-D_DEFAULT_SOURCE -L/usr/local/lib";
115 my $posixCF = "-D_POSIX_C_SOURCE=200112L";
116 my ($amStr, $srcStr, $bsdStr) = ("{amCF}","{srcFiles}","{bzdlibs}");
117 my ($amCF, $srcToAppend, $bsdLibs) = ("", "", "");
119 if ($osEntered eq "FREEBSD") {
120 $bsdLibs = "-largp -ldevstat";
122 $defTits = "$defTits m4_define([FREEBZD], [tits])";
123 $srcToAppend = "freebsd_functions.c include/freebzd.h";
125 elsif ($osEntered eq "OPENBSD") {
126 $bsdLibs = "-largp -lossaudio";
128 $defTits = "$defTits m4_define([OPENBZD], [forSure])";
129 $srcToAppend = "openbsd_functions.c include/openbzd.h";
133 $defTits = "$defTits m4_define([LINUKS], [cryMeAriver])";
134 $srcToAppend = "linux_functions.c";
137 copy("src/Makefail.skel",$srcMake)
138 or die "Could not copy src/Makefail.skel $!";
139 print "Copying src/Makefail.skel as $srcMake ... ", GREEN, "OK\n", RESET;
141 reflace_configure(\$defTits);
142 print "Replacing variables in configure.ac ... ", GREEN, "OK\n", RESET;
146 [\$srcStr, \$srcToAppend],
147 [\$bsdStr, \$bsdLibs]
149 reflace_many(\@hugeArr,\$srcMake);
150 print "Replacing variables in $srcMake ... ", GREEN, "OK\n", RESET;
152 print "Setting up $osEntered ... ", GREEN, "OK\n", RESET;