Makefile Fortschritt
This commit is contained in:
parent
c8aa49d762
commit
12d7441f1f
10 changed files with 79 additions and 25 deletions
2
B15F.aps
2
B15F.aps
|
@ -1 +1 @@
|
||||||
<AVRStudio><MANAGEMENT><ProjectName>B15F</ProjectName><Created>22-Mar-2019 14:29:54</Created><LastEdit>22-Mar-2019 15:08:36</LastEdit><ICON>241</ICON><ProjectType>0</ProjectType><Created>22-Mar-2019 14:29:54</Created><Version>4</Version><Build>4, 19, 0, 730</Build><ProjectTypeName>AVR GCC</ProjectTypeName></MANAGEMENT><CODE_CREATION><ObjectFile>default\B15F.elf</ObjectFile><EntryFile></EntryFile><SaveFolder>F:\</SaveFolder></CODE_CREATION><DEBUG_TARGET><CURRENT_TARGET>JTAGICE mkII</CURRENT_TARGET><CURRENT_PART>ATmega1284.xml</CURRENT_PART><BREAKPOINTS></BREAKPOINTS><IO_EXPAND><HIDE>false</HIDE></IO_EXPAND><REGISTERNAMES><Register>R00</Register><Register>R01</Register><Register>R02</Register><Register>R03</Register><Register>R04</Register><Register>R05</Register><Register>R06</Register><Register>R07</Register><Register>R08</Register><Register>R09</Register><Register>R10</Register><Register>R11</Register><Register>R12</Register><Register>R13</Register><Register>R14</Register><Register>R15</Register><Register>R16</Register><Register>R17</Register><Register>R18</Register><Register>R19</Register><Register>R20</Register><Register>R21</Register><Register>R22</Register><Register>R23</Register><Register>R24</Register><Register>R25</Register><Register>R26</Register><Register>R27</Register><Register>R28</Register><Register>R29</Register><Register>R30</Register><Register>R31</Register></REGISTERNAMES><COM>Auto</COM><COMType>0</COMType><WATCHNUM>0</WATCHNUM><WATCHNAMES><Pane0></Pane0><Pane1></Pane1><Pane2></Pane2><Pane3></Pane3></WATCHNAMES><BreakOnTrcaeFull>0</BreakOnTrcaeFull></DEBUG_TARGET><Debugger><Triggers></Triggers></Debugger><AVRGCCPLUGIN><FILES><SOURCEFILE>main.c</SOURCEFILE><SOURCEFILE>spi.cpp</SOURCEFILE><HEADERFILE>spi.h</HEADERFILE><OTHERFILE>default\B15F.lss</OTHERFILE><OTHERFILE>default\B15F.map</OTHERFILE></FILES><CONFIGS><CONFIG><NAME>c++</NAME><USESEXTERNALMAKEFILE>NO</USESEXTERNALMAKEFILE><EXTERNALMAKEFILE></EXTERNALMAKEFILE><PART>atmega128</PART><HEX>1</HEX><LIST>1</LIST><MAP>1</MAP><OUTPUTFILENAME>B15F.elf</OUTPUTFILENAME><OUTPUTDIR>c++\</OUTPUTDIR><ISDIRTY>0</ISDIRTY><OPTIONS/><INCDIRS/><LIBDIRS/><LIBS/><LINKOBJECTS/><OPTIONSFORALL>-Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums</OPTIONSFORALL><LINKEROPTIONS></LINKEROPTIONS><SEGMENTS/></CONFIG><CONFIG><NAME>default</NAME><USESEXTERNALMAKEFILE>NO</USESEXTERNALMAKEFILE><EXTERNALMAKEFILE></EXTERNALMAKEFILE><PART>atmega1284</PART><HEX>1</HEX><LIST>1</LIST><MAP>1</MAP><OUTPUTFILENAME>B15F.elf</OUTPUTFILENAME><OUTPUTDIR>default\</OUTPUTDIR><ISDIRTY>0</ISDIRTY><OPTIONS><OPTION><FILE>main.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>spi.cpp</FILE><OPTIONLIST></OPTIONLIST></OPTION></OPTIONS><INCDIRS/><LIBDIRS/><LIBS/><LINKOBJECTS/><OPTIONSFORALL>-Wall -gdwarf-2 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums </OPTIONSFORALL><LINKEROPTIONS></LINKEROPTIONS><SEGMENTS/></CONFIG></CONFIGS><LASTCONFIG>default</LASTCONFIG><USES_WINAVR>0</USES_WINAVR><GCC_LOC>C:\avr8-gnu-toolchain-win32_x86\bin\avr-g++.exe</GCC_LOC><MAKE_LOC>C:\WinAVR-20100110\utils\bin\make.exe</MAKE_LOC></AVRGCCPLUGIN><ProjectFiles><Files><Name>F:\spi.h</Name><Name>F:\main.c</Name><Name>F:\spi.cpp</Name></Files></ProjectFiles><IOView><usergroups/><sort sorted="0" column="0" ordername="1" orderaddress="1" ordergroup="1"/></IOView><Files><File00000><FileId>00000</FileId><FileName>main.c</FileName><Status>1</Status></File00000></Files><Events><Bookmarks></Bookmarks></Events><Trace><Filters></Filters></Trace></AVRStudio>
|
<AVRStudio><MANAGEMENT><ProjectName>B15F</ProjectName><Created>22-Mar-2019 14:29:54</Created><LastEdit>22-Mar-2019 15:51:33</LastEdit><ICON>241</ICON><ProjectType>0</ProjectType><Created>22-Mar-2019 14:29:54</Created><Version>4</Version><Build>4, 19, 0, 730</Build><ProjectTypeName>AVR GCC</ProjectTypeName></MANAGEMENT><CODE_CREATION><ObjectFile>F:\B15F.elf</ObjectFile><EntryFile></EntryFile><SaveFolder>F:\</SaveFolder></CODE_CREATION><DEBUG_TARGET><CURRENT_TARGET>JTAGICE mkII</CURRENT_TARGET><CURRENT_PART>ATmega1284.xml</CURRENT_PART><BREAKPOINTS></BREAKPOINTS><IO_EXPAND><HIDE>false</HIDE></IO_EXPAND><REGISTERNAMES><Register>R00</Register><Register>R01</Register><Register>R02</Register><Register>R03</Register><Register>R04</Register><Register>R05</Register><Register>R06</Register><Register>R07</Register><Register>R08</Register><Register>R09</Register><Register>R10</Register><Register>R11</Register><Register>R12</Register><Register>R13</Register><Register>R14</Register><Register>R15</Register><Register>R16</Register><Register>R17</Register><Register>R18</Register><Register>R19</Register><Register>R20</Register><Register>R21</Register><Register>R22</Register><Register>R23</Register><Register>R24</Register><Register>R25</Register><Register>R26</Register><Register>R27</Register><Register>R28</Register><Register>R29</Register><Register>R30</Register><Register>R31</Register></REGISTERNAMES><COM>Auto</COM><COMType>0</COMType><WATCHNUM>0</WATCHNUM><WATCHNAMES><Pane0></Pane0><Pane1></Pane1><Pane2></Pane2><Pane3></Pane3></WATCHNAMES><BreakOnTrcaeFull>0</BreakOnTrcaeFull></DEBUG_TARGET><Debugger><Triggers></Triggers></Debugger><AVRGCCPLUGIN><FILES><SOURCEFILE>spi.cpp</SOURCEFILE><SOURCEFILE>main.cpp</SOURCEFILE><SOURCEFILE>Makefile</SOURCEFILE><HEADERFILE>spi.h</HEADERFILE><OTHERFILE>default\B15F.lss</OTHERFILE><OTHERFILE>default\B15F.map</OTHERFILE></FILES><CONFIGS><CONFIG><NAME>c++</NAME><USESEXTERNALMAKEFILE>NO</USESEXTERNALMAKEFILE><EXTERNALMAKEFILE></EXTERNALMAKEFILE><PART>atmega128</PART><HEX>1</HEX><LIST>1</LIST><MAP>1</MAP><OUTPUTFILENAME>B15F.elf</OUTPUTFILENAME><OUTPUTDIR>c++\</OUTPUTDIR><ISDIRTY>0</ISDIRTY><OPTIONS/><INCDIRS/><LIBDIRS/><LIBS/><LINKOBJECTS/><OPTIONSFORALL>-Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums</OPTIONSFORALL><LINKEROPTIONS></LINKEROPTIONS><SEGMENTS/></CONFIG><CONFIG><NAME>default</NAME><USESEXTERNALMAKEFILE>YES</USESEXTERNALMAKEFILE><EXTERNALMAKEFILE>Makefile</EXTERNALMAKEFILE><PART>atmega1284</PART><HEX>1</HEX><LIST>1</LIST><MAP>1</MAP><OUTPUTFILENAME>B15F.elf</OUTPUTFILENAME><OUTPUTDIR>default\</OUTPUTDIR><ISDIRTY>1</ISDIRTY><OPTIONS><OPTION><FILE>main.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>spi.cpp</FILE><OPTIONLIST></OPTIONLIST></OPTION></OPTIONS><INCDIRS><INCLUDE>C:\avr8-gnu-toolchain-win32_x86\avr\include\</INCLUDE></INCDIRS><LIBDIRS><LIBDIR>C:\avr8-gnu-toolchain-win32_x86\avr\lib\</LIBDIR></LIBDIRS><LIBS><LIB>libc.a</LIB></LIBS><LINKOBJECTS/><OPTIONSFORALL>-Wall -gdwarf-2 -DF_CPU=20000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums</OPTIONSFORALL><LINKEROPTIONS></LINKEROPTIONS><SEGMENTS/></CONFIG></CONFIGS><LASTCONFIG>default</LASTCONFIG><USES_WINAVR>0</USES_WINAVR><GCC_LOC>C:\avr8-gnu-toolchain-win32_x86\bin\avr-g++.exe</GCC_LOC><MAKE_LOC>C:\WinAVR-20100110\utils\bin\make.exe</MAKE_LOC></AVRGCCPLUGIN><ProjectFiles><Files><Name>F:\spi.h</Name><Name>F:\spi.cpp</Name><Name>F:\main.cpp</Name><Name>F:\Makefile</Name></Files></ProjectFiles><IOView><usergroups/><sort sorted="0" column="0" ordername="1" orderaddress="1" ordergroup="1"/></IOView><Files><File00000><FileId>00000</FileId><FileName>spi.h</FileName><Status>1</Status></File00000><File00001><FileId>00001</FileId><FileName>main.cpp</FileName><Status>1</Status></File00001><File00002><FileId>00002</FileId><FileName>Makefile</FileName><Status>1</Status></File00002></Files><Events><Bookmarks></Bookmarks></Events><Trace><Filters></Filters></Trace></AVRStudio>
|
||||||
|
|
27
Makefile
Normal file
27
Makefile
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
# Name: Makefile
|
||||||
|
# Project: gcnc
|
||||||
|
# Author: Tristan Krause
|
||||||
|
# Creation Date: 2019-03-22
|
||||||
|
|
||||||
|
OUTPUT = B15F.elf
|
||||||
|
CFLAGS = -std=c++14 -mmcu=atmega1284 -DF_CPU=20000000
|
||||||
|
LDFLAGS =
|
||||||
|
OBJECTS = main.o
|
||||||
|
|
||||||
|
COMPILER_PATH = C:\avr8-gnu-toolchain-win32_x86\bin\avr-g++.exe
|
||||||
|
COMPILE = $(COMPILER_PATH) $(CFLAGS)
|
||||||
|
|
||||||
|
B15F: $(OBJECTS)
|
||||||
|
@echo "Linking..."
|
||||||
|
$(COMPILE) $(OBJECTS) -o $(OUTPUT) $(LDFLAGS)
|
||||||
|
|
||||||
|
help:
|
||||||
|
@echo "This Makefile has the following rules. Use one of the following:"
|
||||||
|
@echo "make B15F .... to compile (default)"
|
||||||
|
@echo "make clean ... to delete objects and hex file"
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f $(OBJECTS) $(OUTPUT)
|
||||||
|
|
||||||
|
.cpp.o:
|
||||||
|
$(COMPILE) -c $< -o $@
|
2
b15f.aws
2
b15f.aws
|
@ -1 +1 @@
|
||||||
<AVRWorkspace><IOSettings><CurrentRegisters/></IOSettings><part name="ATMEGA1284"/><Files><File00000 Name="F:\main.c" Position="262 71 1501 391" LineCol="0 0" State="Maximized"/></Files></AVRWorkspace>
|
<AVRWorkspace><IOSettings><CurrentRegisters/></IOSettings><part name="ATMEGA1284"/><Files><File00000 Name="F:\main.cpp" Position="262 71 1501 573" LineCol="4 15" State="Maximized"/><File00001 Name="F:\spi.h" Position="288 130 1409 453" LineCol="8 9" State="Maximized"/></Files></AVRWorkspace>
|
||||||
|
|
BIN
default/B15F.elf
BIN
default/B15F.elf
Binary file not shown.
|
@ -13,17 +13,17 @@ Idx Name Size VMA LMA File off Algn
|
||||||
CONTENTS, READONLY
|
CONTENTS, READONLY
|
||||||
4 .debug_aranges 00000020 00000000 00000000 00000194 2**0
|
4 .debug_aranges 00000020 00000000 00000000 00000194 2**0
|
||||||
CONTENTS, READONLY, DEBUGGING
|
CONTENTS, READONLY, DEBUGGING
|
||||||
5 .debug_info 000007dc 00000000 00000000 000001b4 2**0
|
5 .debug_info 00000833 00000000 00000000 000001b4 2**0
|
||||||
CONTENTS, READONLY, DEBUGGING
|
CONTENTS, READONLY, DEBUGGING
|
||||||
6 .debug_abbrev 00000762 00000000 00000000 00000990 2**0
|
6 .debug_abbrev 0000079a 00000000 00000000 000009e7 2**0
|
||||||
CONTENTS, READONLY, DEBUGGING
|
CONTENTS, READONLY, DEBUGGING
|
||||||
7 .debug_line 00000055 00000000 00000000 000010f2 2**0
|
7 .debug_line 00000061 00000000 00000000 00001181 2**0
|
||||||
CONTENTS, READONLY, DEBUGGING
|
CONTENTS, READONLY, DEBUGGING
|
||||||
8 .debug_frame 00000024 00000000 00000000 00001148 2**2
|
8 .debug_frame 00000024 00000000 00000000 000011e4 2**2
|
||||||
CONTENTS, READONLY, DEBUGGING
|
CONTENTS, READONLY, DEBUGGING
|
||||||
9 .debug_str 0000037a 00000000 00000000 0000116c 2**0
|
9 .debug_str 000003b8 00000000 00000000 00001208 2**0
|
||||||
CONTENTS, READONLY, DEBUGGING
|
CONTENTS, READONLY, DEBUGGING
|
||||||
10 .debug_ranges 00000010 00000000 00000000 000014e6 2**0
|
10 .debug_ranges 00000010 00000000 00000000 000015c0 2**0
|
||||||
CONTENTS, READONLY, DEBUGGING
|
CONTENTS, READONLY, DEBUGGING
|
||||||
|
|
||||||
Disassembly of section .text:
|
Disassembly of section .text:
|
||||||
|
@ -80,8 +80,9 @@ Disassembly of section .text:
|
||||||
|
|
||||||
000000a4 <main>:
|
000000a4 <main>:
|
||||||
|
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
|
|
||||||
|
SPI spi_master;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
a4: 80 e0 ldi r24, 0x00 ; 0
|
a4: 80 e0 ldi r24, 0x00 ; 0
|
||||||
|
|
|
@ -23,6 +23,7 @@ LOAD main.o
|
||||||
LOAD spi.o
|
LOAD spi.o
|
||||||
LOAD c:/avr8-gnu-toolchain-win32_x86/bin/../lib/gcc/avr/5.4.0/avr51\libgcc.a
|
LOAD c:/avr8-gnu-toolchain-win32_x86/bin/../lib/gcc/avr/5.4.0/avr51\libgcc.a
|
||||||
LOAD c:/avr8-gnu-toolchain-win32_x86/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr51\libm.a
|
LOAD c:/avr8-gnu-toolchain-win32_x86/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr51\libm.a
|
||||||
|
LOAD c:/avr8-gnu-toolchain-win32_x86/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr51\libc.a
|
||||||
START GROUP
|
START GROUP
|
||||||
LOAD c:/avr8-gnu-toolchain-win32_x86/bin/../lib/gcc/avr/5.4.0/avr51\libgcc.a
|
LOAD c:/avr8-gnu-toolchain-win32_x86/bin/../lib/gcc/avr/5.4.0/avr51\libgcc.a
|
||||||
LOAD c:/avr8-gnu-toolchain-win32_x86/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr51\libm.a
|
LOAD c:/avr8-gnu-toolchain-win32_x86/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr51\libm.a
|
||||||
|
@ -371,31 +372,32 @@ END GROUP
|
||||||
.debug_pubnames
|
.debug_pubnames
|
||||||
*(.debug_pubnames)
|
*(.debug_pubnames)
|
||||||
|
|
||||||
.debug_info 0x00000000 0x7dc
|
.debug_info 0x00000000 0x833
|
||||||
*(.debug_info .gnu.linkonce.wi.*)
|
*(.debug_info .gnu.linkonce.wi.*)
|
||||||
.debug_info 0x00000000 0x792 c:/avr8-gnu-toolchain-win32_x86/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr51/crtatmega1284.o
|
.debug_info 0x00000000 0x792 c:/avr8-gnu-toolchain-win32_x86/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr51/crtatmega1284.o
|
||||||
.debug_info 0x00000792 0x4a main.o
|
.debug_info 0x00000792 0xa1 main.o
|
||||||
|
|
||||||
.debug_abbrev 0x00000000 0x762
|
.debug_abbrev 0x00000000 0x79a
|
||||||
*(.debug_abbrev)
|
*(.debug_abbrev)
|
||||||
.debug_abbrev 0x00000000 0x729 c:/avr8-gnu-toolchain-win32_x86/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr51/crtatmega1284.o
|
.debug_abbrev 0x00000000 0x729 c:/avr8-gnu-toolchain-win32_x86/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr51/crtatmega1284.o
|
||||||
.debug_abbrev 0x00000729 0x39 main.o
|
.debug_abbrev 0x00000729 0x71 main.o
|
||||||
|
|
||||||
.debug_line 0x00000000 0x55
|
.debug_line 0x00000000 0x61
|
||||||
*(.debug_line .debug_line.* .debug_line_end)
|
*(.debug_line .debug_line.* .debug_line_end)
|
||||||
.debug_line 0x00000000 0x1a c:/avr8-gnu-toolchain-win32_x86/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr51/crtatmega1284.o
|
.debug_line 0x00000000 0x1a c:/avr8-gnu-toolchain-win32_x86/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr51/crtatmega1284.o
|
||||||
.debug_line 0x0000001a 0x3b main.o
|
.debug_line 0x0000001a 0x47 main.o
|
||||||
.debug_line 0x00000055 0x0 spi.o
|
.debug_line 0x00000061 0x0 spi.o
|
||||||
|
|
||||||
.debug_frame 0x00000000 0x24
|
.debug_frame 0x00000000 0x24
|
||||||
*(.debug_frame)
|
*(.debug_frame)
|
||||||
.debug_frame 0x00000000 0x24 main.o
|
.debug_frame 0x00000000 0x24 main.o
|
||||||
|
|
||||||
.debug_str 0x00000000 0x37a
|
.debug_str 0x00000000 0x3b8
|
||||||
*(.debug_str)
|
*(.debug_str)
|
||||||
.debug_str 0x00000000 0x296 c:/avr8-gnu-toolchain-win32_x86/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr51/crtatmega1284.o
|
.debug_str 0x00000000 0x296 c:/avr8-gnu-toolchain-win32_x86/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr51/crtatmega1284.o
|
||||||
.debug_str 0x00000296 0xd9 main.o
|
.debug_str 0x00000296 0x117 main.o
|
||||||
.debug_str 0x0000036f 0xb spi.o
|
0x14b (size before relaxing)
|
||||||
|
.debug_str 0x000003ad 0xb spi.o
|
||||||
0xd5 (size before relaxing)
|
0xd5 (size before relaxing)
|
||||||
|
|
||||||
.debug_loc
|
.debug_loc
|
||||||
|
|
|
@ -15,7 +15,7 @@ COMMON = -mmcu=$(MCU)
|
||||||
|
|
||||||
## Compile options common for all C compilation units.
|
## Compile options common for all C compilation units.
|
||||||
CFLAGS = $(COMMON)
|
CFLAGS = $(COMMON)
|
||||||
CFLAGS += -Wall -gdwarf-2 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
|
CFLAGS += -Wall -gdwarf-2 -DF_CPU=20000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
|
||||||
CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d
|
CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d
|
||||||
|
|
||||||
## Assembly specific flags
|
## Assembly specific flags
|
||||||
|
@ -36,6 +36,15 @@ HEX_EEPROM_FLAGS += --set-section-flags=.eeprom="alloc,load"
|
||||||
HEX_EEPROM_FLAGS += --change-section-lma .eeprom=0 --no-change-warnings
|
HEX_EEPROM_FLAGS += --change-section-lma .eeprom=0 --no-change-warnings
|
||||||
|
|
||||||
|
|
||||||
|
## Include Directories
|
||||||
|
INCLUDES = -I"C:\avr8-gnu-toolchain-win32_x86\avr\include"
|
||||||
|
|
||||||
|
## Library Directories
|
||||||
|
LIBDIRS = -L"C:\avr8-gnu-toolchain-win32_x86\avr\lib"
|
||||||
|
|
||||||
|
## Libraries
|
||||||
|
LIBS = -lc
|
||||||
|
|
||||||
## Objects that must be built in order to link
|
## Objects that must be built in order to link
|
||||||
OBJECTS = main.o spi.o
|
OBJECTS = main.o spi.o
|
||||||
|
|
||||||
|
|
5
main.c
5
main.c
|
@ -1,5 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
int main() {
|
|
||||||
return 0;
|
|
||||||
}
|
|
7
main.cpp
Normal file
7
main.cpp
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
#include "spi.h"
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
|
||||||
|
SPI spi_master;
|
||||||
|
return 0;
|
||||||
|
}
|
13
spi.h
13
spi.h
|
@ -0,0 +1,13 @@
|
||||||
|
#ifndef SPI_H
|
||||||
|
#define SPI_H
|
||||||
|
|
||||||
|
#include <util/delay.h>
|
||||||
|
|
||||||
|
class SPI {
|
||||||
|
|
||||||
|
|
||||||
|
private: int d;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
Loading…
Add table
Add a link
Reference in a new issue