45 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ## Development
 | |
| 
 | |
| ### Quick start
 | |
| To get started create a `makefile` containing:
 | |
| ```make
 | |
| include path/to/bpf.mk
 | |
| ```
 | |
| and `src/program.c` containing:
 | |
| ```c
 | |
| #include <solana_sdk.h>
 | |
| 
 | |
| bool entrypoint(const uint8_t *input) {
 | |
|   SolKeyedAccount ka[1];
 | |
|   uint8_t *data;
 | |
|   uint64_t data_len;
 | |
| 
 | |
|   if (!sol_deserialize(buf, ka, SOL_ARRAY_SIZE(ka), NULL, &data, &data_len)) {
 | |
|     return false;
 | |
|   }
 | |
|   print_params(1, ka, data, data_len);
 | |
|   return true;
 | |
| }
 | |
| ```
 | |
| 
 | |
| Then run `make` to build `out/program.o`.
 | |
| Run `make help` for more details.
 | |
| 
 | |
| ### Unit tests
 | |
| Built-in support for unit testing is provided by the
 | |
| [Criterion](https://criterion.readthedocs.io/en/master/index.html) test framework.
 | |
| To get started create the file `test/example.c` containing:
 | |
| ```c
 | |
| #include <criterion/criterion.h>
 | |
| #include "../src/program.c"
 | |
| 
 | |
| Test(test_suite_name, test_case_name) {
 | |
|   cr_assert(true);
 | |
| }
 | |
| ```
 | |
| Then run `make test`.
 | |
| 
 | |
| ### Limitations
 | |
| * Programs must be fully contained within a single .c file
 | |
| * No libc is available but `solana_sdk.h` provides a minimal set of primitives
 |