@ -1,20 +1,39 @@
cmake_minimum_required ( VERSION 3.1 5 )
cmake_minimum_required ( VERSION 3.1 8 )
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# C M A K E F e a t u r e s
# C M A K E F e a t u r e s
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
set ( CMAKE_VERBOSE_MAKEFILE ON ) # S h o u l d C M a k e p r i n t e v e r y t h i g n ?
# d o t h i s i n s t e a d o f d e c l a r i n g l a n g u a g e s i n t h e b e g i n n i n g t h i s W I L L p r e v e n t l o o p e r r o r s .
project ( ${ CSL_USED } ASM C CXX )
# D e f i n i n g t h e e x e c u t a b l e s n a m e
set ( EXECUTABLE ${ PROJECT_NAME } )
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# N O N - V I T A L O P T I O N F O R C O M P I L A T I O N
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
set ( CMAKE_VERBOSE_MAKEFILE OFF ) # S h o u l d C M a k e p r i n t e v e r y t h i g n ?
set ( OUTPUT_DOXYGEN TRUE ) # S h o u l d C M a k e g e n e r a t e D o x y g e n o u t p u t ?
set ( DOXYGEN_OUTPUT_DIR ${ CMAKE_SOURCE_DIR } /env/doc )
set ( PL "c" ) # U s e d p r o g r a m m i n g l a n g u a g e , w e c o u l d m a y b e d o a c h e c k .
set ( PL "c" ) # U s e d p r o g r a m m i n g l a n g u a g e , w e c o u l d m a y b e d o a c h e c k .
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# P A S S E D V A R I A B L E W H E N C A L L I N G r u n . s h
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# C S L _ U S E D p a s s e d b y r u n . s h a n d i s t h e q u i v a l e n t o f t h e i c n a m e
# P R O J E C T _ D I R P a s s e d b y r u n . s h a n d i s t h e d e f i n e d p l a c e w h e r e t h e p r o j e c t i s . r u n . s h s h o u l d b e i n t e f u t u r e c a p a b l e o f d e f i n i n p r o j e c t p a h t .
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# S e t t i n g t h e u s e d d i r e c t o r y l o c a t i o n s
# S e t t i n g t h e u s e d d i r e c t o r y l o c a t i o n s
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# L o c a t i o n o f t h e p r o j e c t : I t i s d e f a u l t e d t o o n e H i g h e r t h a n t h e K E D D i r e c t o r y : T O D O : S h a l l w e l e t
# L o c a t i o n o f t h e p r o j e c t : I t i s d e f a u l t e d t o o n e H i g h e r t h a n t h e K E D D i r e c t o r y : T O D O : S h a l l w e l e t
set ( PROJECT_DIR ${ CMAKE_SOURCE_DIR } /.. )
set ( PROJECT_CONFIG_FILE ${ PROJECT_DIR } /projectDefinitions.cmake )
set ( PROJECT_CONFIG_FILE ${ PROJECT_DIR } /projectDefinitions.cmake )
# L o c a t i o n o f t h e c m k a e c o r e f u n t i o n a l i t i e s / f u n t i o n s / d e f i n i t i o n s
# L o c a t i o n o f t h e c m k a e c o r e f u n t i o n a l i t i e s / f u n t i o n s / d e f i n i t i o n s
set ( CMAKE_CORE_DIR ${ CMAKE_SOURCE_DIR } /env/cmake_core )
set ( CMAKE_CORE_DIR ${ CMAKE_SOURCE_DIR } /env/cmake_core )
set ( COMPILER_DEFS ${ CMAKE_CORE_DIR } /compiler.cmake )
# L o c a t i o n o f C S L , C S L _ U S E D i s p a s s e d a s a n a r g u t e m t o C M a k e f r o m r u n . s h
# L o c a t i o n o f C S L , C S L _ U S E D i s p a s s e d a s a n a r g u t e m t o C M a k e f r o m r u n . s h
# - > " S p e c i f i c t o e a c h C S L "
# - > " S p e c i f i c t o e a c h C S L "
@ -22,6 +41,7 @@ set(CSL_DIR ${CMAKE_SOURCE_DIR}/csl/${CSL_USED})
set ( CSL_SOURCES_DIR ${ CSL_DIR } /implementation )
set ( CSL_SOURCES_DIR ${ CSL_DIR } /implementation )
set ( CSL_HEADERS_DIR ${ CSL_DIR } /CMSIS/Include ${ CSL_DIR } /HardwareDescription )
set ( CSL_HEADERS_DIR ${ CSL_DIR } /CMSIS/Include ${ CSL_DIR } /HardwareDescription )
set ( CSL_STARTUP_DIR ${ CSL_DIR } /startup )
set ( CSL_STARTUP_DIR ${ CSL_DIR } /startup )
set ( CSL_CONFIG_FILE ${ CSL_DIR } /config.cmake )
# D i r e c t i r y f o t t h e d r i v e r s - > " C o m m o n t o a l l C S L "
# D i r e c t i r y f o t t h e d r i v e r s - > " C o m m o n t o a l l C S L "
set ( DRIVERS_DIR ${ CMAKE_SOURCE_DIR } /drivers )
set ( DRIVERS_DIR ${ CMAKE_SOURCE_DIR } /drivers )
@ -31,12 +51,10 @@ set(DRIVERS_HEADERS_DIR) #Declared empty because it will be filled automati
set ( PERIPHERALS_DIR ${ CMAKE_SOURCE_DIR } /peripherals )
set ( PERIPHERALS_DIR ${ CMAKE_SOURCE_DIR } /peripherals )
set ( PERIPHERALS_HEADERS_DIR ${ CMAKE_SOURCE_DIR } /peripherals )
set ( PERIPHERALS_HEADERS_DIR ${ CMAKE_SOURCE_DIR } /peripherals )
# D i r e c t o r y f o r t h e l i b r a r i e s - > " C o m m o n t o a l l C S L "
set ( LIBRARIES_DIR ${ CMAKE_SOURCE_DIR } /libraries )
set ( LIBRARIES_DIR ${ CMAKE_SOURCE_DIR } /libraries )
set ( LIBRARIES_HEADERS_DIR ${ CMAKE_SOURCE_DIR } /libraries )
set ( LIBRARIES_HEADERS_DIR ${ CMAKE_SOURCE_DIR } /libraries )
# V a r i a b l e f o r D o x y g e n g e n e r a t i o n
set ( OUTPUT_DOXYGEN TRUE ) # S h o u l d C M a k e g e n e r a t e D o x y g e n o u t p u t ?
set ( DOXYGEN_WORKING_DIR ${ CMAKE_SOURCE_DIR } /env/doc )
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# I N C L U D E S
# I N C L U D E S
@ -50,7 +68,7 @@ include(${CMAKE_CORE_DIR}/cmakeCore.cmake)
# F o r D e t a i l e d e r r o r m e s s a g e s .
# F o r D e t a i l e d e r r o r m e s s a g e s .
include ( ${ CMAKE_CORE_DIR } /errorHandler.cmake )
include ( ${ CMAKE_CORE_DIR } /errorHandler.cmake )
# He r e i s t h e i n c l u d e W h e r e t h e u s e r s o u l d d e f i n e h i s p r o j e c t s o u r c e s a n d h e a d e r s
# In c l u d e t h e p r o j e c t d e f i n i t i o n d e f i n e d b y t h e e n d u s e r i m p l e m e n t i o g n K E D a s a s u b m o d u l e
include ( ${ PROJECT_CONFIG_FILE } )
include ( ${ PROJECT_CONFIG_FILE } )
# H e r e i s t h e i n c l u d e f o p r t h e a w a i l a b l e p e r i p h e r a l h e a d e r s a n d s t a n d a r t l i b r a r i e s .
# H e r e i s t h e i n c l u d e f o p r t h e a w a i l a b l e p e r i p h e r a l h e a d e r s a n d s t a n d a r t l i b r a r i e s .
@ -59,52 +77,15 @@ include(${PERIPHERALS_DIR}/CMakeLists.txt)
# H e r e i s t h e i n c l u d e f o p r t h e a w a i l a b l e p e r i p h e r a l h e a d e r s a n d s t a n d a r t l i b r a r i e s .
# H e r e i s t h e i n c l u d e f o p r t h e a w a i l a b l e p e r i p h e r a l h e a d e r s a n d s t a n d a r t l i b r a r i e s .
include ( ${ DRIVERS_DIR } /CMakeLists.txt )
include ( ${ DRIVERS_DIR } /CMakeLists.txt )
# I n c l u d e t h e c o n f i g f i e l w h e r e t h e c o m p i l e r s t o u s e a r d e f i n e d
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# C h e k i n g i f t h e c h o o s e n C S L e x i s t s , t h i s i r e d u n d a n t b e c a u s e r u n . s h m a k e s t h a t a l r e d y b u t m a k e s t h e
# c o d e f u t u r e p r o o f . G o a l w o u l d b e t o n o t u s e a r u n . s h i f t h e u s e r d o e s n ' t n e e d h e l p
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
if ( EXISTS ${ CSL_DIR } ) # C h e k i n g i f t h e d i r e c t o r y e x i s t s
message ( "${Green}" )
message ( "+-------------------------------+" )
message ( "Compiling for ${CSL_USED}" )
message ( "+-------------------------------+" )
message ( "Project dir : ${PROJECT_DIR}" )
message ( "+-------------------------------+" )
message ( "${ColourReset}" )
set ( COMPILER_DEFS ${ CMAKE_CORE_DIR } /compiler.cmake ) # T O D O : C h a n g e l o c a t i o n
set ( CSL_DEFS ${ CSL_DIR } /config.cmake )
else ( )
message ( "${Red}" )
message ( FATAL_ERROR "\nPlease Select a valid CSL, CMake will exit\n" )
message ( "${ColourReset}" )
endif ( )
include ( ${ COMPILER_DEFS } )
include ( ${ COMPILER_DEFS } )
# d o t h i s i n s t e a d o f d e c l a r i n g l a n g u a g e s i n t h e b e g i n n i n g t h i s W I L L p r e v e n t l o o p e r r o r s .
# C o n f u g r a t i o n f i l e o f t h e c s l , t h e r e y o u w i l l w i n d t h e s t a r u p c o d e h a n d l i n g , c o m p i l e r / l i n k e r o p t i o n s , f l a g s a n d d e f i n i t i o n s
project ( ${ CSL_USED } ASM C CXX )
include ( ${ CSL_CONFIG_FILE } )
# C r e a t e t h e e x e c u t a b l e
set ( EXECUTABLE ${ PROJECT_NAME } )
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# SU B D I R E C T O R I E S W i l l a d d t h e g i v e n f o l d e r s t o t h e p o r j e c t a n c h e c k f o r C m a k e L i s t s . t x t
# H E A D E R S : A L L H e a d e r D e f i n i t i o n s a n d c a l l s M S U T b e m a d e h e r e t o b e a b l e t o p r o p a g a t e t h e m t h r o u g h a l l t h e m o d u l e s
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
include ( ${ CSL_DEFS } )
add_subdirectory ( ${ CSL_DIR } )
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# S a r t u p t u C o d e D e f i n i t i o n t h i s p a r t I s l e f t a l o n e o n p u r p o s e !
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
set ( STARTUP_UCODE sub::startup )
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# H E A D E R S
# A L L H e a d e r D e f i n i t i o n s a n d c a l l s M S U T b e m a d e h e r e t o b e a b l e t o p r o p a g a t e t h e m t h r o u g h a l l t h e m o d u l e s
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
message ( "${BoldBlue}" )
message ( "${BoldBlue}" )
message ( "+-------------------------------+" )
message ( "+-------------------------------+" )
message ( "Cheking Driver Headers" )
message ( "Cheking Driver Headers" )
@ -158,14 +139,10 @@ message("Cheking User's Project")
message ( "+-------------------------------+" )
message ( "+-------------------------------+" )
message ( "Included Project Headers :" )
message ( "Included Project Headers :" )
checkDirectory ( "${PROJECT_HEADERS_DIR}" )
checkDirectory ( "${PROJECT_HEADERS_DIR}" )
message ( "Included Project Sources :" )
message ( "Included Project Sources :" )
checkDirectory ( "${PROJECT_SOURCES_DIR}" )
checkDirectory ( "${PROJECT_SOURCES_DIR}" )
message ( "Declared sources :" )
message ( "Declared sources :" )
foreach ( X IN LISTS PROJECT_SOURCES_DIR_LIST )
printList ( "|-->" "${PROJECT_SOURCES_DIR_LIST}" )
message ( "|-->${X}" )
endforeach ( )
message ( "Creating Libraries for declared sources :" )
message ( "Creating Libraries for declared sources :" )
foreach ( X IN LISTS PROJECT_SOURCES_DIR_LIST )
foreach ( X IN LISTS PROJECT_SOURCES_DIR_LIST )
@ -194,7 +171,7 @@ message(" |--> Executable's Name\t\t\t : ${EXECUTABLE}")
message ( " |--> Project's directory\t\t : ${PROJECT_DIR}" )
message ( " |--> Project's directory\t\t : ${PROJECT_DIR}" )
message ( " |--> Project Configuration\t\t : ${PROJECT_DIR}/project.conf" )
message ( " |--> Project Configuration\t\t : ${PROJECT_DIR}/project.conf" )
message ( " |--> Chip Support Layer Dir.\t\t : ${CSL_DIR}" )
message ( " |--> Chip Support Layer Dir.\t\t : ${CSL_DIR}" )
message ( " |--> CLS's cmake configuration\t\t : ${CSL_ DEFS }")
message ( " |--> CLS's cmake configuration\t\t : ${CSL_ CONFIG_FILE }")
message ( " |--> Compiler Definition file\t\t : ${COMPILER_DEFS}" )
message ( " |--> Compiler Definition file\t\t : ${COMPILER_DEFS}" )
message ( " |--> Driver Dir\t\t\t : ${DRIVERS_DIR}" )
message ( " |--> Driver Dir\t\t\t : ${DRIVERS_DIR}" )
message ( " |--> Periferal Definition Dir\t\t : ${PERIPHERALS_DIR}" )
message ( " |--> Periferal Definition Dir\t\t : ${PERIPHERALS_DIR}" )
@ -204,39 +181,20 @@ message(" |--> Startup uCode Submodule:")
message ( " |->${STARTUP_UCODE}" )
message ( " |->${STARTUP_UCODE}" )
message ( " |--> Main Compile Definitions:" )
message ( " |--> Main Compile Definitions:" )
foreach ( X IN LISTS MAIN_DEFS )
printList ( " | " "${MAIN_DEFS}" )
message ( " | ${X}" )
endforeach ( )
message ( " |--> Main Compile Flags:" )
message ( " |--> Main Compile Flags:" )
foreach ( X IN LISTS MAIN_FLAGS )
printList ( " | " "${MAIN_FLAGS}" )
message ( " | ${X}" )
endforeach ( )
message ( " |--> Linker Flags:" )
message ( " |--> Linker Flags:" )
foreach ( X IN LISTS LINKER_FLAGS )
printList ( " | " "${LINKER_FLAGS}" )
message ( " | ${X}" )
endforeach ( )
message ( "" )
message ( " |--> Periferals which will be implemented:" )
message ( " |--> Periferals which will be implemented:" )
foreach ( X IN LISTS PERIPHERALS_LIST )
printList ( " |-> " "${PERIPHERALS_LIST}" )
message ( " |->${X}" )
endforeach ( )
message ( " |--> Drivers which will be implemented:" )
message ( " |--> Drivers which will be implemented:" )
foreach ( X IN LISTS DRIVERS_LIST )
printList ( " |-> " "${DRIVERS_LIST}" )
message ( " |->${X}" )
endforeach ( )
message ( " |--> Project sources to be implemented:" )
message ( " |--> Project sources to be implemented:" )
foreach ( X IN LISTS PROJECT_SOURCES_DIR_LIST )
printList ( " |-> " "${PROJECT_SOURCES_DIR_LIST}" )
message ( " |->${X}" )
endforeach ( )
message ( " |--> Generated Library Submodules ${ Red } !!!This list order also defines the compilation \
message ( " |--> Generated Library Submodules ${ Red } !!!This list order also defines the compilation \
o r d e r o f s u b m o d u l e s ! ! ! $ { C o l o u r R e s e t } $ { B o l d C y a n } " )
o r d e r o f s u b m o d u l e s ! ! ! $ { C o l o u r R e s e t } $ { B o l d C y a n } " )
foreach ( X IN LISTS GENERATED_LIBRARIES )
printList ( " |-> " "${GENERATED_LIBRARIES}" )
message ( " |->${X}" )
endforeach ( )
message ( "+-------------------------------+" )
message ( "+-------------------------------+" )
message ( "${ColourReset}" )
message ( "${ColourReset}" )
@ -300,29 +258,23 @@ if(OUTPUT_DOXYGEN)
set ( DOXYGEN_OUT ${ CMAKE_CURRENT_BINARY_DIR } /doxyfile )
set ( DOXYGEN_OUT ${ CMAKE_CURRENT_BINARY_DIR } /doxyfile )
message ( "${Green}" )
message ( "${Green}" )
message ( "+-------------------------------+" )
message ( "+-------------------------------+" )
message ( "Generati on DO xygen output")
message ( "Generati ng Do xygen output")
message ( "+-------------------------------+" )
message ( "+-------------------------------+" )
message ( "${ColourReset}" )
message ( "${ColourReset}" )
# r e q u e s t t o c o n f i g u r e t h e f i l e
# r e q u e s t t o c o n f i g u r e t h e f i l e
configure_file ( ${ DOXYGEN_IN } ${ DOXYGEN_OUT } @ONLY )
configure_file ( ${ DOXYGEN_IN } ${ DOXYGEN_OUT } @ONLY )
message ( "Doxygen build started" )
# n o t e t h e o p t i o n A L L w h i c h a l l o w s t o b u i l d t h e d o c s t o g e t h e r w i t h t h e a p p l i c a t i o n
# n o t e t h e o p t i o n A L L w h i c h a l l o w s t o b u i l d t h e d o c s t o g e t h e r w i t h t h e a p p l i c a t i o n
add_custom_target ( doc_doxygen ALL
add_custom_target ( doc_doxygen ALL
C O M M A N D $ { D O X Y G E N _ E X E C U T A B L E } $ { D O X Y G E N _ O U T }
C O M M A N D $ { D O X Y G E N _ E X E C U T A B L E } $ { D O X Y G E N _ O U T }
W O R K I N G _ D I R E C T O R Y $ { D O X Y G E N _ WO R K I N G _ D I R }
W O R K I N G _ D I R E C T O R Y $ { D O X Y G E N _ OU T P U T _ D I R }
C O M M E N T " G e n e r a t i n g A P I d o c u m e n t a t i o n w i t h D o x y g e n "
C O M M E N T " G e n e r a t i n g A P I d o c u m e n t a t i o n w i t h D o x y g e n "
V E R B A T I M )
V E R B A T I M )
message ( "${Green}" )
message ( "+-------------------------------+" )
message ( "Generating Doxygen Done" )
message ( "+-------------------------------+" )
message ( "${ColourReset}" )
else ( DOXYGEN_FOUND )
else ( DOXYGEN_FOUND )
message ( "Doxygen need to be installed to generate the doxygen documentation" )
message ( "Doxygen need to be installed to generate the doxygen documentation" )
endif ( DOXYGEN_FOUND )
endif ( DOXYGEN_FOUND )
endif ( OUTPUT_DOXYGEN )
endif ( OUTPUT_DOXYGEN )
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# C U S T O M C o m m e n t s f r o m d e v .
# C U S T O M C o m m e n t s f r o m d e v .
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #