Differences

This shows you the differences between two versions of the page.

Link to this comparison view

cpl:labs:llvm-pass [2015/12/08 00:02]
irina.presa [Hello World]
cpl:labs:llvm-pass [2015/12/08 00:32] (current)
irina.presa [Integrarea unui pas în LLVM]
Line 128: Line 128:
  
 Pentru a nu mai fi nevoiți să specificăm biblioteca dinamică la runtime, aceasta trebuie să fie integrată în codul utilitarelor ''​opt''​ și ''​bugpoint''​. Pentru a realiza acest lucru, trebuie să modificăm [[http://​llvm.org/​docs/​WritingAnLLVMPass.html#​quickstart|exemplul]] dat în **sursele** de LLVM astfel: Pentru a nu mai fi nevoiți să specificăm biblioteca dinamică la runtime, aceasta trebuie să fie integrată în codul utilitarelor ''​opt''​ și ''​bugpoint''​. Pentru a realiza acest lucru, trebuie să modificăm [[http://​llvm.org/​docs/​WritingAnLLVMPass.html#​quickstart|exemplul]] dat în **sursele** de LLVM astfel:
-* ''​lib/​Transforms/​Hello/​Makefile''​ +  ​* ''​lib/​Transforms/​Hello/​Makefile''​ 
-** se şterge: **LOADABLE_MODULE = 1** +    * se şterge: **LOADABLE_MODULE = 1** 
-** și se adaugă: **BUILD_ARCHIVE = 1** +    * și se adaugă: **BUILD_ARCHIVE = 1** 
-* ''​tools/​opt/​CMakeLists.txt''​ +  * ''​tools/​opt/​CMakeLists.txt''​ 
-** se înlocuiește +    * se adaugă noul pass în lista 
-*** **set(LLVM_LINK_COMPONENTS ​bitreader asmparser bitwriter instrumentation scalaropts ipo vectorize)** cu  +      * **set(LLVM_LINK_COMPONENTS ​${LLVM_TARGETS_TO_BUILD} Analysis CodeGen Hello)** 
-*** **set(LLVM_LINK_COMPONENTS bitreader asmparser bitwriter instrumentation scalaropts ipo vectorize hello)** +    la fel și pentru ​''​tools/​bugpoint/​CMakeLists.txt''​ 
-* ''​tools/​bugpoint/​CMakeLists.txt''​ +  * se crează fişierul ''​include/​llvm/​Transforms/​Hello.h''​ cu conţinutul  
-** se înlocuiește +    * <code c>
-*** **set(LLVM_LINK_COMPONENTS asmparser instrumentation scalaropts ipo linker bitreader bitwriter irreader vectorize objcarcopts)** cu +
-*** **set(LLVM_LINK_COMPONENTS asmparser instrumentation scalaropts ipo linker bitreader bitwriter irreader vectorize objcarcopts hello)** +
-* se crează fişierul ''​include/​llvm/​Transforms/​Hello.h''​ cu conţinutul  +
-** <code c>+
 #ifndef LLVM_TRANSFORMS_HELLO_H #ifndef LLVM_TRANSFORMS_HELLO_H
 #define LLVM_TRANSFORMS_HELLO_H #define LLVM_TRANSFORMS_HELLO_H
Line 149: Line 145:
 #endif #endif
 </​code>​ </​code>​
-* ''​lib/​Transforms/​Hello/​CMakeLists.txt''​ +  ​se creeaza fișierul ​''​lib/​Transforms/​Hello/​LLVMBuild.txt'' ​după formatul din [[http://​llvm.org/​docs/​CommandGuide/​llvm-build.html|sistemul de build]] llvm. 
-** se şterge **add_llvm_loadable_module( LLVMHello Hello.cpp )** +    ex: <code bash> 
-** și se adaugă +[component_0] 
-*** **add_llvm_library( LLVMHello Hello.cpp )** +type = Library 
-*** **target_link_libraries (LLVMHello LLVMSupport)** +name = Hello 
-* ''​lib/​Transforms/​Hello/​Hello.cpp''​ +parent = Transforms 
-** se include +library_name = hello 
-*** **llvm/​Transforms/​Hello.h** +required_libraries = Analysis Support 
-*** **llvm/​Support/​Debug.h** +</​code>​ 
-** (opțional) se înlocuiește +    * se updatează și fișierul LLVMBuild.txt din directorul părinte pentru a include sub-directorul ''​Hello''​.  
-*** **errs()** cu +  * ''​lib/​Transforms/​Hello/​CMakeLists.txt''​ 
-*** [[http://​llvm.org/​docs/​ProgrammersManual.html#​DEBUG_TYPE|dbgs()]] +    ​* se şterge **add_llvm_loadable_module( LLVMHello Hello.cpp )** 
-** se adaugă +    * și se adaugă 
-***<code c>+      * **add_llvm_library( LLVMHello Hello.cpp )** 
 +  * ''​lib/​Transforms/​Hello/​Hello.cpp''​ 
 +    * se include 
 +      * **llvm/​Transforms/​Hello.h** 
 +    * se adaugă 
 +      *<code c>
 FunctionPass* llvm::​createHelloPass() FunctionPass* llvm::​createHelloPass()
 { {
Line 168: Line 169:
 } }
 </​code>​ </​code>​
-* ''​include/​llvm/​LinkAllPasses.h''​ +  ​* ''​include/​llvm/​LinkAllPasses.h''​ 
-** se include **llvm/​Transforms/​Hello.h** +    * se include **llvm/​Transforms/​Hello.h** 
-** și se adaugă +    * și se adaugă 
-***<code c>+      *<code c>
 (void) llvm::​createHelloPass();​ (void) llvm::​createHelloPass();​
 </​code>​ </​code>​
-* se creeaza un director nou în care vor fi compilate sursele. De exemplu dacă sursele se află în directorul **llvm-3.3.src** și am creat pe același nivel directorul **llvm**, executăm din **interiorul directorului nou creat** comanda +  ​* se creeaza un director nou în care vor fi compilate sursele. De exemplu dacă sursele se află în directorul **llvm-3.3.src** și am creat pe același nivel directorul **llvm**, executăm din **interiorul directorului nou creat** comanda 
-**<code bash>+    *<code bash>
 cmake -G "Unix Makefiles"​ ../​llvm-3.3.src cmake -G "Unix Makefiles"​ ../​llvm-3.3.src
 </​code>​ </​code>​
-** urmată de comanda <code bash> make </​code>​ +    ​* urmată de comanda <code bash> make </​code>​
cpl/labs/llvm-pass.1449525742.txt.gz · Last modified: 2015/12/08 00:02 by irina.presa
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0