[Camkes] Is there any way to declare hierarchical header files and does CamKES support C++ boost preprocessor?
Hello everybody, I'm conducting a C-project, in which the code is utilizing boost library to define several macros. This source code is running well in Linux and using only standard C library (I had tested this libraries individually by some mini-programs on CamKES). My project is organized as follows: - Top folder: + "components" folder contains my c code + "include" folder contains 1 .h file boost1.h and 1 folder test ++ sub-folder "test" contains 1 file boost2.h ++ content of boost1.h is just include "test/boost2.h" + "Makefile" is declared as below: TARGETS := $(notdir ${SOURCE_DIR}).cdl ADL := tst-macro.camkes Client_CFILES := \ $(patsubst ${SOURCE_DIR}/%,%,$(wildcard ${SOURCE_DIR}/components/Client/src/*.c)) \ $(patsubst ${SOURCE_DIR}/%,%,$(wildcard ${SOURCE_DIR}/components/Client/src/plat/${PLAT}/*.c)) \ $(patsubst ${SOURCE_DIR}/%,%,$(wildcard ${SOURCE_DIR}/components/Client/src/arch/${ARCH}/*.c)) Client_ASMFILES := \ $(patsubst ${SOURCE_DIR}/%,%,$(wildcard ${SOURCE_DIR}/components/Client/crt/arch-${ARCH}/crt0.S)) \ $(patsubst ${SOURCE_DIR}/%,%,$(wildcard ${SOURCE_DIR}/components/Client/src/*.S)) \ $(patsubst ${SOURCE_DIR}/%,%,$(wildcard ${SOURCE_DIR}/components/Client/src/arch/${ARCH}/*.S)) \ $(patsubst ${SOURCE_DIR}/%,%,$(wildcard ${SOURCE_DIR}/components/Client/src/plat/${PLAT}/*.S)) Client_HFILES := \ $(patsubst ${SOURCE_DIR}/%,%,$(wildcard ${SOURCE_DIR}/components/Client/include/*)) include ${PWD}/tools/camkes/camkes.mk - This above Makefile, I imitated from another application, and when I compiled the project, there are some errors related to directory of "test/boost2.h". I suspect that there is something wrong with Client_HFILES declaration, since maybe it is only valid for a list of .h files, not for hierarchical folders. - I really want to dive into CamKES, but I only have a little knowledge about this. My project is due so I hope to get some positive advice from you for 2 questions: + The right way to declare multi-level libraries as in my example. + Besides, does CamKES support boost preprocessing lib. Currently I'm using the toolchain arm-none-eabi- Thank all of you for the time and attention. Dinh-Cuong -- ------------------- TRAN Dinh Cuong (Mr) Email : cuongtd4@gmail.com
Regarding the use of multiple levels of directories containing headers:
All the header files listed in the `Client_HFILES` variable are copied into a staging area, and the files in the staging area are included during compilation. Importantly, only the files listed in that variable are copied - not directories. The simplest way to recursively list all header files in a directory structure is using the `shell` builtin to run find (e.g. `Client_HFILES := $(shell find ${SOURCE_DIR}/components/Client/include -name '*.h')` ).
Regarding boost support, we don't explicitly support it (ie. none of our tests use it), but it will really depend on what you're doing with it. If all you're using it for is C preprocessor macros, I can't see any reason it why it shouldn't work. I can't speak for more complicated boost or C++ features.
Hope this helps!
________________________________
From: Devel
Hi Stephen,
Thank you so much for your comment that made my day! I overcame the problem
of multi-level library headers. I'm also doing some experiments with
boostp.
Thanks and reagards
On Wed, Jun 14, 2017 at 6:11 AM,
Regarding the use of multiple levels of directories containing headers:
All the header files listed in the `Client_HFILES` variable are copied into a staging area, and the files in the staging area are included during compilation. Importantly, only the files listed in that variable are copied - not directories. The simplest way to recursively list all header files in a directory structure is using the `shell` builtin to run find (e.g. `Client_HFILES := $(shell find ${SOURCE_DIR}/components/Client/include -name '*.h')` ).
Regarding boost support, we don't explicitly support it (ie. none of our tests use it), but it will really depend on what you're doing with it. If all you're using it for is C preprocessor macros, I can't see any reason it why it shouldn't work. I can't speak for more complicated boost or C++ features.
Hope this helps!
------------------------------ *From:* Devel
on behalf of Tran Cuong < cuongtd4@gmail.com> *Sent:* Tuesday, 13 June 2017 7:47 AM *To:* devel@sel4.systems *Subject:* [seL4] [Camkes] Is there any way to declare hierarchical header files and does CamKES support C++ boost preprocessor? Hello everybody,
I'm conducting a C-project, in which the code is utilizing boost library to define several macros. This source code is running well in Linux and using only standard C library (I had tested this libraries individually by some mini-programs on CamKES).
My project is organized as follows: - Top folder: + "components" folder contains my c code + "include" folder contains 1 .h file boost1.h and 1 folder test ++ sub-folder "test" contains 1 file boost2.h ++ content of boost1.h is just include "test/boost2.h" + "Makefile" is declared as below:
TARGETS := $(notdir ${SOURCE_DIR}).cdl ADL := tst-macro.camkes
Client_CFILES := \ $(patsubst ${SOURCE_DIR}/%,%,$(wildcard ${SOURCE_DIR}/components/Client/src/*.c)) \ $(patsubst ${SOURCE_DIR}/%,%,$(wildcard ${SOURCE_DIR}/components/Client/src/plat/${PLAT}/*.c)) \ $(patsubst ${SOURCE_DIR}/%,%,$(wildcard ${SOURCE_DIR}/components/ Client/src/arch/${ARCH}/*.c))
Client_ASMFILES := \ $(patsubst ${SOURCE_DIR}/%,%,$(wildcard ${SOURCE_DIR}/components/ Client/crt/arch-${ARCH}/crt0.S)) \ $(patsubst ${SOURCE_DIR}/%,%,$(wildcard ${SOURCE_DIR}/components/Client/src/*.S)) \ $(patsubst ${SOURCE_DIR}/%,%,$(wildcard ${SOURCE_DIR}/components/Client/src/arch/${ARCH}/*.S)) \ $(patsubst ${SOURCE_DIR}/%,%,$(wildcard ${SOURCE_DIR}/components/ Client/src/plat/${PLAT}/*.S))
Client_HFILES := \ $(patsubst ${SOURCE_DIR}/%,%,$(wildcard ${SOURCE_DIR}/components/ Client/include/*))
include ${PWD}/tools/camkes/camkes.mk
- This above Makefile, I imitated from another application, and when I compiled the project, there are some errors related to directory of "test/boost2.h". I suspect that there is something wrong with Client_HFILES declaration, since maybe it is only valid for a list of .h files, not for hierarchical folders. - I really want to dive into CamKES, but I only have a little knowledge about this. My project is due so I hope to get some positive advice from you for 2 questions: + The right way to declare multi-level libraries as in my example. + Besides, does CamKES support boost preprocessing lib. Currently I'm using the toolchain arm-none-eabi-
Thank all of you for the time and attention.
Dinh-Cuong
-- ------------------- TRAN Dinh Cuong (Mr) Email : cuongtd4@gmail.com
_______________________________________________ Devel mailing list Devel@sel4.systems https://sel4.systems/lists/listinfo/devel
-- ------------------- TRAN Dinh Cuong (Mr) Chambre B203 - Résidence Ouest 107 Rue des Taillées, 38400 Saint-Martin-d'Hères, France Tel : + 33 06 01 25 20 60 Email : cuongtd4@gmail.com
participants (2)
-
Stephen.Sherratt@data61.csiro.au
-
Tran Cuong