annotate src/gearsTools/pmake.pl @ 62:a28580a75faa

fix build fs.img
author anatofuz
date Thu, 25 Jul 2019 20:04:17 +0900
parents b3a3224e1823
children ab729eb8356b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
60
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
1 #!/usr/bin/env perl
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
2 use strict;
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
3 use warnings;
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
4
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
5 my ($cc,$cflags,$asm,$ld,$ldflags,$libgcc,$cmake);
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
6
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
7 $cmake = 'cmake';
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
8
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
9 if ($^O =~ /darwin/){
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
10 $cc = $ENV{CBC_LANG_COMPILER};
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
11 $cflags = qq|-Wall -g -arch arm -fno-pic -static -fno-builtin -fno-strict-aliasing -Wall -Werror -I. -g -O0
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
12 -Wno-macro-redefined -Wno-gnu-designator -Wno-sometimes-uninitialized -Wno-tautological-compare
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
13 -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
14 -Wno-nullability-completeness -Wno-expansion-to-defined"|;
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
15 $ldflags = qq|-B/mnt/dalmore-home/one/src/armgcc/cross/bin/arm-none-eabi-
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
16 -DCBCXV6=1 -fno-pic -static -fno-builtin -fno-strict-aliasing -Wall -I. -g -O0|;
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
17 } else {
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
18 $cc = '/mnt/dalmore-home/one/src/armgcc/cross/bin/arm-none-eabi-gcc';
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
19 $asm = $cc;
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
20 $cflags = qq|-B/mnt/dalmore-home/one/src/armgcc/cross/bin/arm-none-eabi-
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
21 -DCBCXV6=1 -fno-pic -static -fno-builtin -fno-strict-aliasing -Wall -I. -g -O0|;
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
22 $ld = '/mnt/dalmore-home/one/src/armgcc/cross/bin/arm-none-eabi-ld';
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
23 chomp($libgcc = `$cc --print-libgcc-file-name`);
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
24 $cflags .= " $libgcc";
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
25 $cmake .= 3;
61
b3a3224e1823 fix link arguments...
anatofuz
parents: 60
diff changeset
26 $ldflags = " -L. -T kernel-cmake.ld";
60
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
27 }
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
28
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
29 $cflags =~ s/\n//g;
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
30 create_link_script();
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
31 #cmake -DCMAKE_LINKER=/path/to/linker -DCMAKE_CXX_LINK_EXECUTABLE="<CMAKE_LINKER> <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>"
62
a28580a75faa fix build fs.img
anatofuz
parents: 61
diff changeset
32 print_exec_system($cmake, "-DGCC_LIB=$libgcc", "-DCBC_COM=$cc", "-DPMAKE_ARGS=\"$cflags\"","-DCMAKE_ASM_COMPILER=$cc","-DX_CMAKE_LINKER=$ld","-DX_CMAKE_C_LINK_EXECUTABLE=\"$ld $ldflags -o kernel.elf <OBJECTS> $libgcc -b binary initcode fs.img\"","-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUE",@ARGV);
60
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
33 system("make");
61
b3a3224e1823 fix link arguments...
anatofuz
parents: 60
diff changeset
34 #system("sh","link.sh");
60
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
35
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
36 sub create_link_script {
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
37 my @link_script;
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
38 while (my $line = <DATA>){
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
39 $line =~ s/LD/$ld/;
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
40 $line =~ s/LIBGCC/$libgcc/;
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
41 push @link_script,$line;
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
42 }
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
43 if ($^O =~ /darwin/){
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
44 for (@link_script){
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
45 s/CMakeFiles/build/;
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
46 s|kernel\.dir/||;
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
47 }
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
48 }
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
49 open my $fh, '>', 'link.sh';
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
50 print $fh "@link_script";
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
51 }
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
52
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
53 sub print_exec_system {
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
54 my @query = @_;
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
55 print(join(' ',@query), "\n");
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
56 system(join(' ',@query));
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
57 }
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
58
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
59 __DATA__
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
60 cp initcode ./CMakeFiles/kernel.dir/initcode
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
61 cp fs.img ./CMakeFiles/kernel.dir/fs.img
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
62
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
63 LD \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
64 -L. \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
65 -T \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
66 kernel-cmake.ld \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
67 -o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
68 kernel.elf \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
69 \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
70 CMakeFiles/kernel.dir/lib/string.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
71 CMakeFiles/kernel.dir/arm.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
72 CMakeFiles/kernel.dir/asm.S.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
73 CMakeFiles/kernel.dir/bio.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
74 CMakeFiles/kernel.dir/buddy.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
75 CMakeFiles/kernel.dir/c/console.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
76 CMakeFiles/kernel.dir/exec.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
77 CMakeFiles/kernel.dir/c/file.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
78 CMakeFiles/kernel.dir/fs.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
79 CMakeFiles/kernel.dir/log.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
80 CMakeFiles/kernel.dir/main.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
81 CMakeFiles/kernel.dir/memide.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
82 CMakeFiles/kernel.dir/c/pipe.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
83 CMakeFiles/kernel.dir/c/proc.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
84 CMakeFiles/kernel.dir/c/spinlock.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
85 CMakeFiles/kernel.dir/start.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
86 CMakeFiles/kernel.dir/swtch.S.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
87 CMakeFiles/kernel.dir/c/syscall.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
88 CMakeFiles/kernel.dir/c/sysfile.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
89 CMakeFiles/kernel.dir/sysproc.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
90 CMakeFiles/kernel.dir/trap_asm.S.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
91 CMakeFiles/kernel.dir/trap.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
92 CMakeFiles/kernel.dir/vm.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
93 CMakeFiles/kernel.dir/device/picirq.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
94 CMakeFiles/kernel.dir/device/timer.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
95 CMakeFiles/kernel.dir/device/uart.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
96 CMakeFiles/kernel.dir/entry.S.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
97 CMakeFiles/kernel.dir/c/kernel-context.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
98 \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
99 \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
100 LIBGCC \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
101 \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
102 -b \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
103 binary \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
104 initcode \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
105 fs.img