4 #####################################################################
6 #####################################################################
29 while (my $param = shift)
31 if ($param eq "--help")
33 print "configure options: default:\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";
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";
59 elsif ($param eq "--dbg")
63 elsif ($param eq "--cpu")
68 elsif ($param eq "--arch")
71 if (!($param eq "x86") && !($param eq "x86_64"))
73 print "Error: Unknown architecture\n";
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;}
101 print "Error: Unknown configuration flag \"", $param, "\"\n";
106 if (!($arch eq "x86") && $v86 == 1)
108 print "Error: The flag --v86 is only valid for the x86 architecture.\n";
112 if ($CPU eq "pentium" && $arch eq "x86_64")
119 open(config
, '>', "Makefile.config");
122 print config
"ROOT_DIR= ", getcwd
, "\n";
125 print config
"ARCH= ", $arch, "\n";
127 # Architecture - preprocessor define
128 print config
"ARCH_DEFINE= ";
131 print config
"-DX86";
133 if ($arch eq "x86_64")
135 print config
"-DX86_64";
140 print config
"KERNEL_GCC_FLAGS= -march=$CPU $optimize";
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";
151 print config
" -D_LIGHTOS_SMP";
155 print config
" -D_LIGHTOS_V86";
159 print config
" -DACPI";
164 print config
"LIB_GCC_FLAGS= -march=$CPU $optimize ";
167 print config
" -DNDEBUG";
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";
179 print config
" -D_LIGHTOS_SMP";
183 # Application gcc flags
184 print config
"GCC_FLAGS= -march=$CPU $optimize ";
187 print config
" -DNDEBUG";
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";
199 print config
" -D_LIGHTOS_SMP";
204 print config
"LD_FLAGS= -z nocopyreloc ";
205 if ($elfsymbols == 0)
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 ";}
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 ";}
238 print config
"BINUTILS_DEFAULT_VECTOR= ";
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";
248 print config
"BINUTILS_SELECT_ARCHITECTURES= ";
251 print config
"-DSELECT_ARCHITECTURES='&bfd_i386_arch'";
253 if ($arch eq "x86_64")
255 print config
"-DSELECT_ARCHITECTURES='&bfd_x86_64_arch'";
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= ";
263 print config
"-DDEFAULT_EMULATION='\"elf_x86_64\"'";
265 if ($arch eq "x86_64")
267 print config
"-DDEFAULT_EMULATION='\"elf_i386\"'";
270 print config
"BINUTILS_TARGET= ";
273 print config
"-DTARGET='\"x86_64-unknown-linux-gnu\"'";
275 if ($arch eq "x86_64")
277 print config
"-DTARGET='\"x86_64-unknown-linux-gnu\"'";
281 open(asmconfig
, '>', "Makefile.asm.config");
284 print asmconfig
"#define _LIGHTOS_V86\n"
288 print asmconfig
"#define _LIGHTOS_SMP\n"
291 `/bin/bash scripts/link.sh $arch`;
292 `/bin/bash scripts/tmpdir.sh $arch create`;