1 #######################################################################
2 # Find all necessary and optional AVRSIM dependencies
3 #######################################################################
5 # AVRSIM_DEPENDENCIES_DIR can be used to specify a single base
6 # folder where the required dependencies may be found.
7 set(AVRSIM_DEPENDENCIES_DIR "" CACHE PATH "Path to prebuilt AVRSIM dependencies")
9 include(ParseArguments)
10 getenv_path(AVRSIM_DEPENDENCIES_DIR)
11 set(AVRSIM_DEP_SEARCH_PATH
12 ${AVRSIM_DEPENDENCIES_DIR}
13 ${ENV_AVRSIM_DEPENDENCIES_DIR}
14 "${AVRSIM_BINARY_DIR}/Dependencies"
15 "${AVRSIM_SOURCE_DIR}/Dependencies"
16 "${AVRSIM_BINARY_DIR}/../Dependencies"
17 "${AVRSIM_SOURCE_DIR}/../Dependencies"
20 # Set hardcoded path guesses for various platforms
22 set(AVRSIM_DEP_SEARCH_PATH ${AVRSIM_DEP_SEARCH_PATH} /usr/local)
25 # give guesses as hints to the find_package calls
26 set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${AVRSIM_DEP_SEARCH_PATH})
27 set(CMAKE_FRAMEWORK_PATH ${CMAKE_FRAMEWORK_PATH} ${AVRSIM_DEP_SEARCH_PATH})
29 MACRO (generate_extract_options PACKAGENAME)
30 parse_arguments(${PACKAGENAME} "LIBNAMES;INCNAMES;INCSUFFIXES;LIBSUFFIXES" "" ${ARGN})
31 SET( ${PACKAGENAME}_LIBRARY_NAMES ${${PACKAGENAME}_LIBNAMES})
32 SET( ${PACKAGENAME}_INCLUDE_NAMES ${${PACKAGENAME}_INCNAMES})
33 SET( ${PACKAGENAME}_INC_SUFFIXES ${${PACKAGENAME}_INCSUFFIXES})
34 SET( ${PACKAGENAME}_LIB_SUFFIXES ${${PACKAGENAME}_LIBSUFFIXES})
35 ENDMACRO (generate_extract_options)
37 macro(generate_findbundle BUNDLENAME BNDLNAME PACKAGES)
38 if (NOT ${BUNDLENAME}_FOUND)
39 set( ${BUNDLENAME}_LIBRARIES )
40 set( ${BUNDLENAME}_FOUND TRUE )
41 foreach(pkg ${PACKAGES})
42 set(PREFIX "${BUNDLENAME}_${pkg}")
43 set( ${PREFIX}_FIND_QUIETLY FALSE )
44 generate_findpkg(${pkg} "${BNDLNAME};${pkg}"
45 LIBNAMES "${${PREFIX}_LIBRARY_NAMES}"
46 INCNAMES "${${PREFIX}_INCLUDE_NAMES}"
47 INCSUFFIXES "${${PREFIX}_INCLUDE_SUFFIXES};${BNDLNAME}"
48 LIBSUFFIXES "${${PREFIX}_LIBRARY_SUFFIXES};${BNDLNAME}")
51 set( ${BUNDLENAME}_INCLUDE_DIRS ${${BUNDLENAME}_INCLUDE_DIRS} ${${pkg}_INCLUDE_DIRS} )
52 set( ${BUNDLENAME}_LIBRARIES ${${BUNDLENAME}_LIBRARIES} ${${pkg}_LIBRARIES} )
54 set( ${BUNDLENAME}_FOUND FALSE )
58 if( NOT ${BUNDLENAME}_FOUND )
59 set( ${BUNDLENAME}_INCLUDE_DIRS )
60 set( ${BUNDLENAME}_LIBRARIES )
61 endif( NOT ${BUNDLENAME}_FOUND )
63 endif (NOT ${BUNDLENAME}_FOUND)
64 endmacro(generate_findbundle)
66 # Macro to easily generate a Findxxx.cmake script for an external library that conforms to our directory structures and such.
67 # PACKAGENAME is the name of the external package you are writing the find script for.
68 # LIBNAME is the name of the library that has to be searched for and linked with.
69 # INCNAME is the include file that is used to find the include directory for the package.
70 macro (generate_findpkg PACKAGENAME PKGNAME)
71 generate_extract_options(${PACKAGENAME} ${ARGN})
72 findpkg_begin (${PACKAGENAME})
74 getenv_path (${PACKAGENAME}_HOME)
76 # Construct the search path
77 set (${PACKAGENAME}_PREFIX_PATH ${${PACKAGENAME}_HOME} ${ENV_${PACKAGENAME}_HOME})
78 create_search_paths (${PACKAGENAME})
80 create_suffixes (${PACKAGENAME} ${n})
83 # Redo search if prefix path changed
84 clear_if_changed (${PACKAGENAME}_PREFIX_PATH
85 ${PACKAGENAME}_LIBRARY_FWK
86 ${PACKAGENAME}_LIBRARY_REL
87 ${PACKAGENAME}_LIBRARY_DBG
88 ${PACKAGENAME}_INCLUDE_DIR
91 get_debug_names (${PACKAGENAME}_LIBRARY_NAMES)
93 # use_pkgconfig (${PACKAGENAME}_PKGC ${LIBNAME})
95 findpkg_framework (${PACKAGENAME})
97 find_path(${PACKAGENAME}_INCLUDE_DIR NAMES ${${PACKAGENAME}_INCLUDE_NAMES} HINTS ${${PACKAGENAME}_INC_SEARCH_PATH} ${${PACKAGENAME}_PKGC_INCLUDE_DIRS} PATH_SUFFIXES ${${PACKAGENAME}_INC_SUFFIXES})
98 find_library(${PACKAGENAME}_LIBRARY_REL NAMES ${${PACKAGENAME}_LIBRARY_NAMES} HINTS ${${PACKAGENAME}_LIB_SEARCH_PATH} ${${PACKAGENAME}_PKGC_LIBRARY_DIRS} PATH_SUFFIXES ${${PACKAGENAME}_LIB_SUFFIXES} release relwithdebinfo minsizerel)
99 find_library(${PACKAGENAME}_LIBRARY_DBG NAMES ${${PACKAGENAME}_LIBRARY_NAMES_DBG} HINTS ${${PACKAGENAME}_LIB_SEARCH_PATH} ${${PACKAGENAME}_PKGC_LIBRARY_DIRS} PATH_SUFFIXES ${${PACKAGENAME}_LIB_SUFFIXES} debug)
100 make_library_set(${PACKAGENAME}_LIBRARY)
102 findpkg_finish(${PACKAGENAME})
103 endmacro (generate_findpkg)
105 #######################################################################
107 #######################################################################
111 macro_log_feature(XML2_FOUND "Xml2" "xml parsing library" "http://" TRUE "" "")
113 #######################################################################
115 #######################################################################
117 find_package(Doxygen)
118 macro_log_feature(DOXYGEN_FOUND "Doxygen" "Tool for building API documentation" "http://doxygen.org" FALSE "" "")
120 # Display results, terminate if anything required is missing
121 MACRO_DISPLAY_FEATURE_LOG()
123 include_directories( ${XML2_INCLUDE_DIRS} )