annotate src/gearsTools/pmake.pl @ 90:dd1d9ea1b7b5

tweak pmake.pl
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Thu, 17 Oct 2019 10:42:54 +0900
parents df104b2de895
children d876c9a65239
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;
89
df104b2de895 remove commnad line arguments at pmake.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
4 use FindBin;
df104b2de895 remove commnad line arguments at pmake.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
5 use Cwd 'getcwd';
60
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
6
66
101b229f182d build initcode
anatofuz
parents: 65
diff changeset
7 my ($cc,$cflags,$asm,$ld,$ldflags,$libgcc,$cmake,$kernel_cflags,$kernel_ld_flags,$kernel_ld_command, $initcode_cflags, $initcode_ld_command);
60
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
8
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
9 $cmake = 'cmake';
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
10
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
11 if ($^O =~ /darwin/){
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
12 $cc = $ENV{CBC_LANG_COMPILER};
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
13 $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
14 -Wno-macro-redefined -Wno-gnu-designator -Wno-sometimes-uninitialized -Wno-tautological-compare
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
15 -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
16 -Wno-nullability-completeness -Wno-expansion-to-defined"|;
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
17 $ldflags = qq|-B/mnt/dalmore-home/one/src/armgcc/cross/bin/arm-none-eabi-
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
18 -DCBCXV6=1 -fno-pic -static -fno-builtin -fno-strict-aliasing -Wall -I. -g -O0|;
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
19 } else {
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
20 $cc = '/mnt/dalmore-home/one/src/armgcc/cross/bin/arm-none-eabi-gcc';
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
21 $asm = $cc;
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
22 $cflags = qq|-B/mnt/dalmore-home/one/src/armgcc/cross/bin/arm-none-eabi-
86
765449889623 fix translate interface routine
anatofuz
parents: 80
diff changeset
23 -DCBCXV6=1 -fno-pic -static -fno-builtin -fno-strict-aliasing -Wall -g -O0|;
60
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
24 $ld = '/mnt/dalmore-home/one/src/armgcc/cross/bin/arm-none-eabi-ld';
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
25 chomp($libgcc = `$cc --print-libgcc-file-name`);
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
26 $cmake .= 3;
61
b3a3224e1823 fix link arguments...
anatofuz
parents: 60
diff changeset
27 $ldflags = " -L. -T kernel-cmake.ld";
86
765449889623 fix translate interface routine
anatofuz
parents: 80
diff changeset
28 $kernel_cflags = '-march=armv6 -fno-pic -static -fno-builtin -fno-strict-aliasing -Wall -Werror -g -O0 -iquote ../ -c';
64
58c79e0c5101 fix depend mkfs
one
parents: 63
diff changeset
29 # -DX_CMAKE_C_LINK_EXECUTABLE=\"$ld $ldflags -o kernel.elf <OBJECTS> $libgcc -b binary initcode usr/fs.img\"
63
ab729eb8356b fix build usr command and fs.img
anatofuz
parents: 62
diff changeset
30 $kernel_ld_flags = ' -L. -N -e main -Ttext 0 <OBJECTS> -o <TARGET> <LINK_LIBRARIES> -L ../ /mnt/dalmore-home/one/src/gcc-arm-none-eabi-6-2017-q2-update/bin/../lib/gcc/arm-none-eabi/6.3.1/libgcc.a';
ab729eb8356b fix build usr command and fs.img
anatofuz
parents: 62
diff changeset
31 $kernel_ld_command = "$ld $kernel_ld_flags";
86
765449889623 fix translate interface routine
anatofuz
parents: 80
diff changeset
32 $initcode_cflags = '-march=armv6 -nostdinc -c';
66
101b229f182d build initcode
anatofuz
parents: 65
diff changeset
33 $initcode_ld_command = "$ld -L. -N -e start -Ttext 0 <OBJECTS> -o <TARGET> <LINK_LIBRARIES>";
60
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
34 }
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
35
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
36 $cflags =~ s/\n//g;
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
37 create_link_script();
89
df104b2de895 remove commnad line arguments at pmake.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
38 my $curdir = getcwd;
df104b2de895 remove commnad line arguments at pmake.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
39 my $xv6_src_dir = $FindBin::Bin;
90
dd1d9ea1b7b5 tweak pmake.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 89
diff changeset
40 $xv6_src_dir =~ s|(.*)/gearsTools(.*)|$1|;
63
ab729eb8356b fix build usr command and fs.img
anatofuz
parents: 62
diff changeset
41
66
101b229f182d build initcode
anatofuz
parents: 65
diff changeset
42 print_exec_system($cmake,
101b229f182d build initcode
anatofuz
parents: 65
diff changeset
43 "-DCBC_COM=$cc",
101b229f182d build initcode
anatofuz
parents: 65
diff changeset
44 "-DPMAKE_ARGS=\"$cflags\"",
101b229f182d build initcode
anatofuz
parents: 65
diff changeset
45 "-DCMAKE_ASM_COMPILER=$cc",
101b229f182d build initcode
anatofuz
parents: 65
diff changeset
46 "-DX_CMAKE_LINKER=$ld",
101b229f182d build initcode
anatofuz
parents: 65
diff changeset
47 "-DX_CMAKE_C_LINK_EXECUTABLE=\"$ld $ldflags -o kernel.elf <OBJECTS> $libgcc -b binary initcode fs.img\"",
101b229f182d build initcode
anatofuz
parents: 65
diff changeset
48 "-DKERNEL_LINK_EXECUTABLE=\"$kernel_ld_command\"",
101b229f182d build initcode
anatofuz
parents: 65
diff changeset
49 "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUE",
101b229f182d build initcode
anatofuz
parents: 65
diff changeset
50 "-DINITOCDE_CFLAGS=\"$initcode_cflags\"",
101b229f182d build initcode
anatofuz
parents: 65
diff changeset
51 "-DINITOCDE_LINK_EXECUTABLE=\"$initcode_ld_command\"",
89
df104b2de895 remove commnad line arguments at pmake.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
52 "-S $xv6_src_dir",
df104b2de895 remove commnad line arguments at pmake.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
53 $curdir);
63
ab729eb8356b fix build usr command and fs.img
anatofuz
parents: 62
diff changeset
54
60
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
55 system("make");
61
b3a3224e1823 fix link arguments...
anatofuz
parents: 60
diff changeset
56 #system("sh","link.sh");
60
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
57
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
58 sub create_link_script {
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
59 my @link_script;
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
60 while (my $line = <DATA>){
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
61 $line =~ s/LD/$ld/;
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
62 $line =~ s/LIBGCC/$libgcc/;
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
63 push @link_script,$line;
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
64 }
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
65 if ($^O =~ /darwin/){
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
66 for (@link_script){
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
67 s/CMakeFiles/build/;
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
68 s|kernel\.dir/||;
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
69 }
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
70 }
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
71 open my $fh, '>', 'link.sh';
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
72 print $fh "@link_script";
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
73 }
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
74
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
75 sub print_exec_system {
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
76 my @query = @_;
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
77 print(join(' ',@query), "\n");
90
dd1d9ea1b7b5 tweak pmake.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 89
diff changeset
78 system(join(' ',@query));
60
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
79 }
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
80
80
c976a8bbe8c5 add stac.h and Stac.cbc
tobaru
parents: 69
diff changeset
81
c976a8bbe8c5 add stac.h and Stac.cbc
tobaru
parents: 69
diff changeset
82
60
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
83 __DATA__
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
84 cp initcode ./CMakeFiles/kernel.dir/initcode
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
85 cp fs.img ./CMakeFiles/kernel.dir/fs.img
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
86
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
87 LD \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
88 -L. \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
89 -T \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
90 kernel-cmake.ld \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
91 -o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
92 kernel.elf \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
93 \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
94 CMakeFiles/kernel.dir/lib/string.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
95 CMakeFiles/kernel.dir/arm.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
96 CMakeFiles/kernel.dir/asm.S.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
97 CMakeFiles/kernel.dir/bio.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
98 CMakeFiles/kernel.dir/buddy.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
99 CMakeFiles/kernel.dir/c/console.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
100 CMakeFiles/kernel.dir/exec.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
101 CMakeFiles/kernel.dir/c/file.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
102 CMakeFiles/kernel.dir/fs.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
103 CMakeFiles/kernel.dir/log.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
104 CMakeFiles/kernel.dir/main.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
105 CMakeFiles/kernel.dir/memide.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
106 CMakeFiles/kernel.dir/c/pipe.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
107 CMakeFiles/kernel.dir/c/proc.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
108 CMakeFiles/kernel.dir/c/spinlock.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
109 CMakeFiles/kernel.dir/start.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
110 CMakeFiles/kernel.dir/swtch.S.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
111 CMakeFiles/kernel.dir/c/syscall.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
112 CMakeFiles/kernel.dir/c/sysfile.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
113 CMakeFiles/kernel.dir/sysproc.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
114 CMakeFiles/kernel.dir/trap_asm.S.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
115 CMakeFiles/kernel.dir/trap.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
116 CMakeFiles/kernel.dir/vm.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
117 CMakeFiles/kernel.dir/device/picirq.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
118 CMakeFiles/kernel.dir/device/timer.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
119 CMakeFiles/kernel.dir/device/uart.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
120 CMakeFiles/kernel.dir/entry.S.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
121 CMakeFiles/kernel.dir/c/kernel-context.c.o \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
122 \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
123 \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
124 LIBGCC \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
125 \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
126 -b \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
127 binary \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
128 initcode \
e5f099108a6e fix cmake link argument
anatofuz
parents:
diff changeset
129 fs.img
80
c976a8bbe8c5 add stac.h and Stac.cbc
tobaru
parents: 69
diff changeset
130
c976a8bbe8c5 add stac.h and Stac.cbc
tobaru
parents: 69
diff changeset
131 __END__
c976a8bbe8c5 add stac.h and Stac.cbc
tobaru
parents: 69
diff changeset
132
c976a8bbe8c5 add stac.h and Stac.cbc
tobaru
parents: 69
diff changeset
133 =encoding utf-8
c976a8bbe8c5 add stac.h and Stac.cbc
tobaru
parents: 69
diff changeset
134
c976a8bbe8c5 add stac.h and Stac.cbc
tobaru
parents: 69
diff changeset
135 =head1 NAME
c976a8bbe8c5 add stac.h and Stac.cbc
tobaru
parents: 69
diff changeset
136
c976a8bbe8c5 add stac.h and Stac.cbc
tobaru
parents: 69
diff changeset
137 pmake.pl - pmake is a wrapper at cmake in xv6.
c976a8bbe8c5 add stac.h and Stac.cbc
tobaru
parents: 69
diff changeset
138
c976a8bbe8c5 add stac.h and Stac.cbc
tobaru
parents: 69
diff changeset
139 =head1 SYNOPSIS
c976a8bbe8c5 add stac.h and Stac.cbc
tobaru
parents: 69
diff changeset
140
c976a8bbe8c5 add stac.h and Stac.cbc
tobaru
parents: 69
diff changeset
141 pmake.pl <build directory> <cbcxv6 src direcory>
c976a8bbe8c5 add stac.h and Stac.cbc
tobaru
parents: 69
diff changeset
142
c976a8bbe8c5 add stac.h and Stac.cbc
tobaru
parents: 69
diff changeset
143 =cut