Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ set(LIBCEC_VERSION_PATCH 0)

# cec-client
add_subdirectory(src/cec-client)
add_dependencies(cec-client cec)
add_dependencies(cec-client cec-shared)

# cecc-client
add_subdirectory(src/cecc-client)
add_dependencies(cecc-client cec)
add_dependencies(cecc-client cec-shared)

# pyCecClient
add_subdirectory(src/pyCecClient)
Expand Down
2 changes: 1 addition & 1 deletion include/cecc.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ extern DECLSPEC void libcec_close(libcec_connection_t connection);
extern DECLSPEC void libcec_clear_configuration(CEC_NAMESPACE libcec_configuration* configuration);
#if CEC_LIB_VERSION_MAJOR >= 5
extern DECLSPEC int libcec_set_callbacks(libcec_connection_t connection, CEC_NAMESPACE ICECCallbacks* callbacks, void* cbParam);
extern DECLSPEC int libcec_disabled_callbacks(libcec_connection_t connection);
extern DECLSPEC int libcec_disable_callbacks(libcec_connection_t connection);
#else
extern DECLSPEC int libcec_enable_callbacks(libcec_connection_t connection, void* cbParam, CEC_NAMESPACE ICECCallbacks* callbacks);
#endif
Expand Down
24 changes: 24 additions & 0 deletions include/ceccloader.h
Original file line number Diff line number Diff line change
Expand Up @@ -63,11 +63,17 @@ static void* libcecc_resolve(void* lib, const char* name);
typedef struct {
libcec_connection_t connection;
libcecc_lib_instance_t lib_instance;
libcec_connection_t (CDECL *initialise)(CEC_NAMESPACE libcec_configuration* configuration);
void (CDECL *destroy)(libcec_connection_t connection);
int (CDECL *open)(libcec_connection_t connection, const char* strPort, uint32_t iTimeout);
void (CDECL *close)(libcec_connection_t connection);
void (CDECL *clear_configuration)(CEC_NAMESPACE libcec_configuration* configuration);
#if CEC_LIB_VERSION_MAJOR >= 5
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these ifdefs can go really because there's no good reason to keep the latest cecloader.h compatible with older versions of libCEC. those builds can use the previous revisions of cecloader.h. I'll merge it anyway now, but I'll remove the ifdefs later unless someone can provide a good reason for keeping these.

int (CDECL *set_callbacks)(libcec_connection_t connection, CEC_NAMESPACE ICECCallbacks* callbacks, void* cbParam);
int (CDECL *disable_callbacks)(libcec_connection_t connection);
#else
int (CDECL *enable_callbacks)(libcec_connection_t connection, void* cbParam, CEC_NAMESPACE ICECCallbacks* callbacks);
#endif
int8_t (CDECL *find_adapters)(libcec_connection_t connection, CEC_NAMESPACE cec_adapter* deviceList, uint8_t iBufSize, const char* strDevicePath);
int (CDECL *ping_adapters)(libcec_connection_t connection);
int (CDECL *start_bootloader)(libcec_connection_t connection);
Expand Down Expand Up @@ -97,16 +103,22 @@ typedef struct {
int (CDECL *set_hdmi_port)(libcec_connection_t connection, CEC_NAMESPACE cec_logical_address baseDevice, uint8_t iPort);
int (CDECL *volume_up)(libcec_connection_t connection, int bSendRelease);
int (CDECL *volume_down)(libcec_connection_t connection, int bSendRelease);
#if CEC_LIB_VERSION_MAJOR >= 5
int (CDECL *mute_audio)(libcec_connection_t connection, int bSendRelease);
#endif
int (CDECL *send_keypress)(libcec_connection_t connection, CEC_NAMESPACE cec_logical_address iDestination, CEC_NAMESPACE cec_user_control_code key, int bWait);
int (CDECL *send_key_release)(libcec_connection_t connection, CEC_NAMESPACE cec_logical_address iDestination, int bWait);
int (CDECL *get_device_osd_name)(libcec_connection_t connection, CEC_NAMESPACE cec_logical_address iAddress, CEC_NAMESPACE cec_osd_name name);
int (CDECL *set_stream_path_logical)(libcec_connection_t connection, CEC_NAMESPACE cec_logical_address iAddress);
int (CDECL *set_stream_path_physical)(libcec_connection_t connection, uint16_t iPhysicalAddress);
CEC_NAMESPACE cec_logical_addresses (CDECL *get_logical_addresses)(libcec_connection_t connection);
int (CDECL *get_current_configuration)(libcec_connection_t connection, CEC_NAMESPACE libcec_configuration* configuration);
#if CEC_LIB_VERSION_MAJOR >= 5
int (CDECL *can_save_configuration)(libcec_connection_t connection);
#else
int (CDECL *can_persist_configuration)(libcec_connection_t connection);
int (CDECL *persist_configuration)(libcec_connection_t connection, CEC_NAMESPACE libcec_configuration* configuration);
#endif
int (CDECL *set_configuration)(libcec_connection_t connection, const CEC_NAMESPACE libcec_configuration* configuration);
void (CDECL *rescan_devices)(libcec_connection_t connection);
int (CDECL *is_libcec_active_source)(libcec_connection_t connection);
Expand Down Expand Up @@ -140,11 +152,17 @@ static int libcecc_resolve_all(void* lib, libcec_interface_t* iface)
if (!lib || !iface)
return -1;

_libcecc_resolve(lib, iface->initialise, "libcec_initialise", libcec_connection_t(CDECL *)(CEC_NAMESPACE libcec_configuration*));
_libcecc_resolve(lib, iface->destroy, "libcec_destroy", void(CDECL *)(libcec_connection_t));
_libcecc_resolve(lib, iface->open, "libcec_open", int(CDECL *)(libcec_connection_t, const char*, uint32_t));
_libcecc_resolve(lib, iface->close, "libcec_close", void(CDECL *)(libcec_connection_t));
_libcecc_resolve(lib, iface->clear_configuration, "libcec_clear_configuration", void(CDECL *)(CEC_NAMESPACE libcec_configuration*));
#if CEC_LIB_VERSION_MAJOR >= 5
_libcecc_resolve(lib, iface->set_callbacks, "libcec_set_callbacks", int(CDECL *)(libcec_connection_t, CEC_NAMESPACE ICECCallbacks*, void*));
_libcecc_resolve(lib, iface->disable_callbacks, "libcec_disable_callbacks", int(CDECL *)(libcec_connection_t));
#else
_libcecc_resolve(lib, iface->enable_callbacks, "libcec_enable_callbacks", int(CDECL *)(libcec_connection_t, void*, CEC_NAMESPACE ICECCallbacks*));
#endif
_libcecc_resolve(lib, iface->find_adapters, "libcec_find_adapters", int8_t(CDECL *)(libcec_connection_t, CEC_NAMESPACE cec_adapter*, uint8_t, const char*));
_libcecc_resolve(lib, iface->ping_adapters, "libcec_ping_adapters", int(CDECL *)(libcec_connection_t));
_libcecc_resolve(lib, iface->start_bootloader, "libcec_start_bootloader", int(CDECL *)(libcec_connection_t));
Expand Down Expand Up @@ -174,16 +192,22 @@ static int libcecc_resolve_all(void* lib, libcec_interface_t* iface)
_libcecc_resolve(lib, iface->set_hdmi_port, "libcec_set_hdmi_port", int(CDECL *)(libcec_connection_t, CEC_NAMESPACE cec_logical_address, uint8_t));
_libcecc_resolve(lib, iface->volume_up, "libcec_volume_up", int(CDECL *)(libcec_connection_t, int));
_libcecc_resolve(lib, iface->volume_down, "libcec_volume_down", int(CDECL *)(libcec_connection_t, int));
#if CEC_LIB_VERSION_MAJOR >= 5
_libcecc_resolve(lib, iface->mute_audio, "libcec_mute_audio", int(CDECL *)(libcec_connection_t, int));
#endif
_libcecc_resolve(lib, iface->send_keypress, "libcec_send_keypress", int(CDECL *)(libcec_connection_t, CEC_NAMESPACE cec_logical_address, CEC_NAMESPACE cec_user_control_code, int));
_libcecc_resolve(lib, iface->send_key_release, "libcec_send_key_release", int(CDECL *)(libcec_connection_t, CEC_NAMESPACE cec_logical_address, int));
_libcecc_resolve(lib, iface->get_device_osd_name, "libcec_get_device_osd_name", int(CDECL *)(libcec_connection_t, CEC_NAMESPACE cec_logical_address, CEC_NAMESPACE cec_osd_name));
_libcecc_resolve(lib, iface->set_stream_path_logical, "libcec_set_stream_path_logical", int(CDECL *)(libcec_connection_t, CEC_NAMESPACE cec_logical_address));
_libcecc_resolve(lib, iface->set_stream_path_physical, "libcec_set_stream_path_physical", int(CDECL *)(libcec_connection_t, uint16_t));
_libcecc_resolve(lib, iface->get_logical_addresses, "libcec_get_logical_addresses", CEC_NAMESPACE cec_logical_addresses(CDECL *)(libcec_connection_t));
_libcecc_resolve(lib, iface->get_current_configuration, "libcec_get_current_configuration", int(CDECL *)(libcec_connection_t, CEC_NAMESPACE libcec_configuration*));
#if CEC_LIB_VERSION_MAJOR >= 5
_libcecc_resolve(lib, iface->can_save_configuration, "libcec_can_save_configuration", int(CDECL *)(libcec_connection_t));
#else
_libcecc_resolve(lib, iface->can_persist_configuration, "libcec_can_persist_configuration", int(CDECL *)(libcec_connection_t));
_libcecc_resolve(lib, iface->persist_configuration, "libcec_persist_configuration", int(CDECL *)(libcec_connection_t, CEC_NAMESPACE libcec_configuration*));
#endif
_libcecc_resolve(lib, iface->set_configuration, "libcec_set_configuration", int(CDECL *)(libcec_connection_t, const CEC_NAMESPACE libcec_configuration*));
_libcecc_resolve(lib, iface->rescan_devices, "libcec_rescan_devices", void(CDECL *)(libcec_connection_t));
_libcecc_resolve(lib, iface->is_libcec_active_source, "libcec_is_libcec_active_source", int(CDECL *)(libcec_connection_t));
Expand Down
2 changes: 1 addition & 1 deletion src/cec-client/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -85,5 +85,5 @@ if (WIN32)
DESTINATION .)
else()
install(TARGETS cec-client
DESTINATION bin)
DESTINATION ${CMAKE_INSTALL_BINDIR})
endif()
2 changes: 1 addition & 1 deletion src/cecc-client/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -55,5 +55,5 @@ if (WIN32)
DESTINATION .)
else()
install(TARGETS cecc-client
DESTINATION bin)
DESTINATION ${CMAKE_INSTALL_BINDIR})
endif()
20 changes: 14 additions & 6 deletions src/libcec/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -186,18 +186,26 @@ install(FILES ${PROJECT_SOURCE_DIR}/../../include/cec.h
${PROJECT_SOURCE_DIR}/../../include/ceccloader.h
${PROJECT_SOURCE_DIR}/../../include/cectypes.h
${PROJECT_SOURCE_DIR}/../../include/version.h
DESTINATION include/libcec)
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/libcec)

# external dependencies
include(cmake/LinkPlatformSupport.cmake)

# libCEC shared target
add_library(cec SHARED ${CEC_SOURCES})
install(TARGETS cec
set(libsrc ${CEC_SOURCES})
add_library(libobj OBJECT ${libsrc})
set_property(TARGET libobj PROPERTY POSITION_INDEPENDENT_CODE 1)
add_library(cec-shared SHARED $<TARGET_OBJECTS:libobj>)
add_library(cec-static STATIC $<TARGET_OBJECTS:libobj>)
install(TARGETS cec-shared cec-static
DESTINATION ${LIB_DESTINATION})
set_target_properties(cec PROPERTIES VERSION ${LIBCEC_VERSION_MAJOR}.${LIBCEC_VERSION_MINOR}.${LIBCEC_VERSION_PATCH}
SOVERSION ${LIBCEC_VERSION_MAJOR})
target_link_libraries(cec ${cec_depends})
set_target_properties(cec-shared PROPERTIES VERSION ${LIBCEC_VERSION_MAJOR}.${LIBCEC_VERSION_MINOR}.${LIBCEC_VERSION_PATCH}
SOVERSION ${LIBCEC_VERSION_MAJOR}
OUTPUT_NAME cec)
set_target_properties(cec-static PROPERTIES VERSION ${LIBCEC_VERSION_MAJOR}.${LIBCEC_VERSION_MINOR}.${LIBCEC_VERSION_PATCH}
OUTPUT_NAME cec)
target_link_libraries(cec-shared ${cec_depends})
target_link_libraries(cec-static ${cec_depends})

if(WIN32)
if (MSVC)
Expand Down
12 changes: 6 additions & 6 deletions src/libcec/cmake/CheckPlatformSupport.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -325,7 +325,7 @@ else()
SET_SOURCE_FILES_PROPERTIES(libcec.i PROPERTIES CPLUSPLUS ON)
set_property(SOURCE libcec.i PROPERTY SWIG_MODULE_NAME cec)
SWIG_ADD_LIBRARY(pycec LANGUAGE python TYPE MODULE SOURCES libcec.i)
SWIG_LINK_LIBRARIES(${SWIG_MODULE_pycec_REAL_NAME} cec ${PYTHON_LIBRARIES})
SWIG_LINK_LIBRARIES(${SWIG_MODULE_pycec_REAL_NAME} cec-shared ${PYTHON_LIBRARIES})
if (NOT WIN32)
target_compile_options(pycec PUBLIC "-Wno-unused-parameter")
endif()
Expand Down Expand Up @@ -363,16 +363,16 @@ else()

if (${PYTHON_MAJOR_VERSION} EQUAL 2)
install(TARGETS ${SWIG_MODULE_pycec_REAL_NAME}
DESTINATION lib/python${PYTHON_VERSION}/${PYTHON_PKG_DIR}/${PYTHON_LIB_INSTALL_PATH}/cec)
DESTINATION ${CMAKE_INSTALL_LIBDIR}/python${PYTHON_VERSION}/${PYTHON_PKG_DIR}/${PYTHON_LIB_INSTALL_PATH}/cec)
install(FILES ${CMAKE_BINARY_DIR}/src/libcec/cec.py
DESTINATION lib/python${PYTHON_VERSION}/${PYTHON_PKG_DIR})
DESTINATION ${CMAKE_INSTALL_LIBDIR}/python${PYTHON_VERSION}/${PYTHON_PKG_DIR})
install(FILES ${CMAKE_SOURCE_DIR}/src/libcec/cmake/__init__.py
DESTINATION lib/python${PYTHON_VERSION}/${PYTHON_PKG_DIR}/cec)
DESTINATION ${CMAKE_INSTALL_LIBDIR}/python${PYTHON_VERSION}/${PYTHON_PKG_DIR}/cec)
else()
install(TARGETS ${SWIG_MODULE_pycec_REAL_NAME}
DESTINATION lib/python${PYTHON_VERSION}/${PYTHON_PKG_DIR}/${PYTHON_LIB_INSTALL_PATH})
DESTINATION ${CMAKE_INSTALL_LIBDIR}/python${PYTHON_VERSION}/${PYTHON_PKG_DIR}/${PYTHON_LIB_INSTALL_PATH})
install(FILES ${CMAKE_BINARY_DIR}/src/libcec/cec.py
DESTINATION lib/python${PYTHON_VERSION}/${PYTHON_PKG_DIR})
DESTINATION ${CMAKE_INSTALL_LIBDIR}/python${PYTHON_VERSION}/${PYTHON_PKG_DIR})
endif()
endif()
endif()
Expand Down
4 changes: 3 additions & 1 deletion src/pyCecClient/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
cmake_minimum_required(VERSION 3.12.0)
project(pyCecClient)

include(GNUInstallDirs)

# Python
if(WIN32 AND "${MSVC_C_ARCHITECTURE_ID}" STREQUAL "X86")
set(PYTHON_USE_VERSION 2)
Expand All @@ -22,7 +24,7 @@ if(PYTHONLIBS_FOUND)
DESTINATION python)
else()
install(PROGRAMS pyCecClient.py
DESTINATION bin
DESTINATION ${CMAKE_INSTALL_BINDIR}
RENAME pyCecClient)
endif()
endif()