changeset 34:fad87973f26a

add gears flow
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Sun, 31 Jan 2021 17:37:28 +0900
parents 0915f0d49a23
children 2c8513196d56
files paper/chapter/02-perl.tex paper/chapter/gears.tex paper/drawio/geasflow1.drawio paper/drawio/geasflow1.pdf paper/master_paper.pdf paper/src/cmakefile.1.txt
diffstat 6 files changed, 51 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/paper/chapter/02-perl.tex	Sun Jan 31 16:56:48 2021 +0900
+++ b/paper/chapter/02-perl.tex	Sun Jan 31 17:37:28 2021 +0900
@@ -49,15 +49,9 @@
 \end{itemize}
 
 これらのPerlスクリプトはプログラマが自分で動かすことはない。
-GearsOSではビルドツールにCMakeを利用している。
-CMakeはautomakeなどのMakeファイルを作成するツールに相当するものである。
-GearsOSでプログラミングする際は、ビルドしたいプロジェクトをCMakeLists.txtに記述する。
-CMakeは自身がコンパイルをすることはなく、ビルドツールであるmakeやninja-buildに処理を移譲している。
-CMakeはmakeやninja-buildが実行可能なMakefile、 build.ninjaの生成までを担当する。
-
 Perlスクリプトの実行手順はCMakeLists.txtに記述しており、 makeやninja-buildでのビルド時に呼び出される。(ソースコード \ref{src:cmake1})
 
-\lstinputlisting[label=src:cmake1, caption=CMakeList.txt内でのPerlの実行部分]{src/cmakefile.txt.1}
+\lstinputlisting[label=src:cmake1, caption=CMakeList.txt内でのPerlの実行部分]{src/cmakefile.1.txt}
 
 \begin{figure}[htp]
   \begin{center}
--- a/paper/chapter/gears.tex	Sun Jan 31 16:56:48 2021 +0900
+++ b/paper/chapter/gears.tex	Sun Jan 31 17:37:28 2021 +0900
@@ -1,5 +1,26 @@
 \chapter{GearsOS}
 
+GearsOSとはContinuation Based Cを用いて実装しているOSプロジェクトである。
+CodeGearとDataGearを基本単位として実行する。
+GearsOSはOSとして実行する側面と、 CbCのシンタックスを拡張した言語フレームワークとしての側面がある。
+
+\section{GearsOSのビルドシステム}
+GearsOSではビルドツールにCMakeを利用している。
+CMakeはautomakeなどのMakeファイルを作成するツールに相当するものである。
+GearsOSでプログラミングする際は、ビルドしたいプロジェクトをCMakeLists.txtに記述する。
+CMakeは自身がコンパイルをすることはなく、ビルドツールであるmakeやninja-buildに処理を移譲している。
+CMakeはmakeやninja-buildが実行可能なMakefile、 build.ninjaの生成までを担当する。
+
+ビルドフローを図\ref{fig:gearsbuild1}に示す。
+
+\begin{figure}[htp]
+  \begin{center}
+   \includegraphics[width=120mm]{drawio/geasflow1.pdf}
+  \end{center}
+  \caption{GearsOSのビルドフロー}
+  \label{fig:gearsbuild1}
+ \end{figure}
+
 \section{pmake}
 GearsOSをビルドする場合は、x86アーキテクチャのマシンからビルドするのが殆どである。
 この場合ビルドしたバイナリはx86向けのバイナリとなる。
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/drawio/geasflow1.drawio	Sun Jan 31 17:37:28 2021 +0900
@@ -0,0 +1,1 @@
+<mxfile host="Electron" modified="2021-01-31T08:21:50.486Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/14.1.8 Chrome/87.0.4280.88 Electron/11.1.1 Safari/537.36" etag="JuOyPGK8KAoW3IoDYvsS" version="14.1.8" type="device"><diagram id="V5Gp7kS3jipglgoInpt8" name="ページ1">7VhRU6MwEP41nbl70ClQqH1sq+c9nKM3vRn1MUKE2JBgCJb6629DQqHQ9jhr1XPupWW/JEuy336bhJ4zjfNzgZLoggeY9ux+kPec055tDz0PfhWw1IBr9zUQChJoyKqAGXnGBiy7ZSTA6VpHyTmVJFkHfc4Y9uUahoTgi/Vu95yuvzVBIW4BMx/RNnpNAhlp9MQeVvh3TMKofLPljXRLjMrOZiVphAK+qEHOWc+ZCs6lforzKaYqdmVc9LhvW1pXExOYyS4Dnme/ssy7Hi1H45NLJ3tm7OfjkWEnlctywTiA9RuTCxnxkDNEzyp0InjGAqy89sGq+vzgPAHQAvABS7k0ZKJMcoAiGVPTinMib2rPt8rVsWus09x4LoxlaTApljd1ozZKmdWwwirHpVLw+Yo6BxC9YrXMrYE0UMoz4eMd0SsTEokQyx393BXdIBPMYwwzhHECUyTJ0/o8kEnYcNWv4hQeDK1/QbHx+4RoZt7Usz0K053cc1hwnXzvMeNlw1Fa0DeGDhCcvGqEp1D9X2Gh3p36giSydAkz1F51n3Z2UQrKVVm0iIjEswQVAV5A7VjPEZQmWs73JFe5tpXIJywkzndT2Q69GWB7RpymOlkDYy8qrVulgKO6zkvw1ely3kORB1WJ3VElW6h6G5XYB1LJOUYihdaZjlJHmcBekahHxmUHrdwhfx4WOXCZSUoYNniAxPwSRhFZVMPjvnsoHVn9ho5s+9htK8napCTXPRClJ//3tj1U63ZU7fA9VetuVW2aIPZy1U7vpsWZMk4IxaKmWu3239jcBu6H29yG+1fZwSa+cI79TKI7GAtnfEI7F9oPQZTnfDiiRhuIamY7C8bqggWWT1GaEr+IDxKyDb/KUaMdv1p83A3hKbHOtci84YqTIhnLQ2JDR47ViLqupWZU/QbWcOT1/+BIF9uWo4LB1bL3uAn0DyS/6QWaK+V9iYt/VTsZYQ/oa1cZgnZkQ3mUhEzlEOQAVGBnohRG4F4+Ng0xCQK9ZWOYXiF9vSsmKnxFQN1Jzz1VvmCX1kvYmYF7adhpcmu3NWwPNiTpwSRsbbr4bdcw4+rc+MmU6r5QqU1Hq3viWyl103Xkc3PXKo4v5a7p6PW4A7P6XKe7V988nbPf</diagram></mxfile>
\ No newline at end of file
Binary file paper/drawio/geasflow1.pdf has changed
Binary file paper/master_paper.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/src/cmakefile.1.txt	Sun Jan 31 17:37:28 2021 +0900
@@ -0,0 +1,28 @@
+macro( GearsCommand )
+    set( _OPTIONS_ARGS )
+    set( _ONE_VALUE_ARGS TARGET )
+    set( _MULTI_VALUE_ARGS SOURCES )
+    cmake_parse_arguments( _Gears "${_OPTIONS_ARGS}" "${_ONE_VALUE_ARGS}" "${_MULTI_VALUE_ARGS}" ${ARGN} )
+
+    set (_Gears_CSOURCES)
+    foreach(i ${_Gears_SOURCES})
+        if (${i} MATCHES "\\.cbc")
+            string(REGEX REPLACE "(.*).cbc" "c/\\1.c" j ${i})
+            add_custom_command (
+                OUTPUT    ${j}
+                DEPENDS   ${i}
+                COMMAND  "perl" "generate_stub.pl" "-o" ${j} ${i}
+            )
+        elseif (${i} MATCHES "\\.cu")
+            string(REGEX REPLACE "(.*).cu" "c/\\1.ptx" j ${i})
+            add_custom_command (
+                OUTPUT    ${j}
+                DEPENDS   ${i}
+                COMMAND  nvcc ${NVCCFLAG} -c -ptx -o ${j} ${i}
+            )
+        else()
+            set(j ${i})
+        endif()
+        list(APPEND _Gears_CSOURCES ${j})
+    endforeach(i)
+