Skip to content

Commit bad4b8a

Browse files
committed
Rewrite CMake files
to avoid extra libraries and fix `idf.py app` for hello_world
1 parent e15236e commit bad4b8a

File tree

4 files changed

+152
-27
lines changed

4 files changed

+152
-27
lines changed

CMakeLists.txt

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,35 @@
1+
# Read GNAT RTL object files list
2+
file(READ ${COMPONENT_DIR}/esp32/obj_list.txt OBJ)
3+
list(TRANSFORM OBJ STRIP)
4+
5+
if(NOT CMAKE_BUILD_EARLY_EXPANSION)
6+
# Build GNAT RTS in ${BUILD_DIR}/rts without *.c
7+
8+
# Make full name object files list
9+
list(TRANSFORM OBJ PREPEND ${COMPONENT_DIR}/ REGEX "." OUTPUT_VARIABLE FULL)
10+
11+
# run gprbuild and gprinstall
12+
add_custom_command(OUTPUT ${FULL}
13+
COMMAND gprbuild -p -P ${COMPONENT_DIR}/esp32/build_runtime.gpr
14+
--db ${COMPONENT_DIR}/gprconfig
15+
--autoconf=${BUILD_DIR}/config.cgpr
16+
&& gprinstall -f -p -P ${COMPONENT_DIR}/esp32/build_runtime.gpr
17+
--prefix=${BUILD_DIR}/rts
18+
--autoconf=${BUILD_DIR}/config.cgpr
19+
VERBATIM)
20+
endif()
21+
122
idf_component_register(
223
SRCS
324
"common/adaint.c"
425
"common/freertos_bindings.c"
526
"common/last_chance_handler.c"
627
"common/vApplicationStackOverflowHook.c"
28+
${OBJ}
729
REQUIRES freertos)
830

931
idf_component_get_property(FREERTOS_ORIG_INCLUDE_PATH freertos
1032
ORIG_INCLUDE_PATH)
1133

1234
target_include_directories (${COMPONENT_LIB} PRIVATE
1335
${FREERTOS_ORIG_INCLUDE_PATH})
14-
15-
# Build GNAT RTS in ${BUILD_DIR}/rts
16-
add_custom_command(OUTPUT ${BUILD_DIR}/rts/adalib/libgnat.a
17-
COMMAND gprbuild -p -P ${COMPONENT_DIR}/esp32/build_runtime.gpr
18-
--db ${COMPONENT_DIR}/gprconfig
19-
--autoconf=${BUILD_DIR}/config.cgpr
20-
&& gprinstall -p -P ${COMPONENT_DIR}/esp32/build_runtime.gpr
21-
--prefix=${BUILD_DIR}/rts
22-
--autoconf=${BUILD_DIR}/config.cgpr
23-
DEPENDS ${COMPONENT_DIR}/common/ ${COMPONENT_DIR}/esp32/adainclude/
24-
VERBATIM)
25-
26-
add_custom_target(gnat DEPENDS ${BUILD_DIR}/rts/adalib/libgnat.a)
27-
add_dependencies(${COMPONENT_LIB} gnat)
28-
target_link_libraries(${COMPONENT_LIB} ${BUILD_DIR}/rts/adalib/libgnat.a)

esp32/adalib/.gitignore

Whitespace-only changes.

esp32/obj_list.txt

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
esp32/.objs/a-cbhama.o;
2+
esp32/.objs/a-cgaaso.o;
3+
esp32/.objs/a-cgarso.o;
4+
esp32/.objs/a-cgcaso.o;
5+
esp32/.objs/a-charac.o;
6+
esp32/.objs/a-chlat1.o;
7+
esp32/.objs/a-chtgbk.o;
8+
esp32/.objs/a-chtgbo.o;
9+
esp32/.objs/a-cobove.o;
10+
esp32/.objs/a-cogeso.o;
11+
esp32/.objs/a-cohata.o;
12+
esp32/.objs/a-contai.o;
13+
esp32/.objs/a-coprnu.o;
14+
esp32/.objs/a-except.o;
15+
esp32/.objs/a-interr.o;
16+
esp32/.objs/a-intnam.o;
17+
esp32/.objs/a-ioexce.o;
18+
esp32/.objs/a-iteint.o;
19+
esp32/.objs/a-ncelfu.o;
20+
esp32/.objs/a-ngcefu.o;
21+
esp32/.objs/a-ngcoar.o;
22+
esp32/.objs/a-ngcoty.o;
23+
esp32/.objs/a-ngelfu.o;
24+
esp32/.objs/a-ngrear.o;
25+
esp32/.objs/a-nlcefu.o;
26+
esp32/.objs/a-nlcoar.o;
27+
esp32/.objs/a-nlcoty.o;
28+
esp32/.objs/a-nlelfu.o;
29+
esp32/.objs/a-nllcar.o;
30+
esp32/.objs/a-nllcef.o;
31+
esp32/.objs/a-nllcty.o;
32+
esp32/.objs/a-nllefu.o;
33+
esp32/.objs/a-nllrar.o;
34+
esp32/.objs/a-nlrear.o;
35+
esp32/.objs/a-nscefu.o;
36+
esp32/.objs/a-nscoty.o;
37+
esp32/.objs/a-nselfu.o;
38+
esp32/.objs/a-nucoar.o;
39+
esp32/.objs/a-nucoty.o;
40+
esp32/.objs/a-nuelfu.o;
41+
esp32/.objs/a-numaux.o;
42+
esp32/.objs/a-numeri.o;
43+
esp32/.objs/a-nurear.o;
44+
esp32/.objs/a-reatim.o;
45+
esp32/.objs/a-retide.o;
46+
esp32/.objs/a-rttiev.o;
47+
esp32/.objs/a-strbou.o;
48+
esp32/.objs/a-stream.o;
49+
esp32/.objs/a-string.o;
50+
esp32/.objs/a-strmap.o;
51+
esp32/.objs/a-strsea.o;
52+
esp32/.objs/a-strsup.o;
53+
esp32/.objs/a-sytaco.o;
54+
esp32/.objs/a-tags.o;
55+
esp32/.objs/a-taside.o;
56+
esp32/.objs/a-unccon.o;
57+
esp32/.objs/a-uncdea.o;
58+
esp32/.objs/ada.o;
59+
esp32/.objs/environment_task.o;
60+
esp32/.objs/g-crc32.o;
61+
esp32/.objs/g-souinf.o;
62+
esp32/.objs/gnat.o;
63+
esp32/.objs/i-c.o;
64+
esp32/.objs/i-cexten.o;
65+
esp32/.objs/i-cstrin.o;
66+
esp32/.objs/interfac.o;
67+
esp32/.objs/machcode.o;
68+
esp32/.objs/os_exit.o;
69+
esp32/.objs/s-aridou.o;
70+
esp32/.objs/s-arit64.o;
71+
esp32/.objs/s-assert.o;
72+
esp32/.objs/s-atacco.o;
73+
esp32/.objs/s-bitops.o;
74+
esp32/.objs/s-casuti.o;
75+
esp32/.objs/s-crc32.o;
76+
esp32/.objs/s-exctab.o;
77+
esp32/.objs/s-exnllf.o;
78+
esp32/.objs/s-fatflt.o;
79+
esp32/.objs/s-fatgen.o;
80+
esp32/.objs/s-fatlfl.o;
81+
esp32/.objs/s-fatllf.o;
82+
esp32/.objs/s-fatsfl.o;
83+
esp32/.objs/s-flocon.o;
84+
esp32/.objs/s-freert.o;
85+
esp32/.objs/s-fremem.o;
86+
esp32/.objs/s-freque.o;
87+
esp32/.objs/s-fresem.o;
88+
esp32/.objs/s-fretas.o;
89+
esp32/.objs/s-fretcb.o;
90+
esp32/.objs/s-gearop.o;
91+
esp32/.objs/s-htable.o;
92+
esp32/.objs/s-imenne.o;
93+
esp32/.objs/s-imgboo.o;
94+
esp32/.objs/s-imgint.o;
95+
esp32/.objs/s-imglli.o;
96+
esp32/.objs/s-imgllu.o;
97+
esp32/.objs/s-imgrea.o;
98+
esp32/.objs/s-imguns.o;
99+
esp32/.objs/s-interr.o;
100+
esp32/.objs/s-maccod.o;
101+
esp32/.objs/s-memory.o;
102+
esp32/.objs/s-parame.o;
103+
esp32/.objs/s-powtab.o;
104+
esp32/.objs/s-secsta.o;
105+
esp32/.objs/s-stalib.o;
106+
esp32/.objs/s-stoele.o;
107+
esp32/.objs/s-stratt.o;
108+
esp32/.objs/s-strhas.o;
109+
esp32/.objs/s-taprob.o;
110+
esp32/.objs/s-tarest.o;
111+
esp32/.objs/s-tasinf.o;
112+
esp32/.objs/s-taskin.o;
113+
esp32/.objs/s-tasres.o;
114+
esp32/.objs/s-tposen.o;
115+
esp32/.objs/s-unstyp.o;
116+
esp32/.objs/s-valuns.o;
117+
esp32/.objs/s-valuti.o;
118+
esp32/.objs/system.o;
Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
1-
idf_component_register(SRCS "hello_world.c"
2-
INCLUDE_DIRS "."
3-
REQUIRES esp32-gnat-rts)
1+
set(OBJ
2+
${COMPONENT_DIR}/.objs/b__hello_world.o
3+
${COMPONENT_DIR}/.objs/hello_world.o)
44

5-
# Build *.gpr into a static library
6-
add_custom_command(OUTPUT ${BUILD_DIR}/libadamain.a
5+
if(NOT CMAKE_BUILD_EARLY_EXPANSION)
6+
# Compile Ada file and run binder
7+
add_custom_command(OUTPUT ${OBJ}
78
COMMAND gprbuild -b -c -p -P ${COMPONENT_DIR}/hello_world.gpr
89
--db ${COMPONENT_DIR}/gprconfig
910
--autoconf=${BUILD_DIR}/config.cgpr
1011
--RTS=${BUILD_DIR}/rts
11-
&& xtensa-esp32-elf-ar rcs ${BUILD_DIR}/libadamain.a
12-
${COMPONENT_DIR}/.objs/b__hello_world.o
13-
${COMPONENT_DIR}/.objs/hello_world.o
1412
DEPENDS hello_world.gpr hello_world.adb
1513
VERBATIM)
14+
endif()
1615

17-
add_custom_target(adamain DEPENDS ${BUILD_DIR}/libadamain.a)
18-
add_dependencies(${COMPONENT_LIB} adamain)
19-
target_link_libraries(${COMPONENT_LIB} ${BUILD_DIR}/libadamain.a)
20-
16+
idf_component_register(SRCS "hello_world.c"
17+
".objs/b__hello_world.o"
18+
".objs/hello_world.o"
19+
INCLUDE_DIRS "."
20+
REQUIRES esp32-gnat-rts)

0 commit comments

Comments
 (0)