diff --git a/CMakeLists.txt b/CMakeLists.txt index b9cebbec7f..b3fe86b0c1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -31,6 +31,12 @@ include_directories( include(${CMAKE_SOURCE_DIR}/cmake/config/common.cmake) +EFL_SUPPORT_LIB(lz4) +EFL_SUPPORT_LIB(draw) +EFL_SUPPORT_LIB(freetype) +EFL_SUPPORT_LIB(rg_etc) +EFL_SUPPORT_LIB(triangulator) + EFL_LIB(eina) EFL_LIB(eolian) EFL_LIB(eo) diff --git a/cmake/helpers/EflMacros.cmake b/cmake/helpers/EflMacros.cmake index 33811ba17b..a23c1e7091 100644 --- a/cmake/helpers/EflMacros.cmake +++ b/cmake/helpers/EflMacros.cmake @@ -783,6 +783,126 @@ 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_SUPPORT_LIB(Name) +# +# adds a support library as src/static_libs/${Name}, this will +# generate a static library that can be later referred by other +# targets using support-${Name} +# +# This is simiar to EFL_LIB(), however defaults to STATIC libraries +# and if set to SHARED will install to +# lib/efl/support/v-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} +# and it shouldn't set any PUBLIC_HEADERS or PKG_CONFIG_REQUIRES. +function(EFL_SUPPORT_LIB _target) + set(EFL_LIB_CURRENT ${_target}) + set(EFL_LIB_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src/static_libs/${_target}) + set(EFL_LIB_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/src/static_libs/${_target}) + + set(DESCRIPTION) + set(PKG_CONFIG_REQUIRES) + set(PKG_CONFIG_REQUIRES_PRIVATE) + set(INCLUDE_DIRECTORIES) + set(SYSTEM_INCLUDE_DIRECTORIES) + set(OUTPUT_NAME) + set(SOURCES) + set(PUBLIC_HEADERS) + set(VERSION) + set(SOVERSION) + set(LIBRARY_TYPE STATIC) + set(OBJECT_DEPENDS) + set(DEPENDENCIES) + set(LIBRARIES) + set(PUBLIC_LIBRARIES) + set(DEFINITIONS) + set(COMPILE_FLAGS) + set(LINK_FLAGS) + + include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/config/${_target}.cmake OPTIONAL) + include(${EFL_LIB_SOURCE_DIR}/CMakeLists.txt) + + if(NOT SOURCES) + message(WARNING "${EFL_LIB_SOURCE_DIR}/CMakeLists.txt defines no SOURCES") + return() + endif() + if(PUBLIC_HEADERS) + message(WARNING "${EFL_LIB_SOURCE_DIR}/CMakeLists.txt should not define PUBLIC_HEADERS, it's not to be installed.") + endif() + if(PKG_CONFIG_REQUIRES) + message(WARNING "${EFL_LIB_SOURCE_DIR}/CMakeLists.txt should not define PKG_CONFIG_REQUIRES. Use PKG_CONFIG_REQUIRES_PRIVATE instead") + endif() + + EFL_FILES_TO_ABSOLUTE(_sources ${EFL_LIB_SOURCE_DIR} ${EFL_LIB_BINARY_DIR} + ${SOURCES}) + EFL_FILES_TO_ABSOLUTE(_obj_deps ${EFL_LIB_SOURCE_DIR} ${EFL_LIB_BINARY_DIR} + ${OBJECT_DEPENDS}) + + EFL_PKG_CONFIG_EVAL(${_target} "${PKG_CONFIG_REQUIRES_PRIVATE}" "${PKG_CONFIG_REQUIRES}") + + set(__link_flags ${${_target}_PKG_CONFIG_REQUIRES_PRIVATE_LDFLAGS} ${${_target}_PKG_CONFIG_REQUIRES_LDFLAGS} ${LINK_FLAGS}) + set(__compile_flags ${${_target}_PKG_CONFIG_REQUIRES_PRIVATE_CFLAGS} ${${_target}_PKG_CONFIG_REQUIRES_CFLAGS} ${COMPILE_FLAGS}) + + set(_link_flags) + foreach(_l ${__link_flags}) + set(_link_flags "${_link_flags} ${_l}") + endforeach() + + set(_compile_flags) + foreach(_c ${__compile_flags}) + set(_compile_flags "${_compile_flags} ${_c}") + endforeach() + + add_library(support-${_target} ${LIBRARY_TYPE} ${_sources} ${_headers}) + set_target_properties(support-${_target} PROPERTIES + OBJECT_DEPENDS "${_obj_deps}" + LINK_FLAGS "${_link_flags}" + COMPILE_FLAGS "${_compile_flags}") + + if(DEPENDENCIES) + add_dependencies(support-${_target} ${DEPENDENCIES}) + endif() + + if(LIBRARIES) + target_link_libraries(support-${_target} LINK_PRIVATE ${LIBRARIES}) + endif() + if(PUBLIC_LIBRARIES) + target_link_libraries(support-${_target} PUBLIC ${PUBLIC_LIBRARIES}) + endif() + + target_include_directories(support-${_target} PUBLIC + ${INCLUDE_DIRECTORIES} + ${EFL_LIB_SOURCE_DIR} + ${EFL_LIB_BINARY_DIR} + ) + if(SYSTEM_INCLUDE_DIRECTORIES) + target_include_directories(support-${_target} SYSTEM PUBLIC ${SYSTEM_INCLUDE_DIRECTORIES}) + endif() + + if(DEFINITIONS) + target_compile_definitions(support-${_target} PRIVATE ${DEFINITIONS}) + endif() + + if(OUTPUT_NAME) + set_target_properties(support-${_target} PROPERTIES OUTPUT_NAME ${OUTPUT_NAME}) + endif() + + if(VERSION AND SOVERSION) + set_target_properties(support-${_target} PROPERTIES + VERSION ${VERSION} + SOVERSION ${SOVERSION}) + endif() + + if(LIBRARY_TYPE STREQUAL "SHARED") + install(TARGETS support-${_target} + RUNTIME DESTINATION lib/efl/support/v-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} + LIBRARY DESTINATION lib/efl/support/v-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}) + else() + set_target_properties(support-${_target} PROPERTIES + POSITION_INDEPENDENT_CODE TRUE) + endif() + + include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/post/${_target}.cmake OPTIONAL) +endfunction() + # EFL_LIB(Name) # # adds a library ${Name} automatically setting object/target diff --git a/src/Makefile_Ector.am b/src/Makefile_Ector.am index 19053be5ba..df6e6d2532 100644 --- a/src/Makefile_Ector.am +++ b/src/Makefile_Ector.am @@ -155,6 +155,7 @@ lib/ector/gl/shader/ector_gl_shaders.x: $(ECTOR_GL_SHADERS_GEN) @sh $(srcdir)/lib/ector/gl/shader/gen_shaders.sh lib_ector_libector_la_CPPFLAGS = -I$(top_builddir)/src/lib/efl \ +-I$(top_builddir)/src/lib \ -I$(top_builddir)/src/lib/ector \ -I$(top_builddir)/src/lib/ector/cairo \ -I$(top_builddir)/src/lib/ector/software \ diff --git a/src/Makefile_Evas.am b/src/Makefile_Evas.am index 620f6a0a48..2f58d5f518 100644 --- a/src/Makefile_Evas.am +++ b/src/Makefile_Evas.am @@ -407,6 +407,7 @@ lib_evas_libevas_la_CPPFLAGS = -I$(top_builddir)/src/lib/efl \ -I$(top_srcdir)/src/lib/evas/include \ -I$(top_srcdir)/src/static_libs/libunibreak \ -I$(top_srcdir)/src/static_libs/draw \ +-I$(top_builddir)/src/lib \ -I$(top_builddir)/src/lib/evas/canvas \ -I$(top_builddir)/src/lib/evas/include \ -I$(top_builddir)/src/modules/evas/engines/software_generic \ diff --git a/src/lib/ector/CMakeLists.txt b/src/lib/ector/CMakeLists.txt index 133909192b..71daae7705 100644 --- a/src/lib/ector/CMakeLists.txt +++ b/src/lib/ector/CMakeLists.txt @@ -5,6 +5,10 @@ set(LIBRARIES efl emile m + support-draw + support-freetype + support-rg_etc + support-triangulator ) set(PUBLIC_LIBRARIES @@ -99,31 +103,6 @@ set(SOURCES software/ector_software_gradient.c software/ector_software_rasterizer.c software/ector_software_surface.c - - ${CMAKE_SOURCE_DIR}/src/static_libs/draw/draw_main.c - ${CMAKE_SOURCE_DIR}/src/static_libs/draw/draw_main_neon.c - ${CMAKE_SOURCE_DIR}/src/static_libs/draw/draw_main_sse2.c - - ${CMAKE_SOURCE_DIR}/src/static_libs/freetype/sw_ft_math.c - ${CMAKE_SOURCE_DIR}/src/static_libs/freetype/sw_ft_raster.c - ${CMAKE_SOURCE_DIR}/src/static_libs/freetype/sw_ft_stroker.c - - ${CMAKE_SOURCE_DIR}/src/static_libs/rg_etc/etc2_encoder.c - ${CMAKE_SOURCE_DIR}/src/static_libs/rg_etc/rg_etc1.c - ${CMAKE_SOURCE_DIR}/src/static_libs/rg_etc/rg_etc1.h - ${CMAKE_SOURCE_DIR}/src/static_libs/rg_etc/rg_etc2.c - - ${CMAKE_SOURCE_DIR}/src/static_libs/triangulator/triangulator_simple.c - ${CMAKE_SOURCE_DIR}/src/static_libs/triangulator/triangulator_simple.h - ${CMAKE_SOURCE_DIR}/src/static_libs/triangulator/triangulator_stroker.c - ${CMAKE_SOURCE_DIR}/src/static_libs/triangulator/triangulator_stroker.h -) - -set(INCLUDE_DIRECTORIES - ${CMAKE_SOURCE_DIR}/src/static_libs/draw - ${CMAKE_SOURCE_DIR}/src/static_libs/freetype - ${CMAKE_SOURCE_DIR}/src/static_libs/rg_etc - ${CMAKE_SOURCE_DIR}/src/static_libs/triangulator ) add_custom_command( diff --git a/src/lib/eet/CMakeLists.txt b/src/lib/eet/CMakeLists.txt index b0aaffd190..813f29340e 100644 --- a/src/lib/eet/CMakeLists.txt +++ b/src/lib/eet/CMakeLists.txt @@ -12,6 +12,7 @@ set(PUBLIC_LIBRARIES set(LIBRARIES m + support-rg_etc ) set(PUBLIC_HEADERS @@ -29,14 +30,6 @@ set(SOURCES eet_node.c Eet_private.h eet_utils.c - ${CMAKE_SOURCE_DIR}/src/static_libs/rg_etc/rg_etc1.c - ${CMAKE_SOURCE_DIR}/src/static_libs/rg_etc/rg_etc2.c - ${CMAKE_SOURCE_DIR}/src/static_libs/rg_etc/etc2_encoder.c - ${CMAKE_SOURCE_DIR}/src/static_libs/rg_etc/rg_etc1.h -) - -set(INCLUDE_DIRECTORIES - ${CMAKE_SOURCE_DIR}/src/static_libs/rg_etc ) if(WITH_CRYPTO STREQUAL "gnutls") diff --git a/src/lib/emile/CMakeLists.txt b/src/lib/emile/CMakeLists.txt index 559f7355b6..d6c315521a 100644 --- a/src/lib/emile/CMakeLists.txt +++ b/src/lib/emile/CMakeLists.txt @@ -8,6 +8,7 @@ set(PKG_CONFIG_REQUIRES_PRIVATE set(LIBRARIES eina m + support-rg_etc ) set(PUBLIC_HEADERS @@ -24,14 +25,6 @@ set(SOURCES emile_image.c emile_main.c emile_private.h - ${CMAKE_SOURCE_DIR}/src/static_libs/rg_etc/etc2_encoder.c - ${CMAKE_SOURCE_DIR}/src/static_libs/rg_etc/rg_etc1.c - ${CMAKE_SOURCE_DIR}/src/static_libs/rg_etc/rg_etc1.h - ${CMAKE_SOURCE_DIR}/src/static_libs/rg_etc/rg_etc2.c -) - -set(INCLUDE_DIRECTORIES - ${CMAKE_SOURCE_DIR}/src/static_libs/rg_etc ) if(WITH_CRYPTO STREQUAL "gnutls") @@ -47,11 +40,5 @@ endif() if(WITH_LZ4 STREQUAL "system") list(APPEND PKG_CONFIG_REQUIRES_PRIVATE liblz4) else() - list(APPEND SOURCES - ${CMAKE_SOURCE_DIR}/src/static_libs/lz4/lz4.c - ${CMAKE_SOURCE_DIR}/src/static_libs/lz4/lz4.h - ${CMAKE_SOURCE_DIR}/src/static_libs/lz4/lz4hc.c - ${CMAKE_SOURCE_DIR}/src/static_libs/lz4/lz4hc.h - ) - list(APPEND INCLUDE_DIRECTORIES ${CMAKE_SOURCE_DIR}/src/static_libs/lz4) + list(APPEND LIBRARIES support-lz4) endif() diff --git a/src/static_libs/draw/CMakeLists.txt b/src/static_libs/draw/CMakeLists.txt new file mode 100644 index 0000000000..b2ad0041dc --- /dev/null +++ b/src/static_libs/draw/CMakeLists.txt @@ -0,0 +1,17 @@ +set(LIBRARIES + eina +) + +set(SOURCES + draw_main.c + draw_main_neon.c + draw_main_sse2.c +) + +set(INCLUDE_DIRECTORIES + ${CMAKE_BINARY_DIR}/src/lib +) + +set(DEPENDENCIES + efl-eo +) diff --git a/src/static_libs/draw/draw.h b/src/static_libs/draw/draw.h index b63b73d2e0..9f4089aba0 100644 --- a/src/static_libs/draw/draw.h +++ b/src/static_libs/draw/draw.h @@ -5,7 +5,8 @@ # include #endif -#include +#include +#include "efl/interfaces/efl_gfx_types.eot.h" /* FIXME: naming convention */ typedef void (*RGBA_Comp_Func) (uint32_t *dest, const uint32_t *src, int length, uint32_t mul_col, uint32_t const_alpha); diff --git a/src/static_libs/draw/draw_main.c b/src/static_libs/draw/draw_main.c index 40b32e99da..8577beacce 100644 --- a/src/static_libs/draw/draw_main.c +++ b/src/static_libs/draw/draw_main.c @@ -2,7 +2,6 @@ #include "config.h" #endif -#include #include "draw_private.h" int _draw_log_dom = -1; diff --git a/src/static_libs/draw/draw_main_sse2.c b/src/static_libs/draw/draw_main_sse2.c index e8f934055b..58ed7a3c12 100644 --- a/src/static_libs/draw/draw_main_sse2.c +++ b/src/static_libs/draw/draw_main_sse2.c @@ -2,7 +2,6 @@ #include "config.h" #endif -#include #include "draw_private.h" #ifdef BUILD_SSE3 diff --git a/src/static_libs/freetype/CMakeLists.txt b/src/static_libs/freetype/CMakeLists.txt new file mode 100644 index 0000000000..5f669df285 --- /dev/null +++ b/src/static_libs/freetype/CMakeLists.txt @@ -0,0 +1,5 @@ +set(SOURCES + sw_ft_math.c + sw_ft_raster.c + sw_ft_stroker.c +) diff --git a/src/static_libs/lz4/CMakeLists.txt b/src/static_libs/lz4/CMakeLists.txt new file mode 100644 index 0000000000..29bdb2032f --- /dev/null +++ b/src/static_libs/lz4/CMakeLists.txt @@ -0,0 +1,6 @@ +set(SOURCES + lz4.c + lz4.h + lz4hc.c + lz4hc.h +) diff --git a/src/static_libs/rg_etc/CMakeLists.txt b/src/static_libs/rg_etc/CMakeLists.txt new file mode 100644 index 0000000000..2511bc1837 --- /dev/null +++ b/src/static_libs/rg_etc/CMakeLists.txt @@ -0,0 +1,10 @@ +set(LIBRARIES + eina +) + +set(SOURCES + etc2_encoder.c + rg_etc1.c + rg_etc1.h + rg_etc2.c +) diff --git a/src/static_libs/triangulator/CMakeLists.txt b/src/static_libs/triangulator/CMakeLists.txt new file mode 100644 index 0000000000..78185589df --- /dev/null +++ b/src/static_libs/triangulator/CMakeLists.txt @@ -0,0 +1,18 @@ +set(LIBRARIES + eina +) + +set(SOURCES + triangulator_simple.c + triangulator_simple.h + triangulator_stroker.c + triangulator_stroker.h +) + +set(INCLUDE_DIRECTORIES + ${CMAKE_BINARY_DIR}/src/lib +) + +set(DEPENDENCIES + efl-eo +) diff --git a/src/static_libs/triangulator/triangulator_simple.h b/src/static_libs/triangulator/triangulator_simple.h index e87acc6e40..e0c41f6255 100644 --- a/src/static_libs/triangulator/triangulator_simple.h +++ b/src/static_libs/triangulator/triangulator_simple.h @@ -1,7 +1,9 @@ #ifndef TRIANGULATOR_SIMPLE_H_ #define TRIANGULATOR_SIMPLE_H_ -#include +#include +#include "efl/interfaces/efl_gfx_types.eot.h" +typedef Efl_Gfx_Path_Command_Type Efl_Gfx_Path_Command; typedef struct _Triangulator_Simple Triangulator_Simple; struct _Triangulator_Simple @@ -40,4 +42,4 @@ void triangulator_simple_free(Triangulator_Simple *st); */ void triangulator_simple_process(Triangulator_Simple *st, const Efl_Gfx_Path_Command *cmds, const double *pts, Eina_Bool convex); -#endif // #endif // TRIANGULATOR_SIMPLE_H_ \ No newline at end of file +#endif // #endif // TRIANGULATOR_SIMPLE_H_ diff --git a/src/static_libs/triangulator/triangulator_stroker.h b/src/static_libs/triangulator/triangulator_stroker.h index 5cc7805638..2dee4290e4 100644 --- a/src/static_libs/triangulator/triangulator_stroker.h +++ b/src/static_libs/triangulator/triangulator_stroker.h @@ -1,7 +1,9 @@ #ifndef TRIANGULATOR_STROKER_H_ #define TRIANGULATOR_STROKER_H_ -#include +#include +#include "efl/interfaces/efl_gfx_types.eot.h" +typedef Efl_Gfx_Path_Command_Type Efl_Gfx_Path_Command; typedef struct _Triangulator_Stroker Triangulator_Stroker; struct _Triangulator_Stroker