* libcurses++, libc++ and liblightOS++ are installed into the crosscompiler directory
[lightOS.git] / configure
blob83c7a43293e403ac39ac93e3a67360e3c5edce71
1 #! /usr/bin/perl
2 use strict;
3 use Cwd;
4 #####################################################################
5 ##### LightOS #####
6 #####################################################################
7 my $CPU = "pentium";
8 my $arch = "x86";
9 my $v86 = 0;
10 my $elfsymbols = 0;
11 my $optimize = "-O2";
12 my $debug = 0;
13 my $smp = 0;
14 my $acpi = 0;
16 my $yasm = 0;
17 my $binutils = 0;
18 my $nano = 0;
19 my $nasm = 0;
20 my $make = 0;
21 my $bash = 0;
22 my $dash = 0;
24 my $bzip2 = 0;
25 my $freetype = 0;
26 my $libpng = 0;
27 my $zlib = 0;
29 while (my $param = shift)
31 if ($param eq "--help")
33 print "configure options: default:\n";
34 print " general\n";
35 print " --dbg not set\n";
36 print " --cpu <gcc cpu name> pentium\n";
37 print " --arch {x86, x86_64} x86\n";
38 print " --elf-symbols not set\n";
39 print " -O -O0 -O1 -O2 -O3 -Os -O2\n";
40 print " kernel\n";
41 print " --v86 not set\n";
42 print " --smp not set\n";
43 print " --acpi not set\n";
44 print " ported applications\n";
45 print " --yasm not set\n";
46 print " --binutils not set\n";
47 print " --bash not set\n";
48 print " --dash not set\n";
49 print " --nano not set\n";
50 print " --nasm not set\n";
51 print " --make not set\n";
52 print " ported libraries\n";
53 print " --bzip2 not set\n";
54 print " --freetype not set\n";
55 print " --libpng not set\n";
56 print " --zlib not set\n";
57 exit(0);
59 elsif ($param eq "--dbg")
61 $debug = 1;
63 elsif ($param eq "--cpu")
65 my $param = shift;
66 $CPU = $param;
68 elsif ($param eq "--arch")
70 my $param = shift;
71 if (!($param eq "x86") && !($param eq "x86_64"))
73 print "Error: Unknown architecture\n";
74 exit(0);
76 $arch = $param;
78 elsif ($param eq "--v86"){$v86 = 1;}
79 elsif ($param eq "--elf-symbols"){$elfsymbols = 1;}
80 elsif ($param eq "-O"){$optimize = "-O";}
81 elsif ($param eq "-O0"){$optimize = "-O0";}
82 elsif ($param eq "-O1"){$optimize = "-O1";}
83 elsif ($param eq "-O2"){$optimize = "-O2";}
84 elsif ($param eq "-O3"){$optimize = "-O3";}
85 elsif ($param eq "-Os"){$optimize = "-Os";}
86 elsif ($param eq "--smp"){$smp = 1;}
87 elsif ($param eq "--acpi"){$acpi = 1;}
88 elsif ($param eq "--yasm"){$yasm = 1;}
89 elsif ($param eq "--binutils"){$binutils = 1;}
90 elsif ($param eq "--nano"){$nano = 1;}
91 elsif ($param eq "--nasm"){$nasm = 1;}
92 elsif ($param eq "--make"){$make = 1;}
93 elsif ($param eq "--bash"){$bash = 1;}
94 elsif ($param eq "--dash"){$dash = 1;}
95 elsif ($param eq "--bzip2"){$bzip2 = 1;}
96 elsif ($param eq "--freetype"){$freetype = 1;}
97 elsif ($param eq "--libpng"){$libpng = 1;}
98 elsif ($param eq "--zlib"){$zlib = 1;}
99 else
101 print "Error: Unknown configuration flag \"", $param, "\"\n";
102 exit(-1);
106 if (!($arch eq "x86") && $v86 == 1)
108 print "Error: The flag --v86 is only valid for the x86 architecture.\n";
109 exit(-1);
112 if ($CPU eq "pentium" && $arch eq "x86_64")
114 $CPU = "nocona";
119 open(config, '>', "Makefile.config");
121 # Root directory
122 print config "ROOT_DIR= ", getcwd, "\n";
124 # Architecture
125 print config "ARCH= ", $arch, "\n";
127 # Architecture - preprocessor define
128 print config "ARCH_DEFINE= ";
129 if ($arch eq "x86")
131 print config "-DX86";
133 if ($arch eq "x86_64")
135 print config "-DX86_64";
137 print config "\n";
139 # Kernel gcc flags
140 print config "KERNEL_GCC_FLAGS= -march=$CPU $optimize";
141 if ($arch eq "x86")
143 print config " -DARCH_NAMESPACE=x86 -DPLATFORM_NAMESPACE=x86_shared";
145 if ($arch eq "x86_64")
147 print config " -DARCH_NAMESPACE=x86_64 -DPLATFORM_NAMESPACE=x86_shared -fno-omit-frame-pointer -m64 -mno-red-zone -mno-sse -mcmodel=kernel";
149 if ($smp == 1)
151 print config " -D_LIGHTOS_SMP";
153 if ($v86 == 1)
155 print config " -D_LIGHTOS_V86";
157 if ($acpi == 1)
159 print config " -DACPI";
161 print config "\n";
163 # Library gcc flags
164 print config "LIB_GCC_FLAGS= -march=$CPU $optimize ";
165 if ($debug == 1)
167 print config " -DNDEBUG";
169 if ($arch eq "x86")
171 print config " -DARCH_NAMESPACE=x86 -DPLATFORM_NAMESPACE=x86_shared";
173 if ($arch eq "x86_64")
175 print config " -DARCH_NAMESPACE=x86_64 -DPLATFORM_NAMESPACE=x86_shared -fno-omit-frame-pointer -m64 -fpic";
177 if ($smp == 1)
179 print config " -D_LIGHTOS_SMP";
181 print config "\n";
183 # Application gcc flags
184 print config "GCC_FLAGS= -march=$CPU $optimize ";
185 if ($debug == 1)
187 print config " -DNDEBUG";
189 if ($arch eq "x86")
191 print config " -DARCH_NAMESPACE=x86 -DPLATFORM_NAMESPACE=x86_shared";
193 if ($arch eq "x86_64")
195 print config " -DARCH_NAMESPACE=x86_64 -DPLATFORM_NAMESPACE=x86_shared -fpic -fno-omit-frame-pointer -m64";
197 if ($smp == 1)
199 print config " -D_LIGHTOS_SMP";
201 print config "\n";
203 # Linker flags
204 print config "LD_FLAGS= -z nocopyreloc ";
205 if ($elfsymbols == 0)
207 print config " -s ";
209 print config "\n";
211 # Library includes
212 # TODO: Fix this
213 print config "ZLIB_INCLUDE= -I ", getcwd, "/lib/zlib/include\n";
214 print config "BZIP2_INCLUDE= -I ", getcwd, "/lib/bzip2/include\n";
215 print config "LIBPNG_INCLUDE= -I ", getcwd, "/lib/libpng/include\n";
216 print config "FREETYPE_INCLUDE= -I ", getcwd, "/lib/freetype/include\n";
218 # Ported applications
219 print config "PORTED_APPS= ";
220 if ($yasm == 1){print config "yasm ";}
221 if ($binutils == 1){print config "binutils ";}
222 if ($nano == 1){print config "nano ";}
223 if ($nasm == 1){print config "nasm ";}
224 if ($make == 1){print config "make ";}
225 if ($bash == 1){print config "bash ";}
226 if ($dash == 1){print config "dash ";}
227 print config "\n";
229 # Ported libraries
230 print config "PORTED_LIBS= ";
231 if ($bzip2 == 1){print config "bzip2 ";}
232 if ($freetype == 1){print config "freetype ";}
233 if ($zlib == 1){print config "zlib ";}
234 if ($libpng == 1){print config "libpng ";}
235 print config "\n";
237 # Binutils specific
238 print config "BINUTILS_DEFAULT_VECTOR= ";
239 if ($arch eq "x86")
241 print config "-DDEFAULT_VECTOR=bfd_elf32_i386_vec";
243 if ($arch eq "x86_64")
245 print config "-DDEFAULT_VECTOR=bfd_elf64_x86_64_vec";
247 print config "\n";
248 print config "BINUTILS_SELECT_ARCHITECTURES= ";
249 if ($arch eq "x86")
251 print config "-DSELECT_ARCHITECTURES='&bfd_i386_arch'";
253 if ($arch eq "x86_64")
255 print config "-DSELECT_ARCHITECTURES='&bfd_x86_64_arch'";
257 print config "\n";
258 print config "BINUTILS_SELECT_VECS= -DSELECT_VECS='&bfd_elf32_i386_vec,&bfd_elf64_x86_64_vec,&bfd_elf64_little_generic_vec,&bfd_elf64_big_generic_vec,&bfd_elf32_little_generic_vec,&bfd_elf32_big_generic_vec'\n";
259 print config "BINUTILS_HAVE_VECS= -DHAVE_bfd_elf64_x86_64_vec -DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf64_little_generic_vec -DHAVE_bfd_elf64_big_generic_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec\n";
260 print config "BINUTILS_DEFAULT_EMULATION= ";
261 if ($arch eq "x86")
263 print config "-DDEFAULT_EMULATION='\"elf_x86_64\"'";
265 if ($arch eq "x86_64")
267 print config "-DDEFAULT_EMULATION='\"elf_i386\"'";
269 print config "\n";
270 print config "BINUTILS_TARGET= ";
271 if ($arch eq "x86")
273 print config "-DTARGET='\"x86_64-unknown-linux-gnu\"'";
275 if ($arch eq "x86_64")
277 print config "-DTARGET='\"x86_64-unknown-linux-gnu\"'";
279 print config "\n";
281 open(asmconfig, '>', "Makefile.asm.config");
282 if ($v86 == 1)
284 print asmconfig "#define _LIGHTOS_V86\n"
286 if ($smp == 1)
288 print asmconfig "#define _LIGHTOS_SMP\n"
291 `/bin/bash scripts/link.sh $arch`;
292 `/bin/bash scripts/tmpdir.sh $arch create`;
294 exit(0);