summaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
authorGustavo Sverzut Barbieri <barbieri@profusion.mobi>2017-01-23 19:35:51 -0200
committerGustavo Sverzut Barbieri <barbieri@profusion.mobi>2017-01-23 19:35:51 -0200
commitd30059bd661829cfc66c75ca0a7fa98ed3cea706 (patch)
treecec45c624b052b0f29352cd54b261186cfd135fd /cmake
parent3813044ef6f6aabdf8ea4583ea4b70aa0e381623 (diff)
downloadefl-d30059bd661829cfc66c75ca0a7fa98ed3cea706.tar.gz
cmake/eo: simplifies eo handling and generate eolian info in .pc.
added 2 cmake target properties to collect private and public eo files, then that is used by EFL_CREATE_EO_RULES() instead of filtering SOURCES and also EFL_PKG_CONFIG_LIB_WRITE() to know if eolian entries should be generated.
Diffstat (limited to 'cmake')
-rw-r--r--cmake/helpers/EflMacros.cmake34
1 files changed, 30 insertions, 4 deletions
diff --git a/cmake/helpers/EflMacros.cmake b/cmake/helpers/EflMacros.cmake
index 2ba901b2cc..e320fb5f82 100644
--- a/cmake/helpers/EflMacros.cmake
+++ b/cmake/helpers/EflMacros.cmake
@@ -353,6 +353,14 @@ function(EFL_PKG_CONFIG_LIB_WRITE)
set(_libraries)
set(_public_libraries)
+ get_target_property(eo_files_public ${EFL_LIB_CURRENT} EFL_EO_PUBLIC)
+ if(eo_files_public)
+ set(_eoinfo "eoincludedir=\${datarootdir}/eolian/include
+eolian_flags=-I\${pc_sysrootdir}\${eoincludedir}/${EFL_LIB_CURRENT}-${PROJECT_VERSION_MAJOR}")
+ else()
+ set(_eoinfo "")
+ endif()
+
foreach(_e ${${EFL_LIB_CURRENT}_PKG_CONFIG_REQUIRES})
set(_pkg_config_requires "${_pkg_config_requires} ${_e}")
endforeach()
@@ -392,6 +400,7 @@ datarootdir=\${prefix}/share
datadir=\${datarootdir}
pkgdatadir=\${datadir}/${EFL_LIB_CURRENT}
modules=\${libdir}/${EFL_LIB_CURRENT}/modules
+${_eoinfo}
Name: ${EFL_LIB_CURRENT}
Description: ${DESCRIPTION}
@@ -529,6 +538,14 @@ function(_EFL_LIB_PROCESS_TESTS_INTERNAL)
endif()
endfunction()
+define_property(TARGET PROPERTY EFL_EO_PRIVATE
+ BRIEF_DOCS "EFL's .eo/.eot files associated with this target and not installed"
+ FULL_DOCS "The list of all .eo or .eot files this target uses but doesn't install")
+
+define_property(TARGET PROPERTY EFL_EO_PUBLIC
+ BRIEF_DOCS "EFL's .eo/.eot files associated with this target and installed"
+ FULL_DOCS "The list of all .eo or .eot files this target uses and installs")
+
# EFL_LIB(Name)
#
# adds a library ${Name} automatically setting object/target
@@ -642,6 +659,8 @@ function(EFL_LIB _target)
${OBJECT_DEPENDS})
EFL_FILES_TO_ABSOLUTE(_public_eo_files ${EFL_LIB_SOURCE_DIR} ${EFL_LIB_BINARY_DIR}
${PUBLIC_EO_FILES})
+ EFL_FILES_TO_ABSOLUTE(_eo_files ${EFL_LIB_SOURCE_DIR} ${EFL_LIB_BINARY_DIR}
+ ${EO_FILES})
foreach(public_eo_file ${PUBLIC_EO_FILES})
list(APPEND _headers ${EFL_LIB_BINARY_DIR}/${public_eo_file}.h)
@@ -656,6 +675,8 @@ function(EFL_LIB _target)
FRAMEWORK TRUE
PUBLIC_HEADER "${_headers}"
OBJECT_DEPENDS "${_obj_deps}"
+ EFL_EO_PRIVATE "${_eo_files}"
+ EFL_EO_PUBLIC "${_public_eo_files}"
COMPILE_FLAGS -DPACKAGE_DATA_DIR=\\"${CMAKE_INSTALL_FULL_DATADIR}/${_target}/\\")
if(DEPENDENCIES)
@@ -709,6 +730,7 @@ function(EFL_LIB _target)
unset(_headers)
unset(_obj_deps)
unset(_public_eo_files)
+ unset(_eo_files)
unset(INCLUDE_DIRECTORIES)
unset(SYSTEM_INCLUDE_DIRECTORIES)
unset(OUTPUT_NAME)
@@ -1070,9 +1092,13 @@ endmacro()
# Will use the source of the given target to create rules for creating
# the .eo.c and .eo.h files. The INCLUDE_DIRECTORIES of the target will be used
function(EFL_CREATE_EO_RULES target generation_dir)
- get_target_property(source_files ${target} SOURCES)
- get_target_property(link_libraries ${target} LINK_LIBRARIES)
+ get_target_property(eo_files_private ${target} EFL_EO_PRIVATE)
+ get_target_property(eo_files_public ${target} EFL_EO_PUBLIC)
+ if(NOT eo_files_private AND NOT eo_files_public)
+ return()
+ endif()
+ get_target_property(link_libraries ${target} LINK_LIBRARIES)
set(all_libraries ${target} ${link_libraries})
set(include_cmd "")
foreach(link_target ${all_libraries})
@@ -1080,7 +1106,7 @@ function(EFL_CREATE_EO_RULES target generation_dir)
endforeach()
set(all_eo_gen_files "")
- foreach(file ${source_files})
+ foreach(file ${eo_files_private} ${eo_files_public})
get_filename_component(ext ${file} EXT)
get_filename_component(filename ${file} NAME)
@@ -1089,7 +1115,7 @@ function(EFL_CREATE_EO_RULES target generation_dir)
elseif(${ext} STREQUAL ".eot")
set(file_eo_gen_files ${generation_dir}/${filename}.h)
else()
- set(file_eo_gen_files "")
+ message(FATAL_ERROR "Unsupported eo file type: ${file}")
endif()
#add the custom rule