From 0aae238045aa8eb395d85eb267192592e82e90e9 Mon Sep 17 00:00:00 2001 From: Lars Op den Kamp Date: Fri, 10 Jul 2020 13:01:47 +0200 Subject: [PATCH] fixed: v4 compatiblity only the main lib is fully compatible. LibCecSharp is initialised differently now --- include/cec.h | 18 ++++++++- include/cecc.h | 10 +++++ project/nsis/cec-tray.nsh | 25 ++++++++++++ project/nsis/sections.nsh | 42 ++++++-------------- src/dotnetlib/CecSharpTypes.h | 2 + src/dotnetlib/LibCecSharp.cpp | 33 +++++++++++++--- src/libcec/LibCEC.cpp | 20 ++++++++++ src/libcec/LibCEC.h | 9 +++++ src/libcec/LibCECC.cpp | 31 ++++++++++++++- windows/build-all.cmd | 73 ++++++++++++++++++++--------------- windows/create-installer.cmd | 48 ++++++++++++++++------- 11 files changed, 224 insertions(+), 87 deletions(-) create mode 100644 project/nsis/cec-tray.nsh diff --git a/include/cec.h b/include/cec.h index 533dfd29..a7c66a88 100644 --- a/include/cec.h +++ b/include/cec.h @@ -239,11 +239,13 @@ namespace CEC */ virtual uint8_t VolumeDown(bool bSendRelease = true) = 0; +#if CEC_LIB_VERSION_MAJOR >= 5 /*! * @brief Toggles the mute status of an audiosystem, if it's present * @return The new audio status. */ virtual uint8_t MuteAudio(void) = 0; +#endif /*! * @brief Send a keypress to a device on the CEC bus. @@ -318,7 +320,19 @@ namespace CEC /*! * @return True if this CEC adapter can save the user configuration, false otherwise. */ +#if CEC_LIB_VERSION_MAJOR >= 5 virtual bool CanSaveConfiguration(void) = 0; +#else + virtual bool CanPersistConfiguration(void) = 0; + + /*! + * @deprecated Use SetConfiguration() instead + * @brief Change libCEC's configuration. Store it updated settings in the eeprom of the device (if supported) + * @brief configuration The configuration to store. + * @return True when the configuration was persisted, false otherwise. + */ + virtual bool PersistConfiguration(libcec_configuration *configuration) = 0; +#endif /*! * @brief Tell libCEC to poll for active devices on the bus. @@ -339,6 +353,7 @@ namespace CEC */ virtual bool GetDeviceInformation(const char *strPort, libcec_configuration *config, uint32_t iTimeoutMs = 10000) = 0; +#if CEC_LIB_VERSION_MAJOR >= 5 /*! * @brief Set and enable the callback methods * @param callbacks The callbacks to set. @@ -352,7 +367,7 @@ namespace CEC * @return True if disabled, false otherwise. */ virtual bool DisableCallbacks(void) = 0; - +#else /*! * @deprecated * @brief Set and enable the callback methods. @@ -361,6 +376,7 @@ namespace CEC * @return True when enabled, false otherwise. */ virtual bool EnableCallbacks(void *cbParam, ICECCallbacks *callbacks) = 0; +#endif /*! * @brief Changes the active HDMI port. diff --git a/include/cecc.h b/include/cecc.h index 3138b08b..c63611c7 100644 --- a/include/cecc.h +++ b/include/cecc.h @@ -53,9 +53,12 @@ extern DECLSPEC void libcec_destroy(libcec_connection_t connection); extern DECLSPEC int libcec_open(libcec_connection_t connection, const char* strPort, uint32_t iTimeout); 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); +#else extern DECLSPEC int libcec_enable_callbacks(libcec_connection_t connection, void* cbParam, CEC_NAMESPACE ICECCallbacks* callbacks); +#endif extern DECLSPEC int8_t libcec_find_adapters(libcec_connection_t connection, CEC_NAMESPACE cec_adapter* deviceList, uint8_t iBufSize, const char* strDevicePath); extern DECLSPEC int libcec_ping_adapters(libcec_connection_t connection); extern DECLSPEC int libcec_start_bootloader(libcec_connection_t connection); @@ -85,7 +88,9 @@ extern DECLSPEC int libcec_is_active_device_type(libcec_connection_t connection, extern DECLSPEC int libcec_set_hdmi_port(libcec_connection_t connection, CEC_NAMESPACE cec_logical_address baseDevice, uint8_t iPort); extern DECLSPEC int libcec_volume_up(libcec_connection_t connection, int bSendRelease); extern DECLSPEC int libcec_volume_down(libcec_connection_t connection, int bSendRelease); +#if CEC_LIB_VERSION_MAJOR >= 5 extern DECLSPEC int libcec_mute_audio(libcec_connection_t connection, int bSendRelease); +#endif extern DECLSPEC int libcec_send_keypress(libcec_connection_t connection, CEC_NAMESPACE cec_logical_address iDestination, CEC_NAMESPACE cec_user_control_code key, int bWait); extern DECLSPEC int libcec_send_key_release(libcec_connection_t connection, CEC_NAMESPACE cec_logical_address iDestination, int bWait); extern DECLSPEC int libcec_get_device_osd_name(libcec_connection_t connection, CEC_NAMESPACE cec_logical_address iAddress, CEC_NAMESPACE cec_osd_name name); @@ -93,7 +98,12 @@ extern DECLSPEC int libcec_set_stream_path_logical(libcec_connection_t connectio extern DECLSPEC int libcec_set_stream_path_physical(libcec_connection_t connection, uint16_t iPhysicalAddress); extern DECLSPEC CEC_NAMESPACE cec_logical_addresses libcec_get_logical_addresses(libcec_connection_t connection); extern DECLSPEC int libcec_get_current_configuration(libcec_connection_t connection, CEC_NAMESPACE libcec_configuration* configuration); +#if CEC_LIB_VERSION_MAJOR >= 5 extern DECLSPEC int libcec_can_save_configuration(libcec_connection_t connection); +#else +extern DECLSPEC int libcec_can_persist_configuration(libcec_connection_t connection); +extern DECLSPEC int libcec_persist_configuration(libcec_connection_t connection, CEC_NAMESPACE libcec_configuration* configuration); +#endif extern DECLSPEC int libcec_set_configuration(libcec_connection_t connection, const CEC_NAMESPACE libcec_configuration* configuration); extern DECLSPEC void libcec_rescan_devices(libcec_connection_t connection); extern DECLSPEC int libcec_is_libcec_active_source(libcec_connection_t connection); diff --git a/project/nsis/cec-tray.nsh b/project/nsis/cec-tray.nsh new file mode 100644 index 00000000..d59bd0d7 --- /dev/null +++ b/project/nsis/cec-tray.nsh @@ -0,0 +1,25 @@ +Section "libCEC Tray" SecTray + SetShellVarContext current + SectionIn 1 + + ; Copy to the installation directory + SetOutPath "$INSTDIR\x86\netfx" + File "..\build\x86\cec-tray.exe" + SetOutPath "$INSTDIR\x64\netfx" + File /nonfatal "..\build\amd64\cec-tray.exe" + + !insertmacro MUI_STARTMENU_WRITE_BEGIN Application + SetOutPath "$INSTDIR" + + CreateDirectory "$SMPROGRAMS\$StartMenuFolder" + ${If} ${RunningX64} + CreateShortCut "$SMPROGRAMS\$StartMenuFolder\cec-tray.lnk" "$INSTDIR\x64\netfx\cec-tray.exe" \ + "" "$INSTDIR\x64\netfx\cec-tray.exe" 0 SW_SHOWNORMAL \ + "" "Start libCEC Tray (x64)." + ${Else} + CreateShortCut "$SMPROGRAMS\$StartMenuFolder\cec-tray.lnk" "$INSTDIR\x86\netfx\cec-tray.exe" \ + "" "$INSTDIR\netfx\cec-tray.exe" 0 SW_SHOWNORMAL \ + "" "Start libCEC Tray." + ${EndIf} + !insertmacro MUI_STARTMENU_WRITE_END +SectionEnd diff --git a/project/nsis/sections.nsh b/project/nsis/sections.nsh index 860a5c8d..b582be46 100644 --- a/project/nsis/sections.nsh +++ b/project/nsis/sections.nsh @@ -109,7 +109,7 @@ Section "libCEC for .Net Framework" SecDotNet SetOutPath "$INSTDIR\x86\netfx" File "..\build\x86\LibCecSharp.dll" File "..\build\x86\LibCecSharp.xml" - File "..\build\x86\CecSharpTester.exe" + File /nonfatal "..\build\x86\CecSharpTester.exe" ${If} ${RunningX64} ; Moved to netfx subdir @@ -139,11 +139,11 @@ Section "libCEC for .Net Core" SecDotNetCore File "..\build\x86\netcore\LibCecSharpCore.dll" File "..\build\x86\netcore\LibCecSharpCore.runtimeconfig.json" File "..\build\x86\netcore\LibCecSharpCore.xml" - File "..\build\x86\netcore\CecSharpCoreTester.exe" - File "..\build\x86\netcore\CecSharpCoreTester.deps.json" - File "..\build\x86\netcore\CecSharpCoreTester.dll" - File "..\build\x86\netcore\CecSharpCoreTester.runtimeconfig.json" - File "..\build\x86\netcore\Ijwhost.dll" + File /nonfatal "..\build\x86\netcore\CecSharpCoreTester.exe" + File /nonfatal "..\build\x86\netcore\CecSharpCoreTester.deps.json" + File /nonfatal "..\build\x86\netcore\CecSharpCoreTester.dll" + File /nonfatal "..\build\x86\netcore\CecSharpCoreTester.runtimeconfig.json" + File /nonfatal "..\build\x86\netcore\Ijwhost.dll" ${If} ${RunningX64} SetOutPath "$INSTDIR\x64\netcore" @@ -159,31 +159,9 @@ Section "libCEC for .Net Core" SecDotNetCore ${EndIf} SectionEnd -Section "libCEC Tray" SecTray - SetShellVarContext current - SectionIn 1 - - ; Copy to the installation directory - SetOutPath "$INSTDIR\x86\netfx" - File "..\build\x86\cec-tray.exe" - SetOutPath "$INSTDIR\x64\netfx" - File /nonfatal "..\build\amd64\cec-tray.exe" - - !insertmacro MUI_STARTMENU_WRITE_BEGIN Application - SetOutPath "$INSTDIR" - - CreateDirectory "$SMPROGRAMS\$StartMenuFolder" - ${If} ${RunningX64} - CreateShortCut "$SMPROGRAMS\$StartMenuFolder\cec-tray.lnk" "$INSTDIR\x64\netfx\cec-tray.exe" \ - "" "$INSTDIR\x64\netfx\cec-tray.exe" 0 SW_SHOWNORMAL \ - "" "Start libCEC Tray (x64)." - ${Else} - CreateShortCut "$SMPROGRAMS\$StartMenuFolder\cec-tray.lnk" "$INSTDIR\x86\netfx\cec-tray.exe" \ - "" "$INSTDIR\netfx\cec-tray.exe" 0 SW_SHOWNORMAL \ - "" "Start libCEC Tray." - ${EndIf} - !insertmacro MUI_STARTMENU_WRITE_END -SectionEnd +!ifdef NSISDOTNETAPPS +!include "nsis\cec-tray.nsh" +!endif Section "libCEC client (cec-client)" SecCecClient SetShellVarContext current @@ -309,6 +287,7 @@ SectionEnd ; Required options Function .onSelChange +!ifdef NSISDOTNETAPPS ${If} ${SectionIsSelected} ${SecTray} !define /math MYSECTIONFLAGS ${SF_SELECTED} | ${SF_RO} !insertmacro SetSectionFlag ${SecDotNet} ${MYSECTIONFLAGS} @@ -316,6 +295,7 @@ ${If} ${SectionIsSelected} ${SecTray} ${Else} !insertmacro ClearSectionFlag ${SecDotNet} ${SF_RO} ${EndIf} +!endif ${If} ${SectionIsSelected} ${SecPythonCecClient} !define /math MYSECTIONFLAGS ${SF_SELECTED} | ${SF_RO} diff --git a/src/dotnetlib/CecSharpTypes.h b/src/dotnetlib/CecSharpTypes.h index e53fdd06..b3c745f3 100644 --- a/src/dotnetlib/CecSharpTypes.h +++ b/src/dotnetlib/CecSharpTypes.h @@ -1127,6 +1127,7 @@ namespace CecSharp On = 1 }; +#if CEC_LIB_VERSION_MAJOR >= 5 /// /// A setting that can be enabled, disabled or not changed /// @@ -1145,6 +1146,7 @@ namespace CecSharp /// NotSet = 2 }; +#endif /// /// Type of adapter to which libCEC is connected diff --git a/src/dotnetlib/LibCecSharp.cpp b/src/dotnetlib/LibCecSharp.cpp index aef1fe00..59ac8f8b 100644 --- a/src/dotnetlib/LibCecSharp.cpp +++ b/src/dotnetlib/LibCecSharp.cpp @@ -110,9 +110,8 @@ namespace CecSharp /// True when a connection was opened, false otherwise. bool Open(String ^ strPort, int iTimeoutMs) { - if (!m_libCec) { + if (!m_libCec) return false; - } marshal_context ^ context = gcnew marshal_context(); const char* strPortC = context->marshal_as(strPort); bool bReturn = m_libCec->Open(strPortC, iTimeoutMs); @@ -125,22 +124,31 @@ namespace CecSharp /// void Close(void) { - if (m_libCec) { + if (!!m_libCec) m_libCec->Close(); - } } void EnableCallbacks(void) { - if (m_libCec) { + if (!!m_libCec) + { +#if CEC_LIB_VERSION_MAJOR >= 5 m_libCec->SetCallbacks(GetLibCecCallbacks(), m_callbacks->Get()); +#else + m_libCec->EnableCallbacks(m_callbacks->Get(), GetLibCecCallbacks()); +#endif } } void DisableCallbacks(void) { - if (m_libCec) { + if (!!m_libCec) + { +#if CEC_LIB_VERSION_MAJOR >= 5 m_libCec->DisableCallbacks(); +#else + m_libCec->EnableCallbacks(nullptr, nullptr); +#endif } } @@ -606,11 +614,24 @@ namespace CecSharp /// Check whether the CEC adapter can save a configuration. /// /// True when this CEC adapter can save the user configuration, false otherwise. +#if CEC_LIB_VERSION_MAJOR >= 5 bool CanSaveConfiguration(void) { return !!m_libCec && m_libCec->CanSaveConfiguration(); } +#else + bool CanPersistConfiguration(void) + { + return !!m_libCec && + m_libCec->CanPersistConfiguration(); + } + + bool PersistConfiguration(LibCECConfiguration ^configuration) + { + return SetConfiguration(configuration); + } +#endif /// /// Change libCEC's configuration. Store it updated settings in the eeprom of the device (if supported) diff --git a/src/libcec/LibCEC.cpp b/src/libcec/LibCEC.cpp index 4b333e41..a814f389 100644 --- a/src/libcec/LibCEC.cpp +++ b/src/libcec/LibCEC.cpp @@ -125,6 +125,7 @@ bool CLibCEC::PingAdapter(void) return m_client ? m_client->PingAdapter() : false; } +#if CEC_LIB_VERSION_MAJOR >= 5 bool CLibCEC::SetCallbacks(ICECCallbacks *callbacks, void *cbParam) { return !!m_client ? m_client->EnableCallbacks(cbParam, callbacks) : false; @@ -139,6 +140,12 @@ bool CLibCEC::EnableCallbacks(void *cbParam, ICECCallbacks *callbacks) { return SetCallbacks(callbacks, cbParam); } +#else +bool CLibCEC::EnableCallbacks(void *cbParam, ICECCallbacks *callbacks) +{ + return !!m_client ? m_client->EnableCallbacks(cbParam, callbacks) : false; +} +#endif bool CLibCEC::GetCurrentConfiguration(libcec_configuration *configuration) { @@ -150,11 +157,22 @@ bool CLibCEC::SetConfiguration(const libcec_configuration *configuration) return m_client ? m_client->SetConfiguration(*configuration) : false; } +#if CEC_LIB_VERSION_MAJOR >= 5 bool CLibCEC::CanSaveConfiguration(void) +#else +bool CLibCEC::CanPersistConfiguration(void) +#endif { return m_client ? m_client->CanSaveConfiguration() : false; } +#if CEC_LIB_VERSION_MAJOR < 5 +bool CLibCEC::PersistConfiguration(libcec_configuration *configuration) +{ + return SetConfiguration(configuration); +} +#endif + void CLibCEC::RescanActiveDevices(void) { if (m_client) @@ -290,12 +308,14 @@ uint8_t CLibCEC::VolumeDown(bool bSendRelease /* = true */) return m_client ? m_client->SendVolumeDown(bSendRelease) : (uint8_t)CEC_AUDIO_VOLUME_STATUS_UNKNOWN; } +#if CEC_LIB_VERSION_MAJOR >= 5 uint8_t CLibCEC::MuteAudio(void) { return !!m_client ? m_client->SendMuteAudio() : (uint8_t)CEC_AUDIO_VOLUME_STATUS_UNKNOWN; } +#endif bool CLibCEC::SendKeypress(cec_logical_address iDestination, cec_user_control_code key, bool bWait /* = true */) { diff --git a/src/libcec/LibCEC.h b/src/libcec/LibCEC.h index 161a0a75..feaad337 100644 --- a/src/libcec/LibCEC.h +++ b/src/libcec/LibCEC.h @@ -63,8 +63,10 @@ namespace CEC bool Open(const char *strPort, uint32_t iTimeout = CEC_DEFAULT_CONNECT_TIMEOUT); void Close(void); +#if CEC_LIB_VERSION_MAJOR >= 5 bool SetCallbacks(ICECCallbacks *callbacks, void *cbParam); bool DisableCallbacks(void); +#endif bool EnableCallbacks(void *cbParam, ICECCallbacks *callbacks); int8_t FindAdapters(cec_adapter *deviceList, uint8_t iBufSize, const char *strDevicePath = NULL); int8_t DetectAdapters(cec_adapter_descriptor *deviceList, uint8_t iBufSize, const char *strDevicePath = NULL, bool bQuickScan = false); @@ -96,7 +98,9 @@ namespace CEC bool SetHDMIPort(cec_logical_address iBaseDevice, uint8_t iPort = CEC_DEFAULT_HDMI_PORT); uint8_t VolumeUp(bool bSendRelease = true); uint8_t VolumeDown(bool bSendRelease = true); +#if CEC_LIB_VERSION_MAJOR >= 5 uint8_t MuteAudio(void); +#endif bool SendKeypress(cec_logical_address iDestination, cec_user_control_code key, bool bWait = true); bool SendKeyRelease(cec_logical_address iDestination, bool bWait = true); std::string GetDeviceOSDName(cec_logical_address iAddress); @@ -107,7 +111,12 @@ namespace CEC cec_logical_addresses GetLogicalAddresses(void); bool GetCurrentConfiguration(libcec_configuration *configuration); bool SetConfiguration(const libcec_configuration *configuration); +#if CEC_LIB_VERSION_MAJOR >= 5 bool CanSaveConfiguration(void); +#else + bool CanPersistConfiguration(void); + bool PersistConfiguration(libcec_configuration *configuration); +#endif void RescanActiveDevices(void); bool IsLibCECActiveSource(void); diff --git a/src/libcec/LibCECC.cpp b/src/libcec/LibCECC.cpp index 2d4d239b..549b871d 100644 --- a/src/libcec/LibCECC.cpp +++ b/src/libcec/LibCECC.cpp @@ -79,6 +79,7 @@ void libcec_clear_configuration(libcec_configuration* configuration) configuration->Clear(); } +#if CEC_LIB_VERSION_MAJOR >= 5 int libcec_set_callbacks(libcec_connection_t connection, ICECCallbacks* callbacks, void* cbParam) { ICECAdapter* adapter = static_cast(connection); @@ -94,11 +95,15 @@ int libcec_disable_callbacks(libcec_connection_t connection) return adapter->DisableCallbacks() ? 1 : 0; return -1; } - +#else int libcec_enable_callbacks(libcec_connection_t connection, void* cbParam, ICECCallbacks* callbacks) { - return libcec_set_callbacks(connection, callbacks, cbParam); + ICECAdapter* adapter = static_cast(connection); + if (adapter) + return adapter->EnableCallbacks(cbParam, callbacks) ? 1 : 0; + return -1; } +#endif int8_t libcec_find_adapters(libcec_connection_t connection, cec_adapter* deviceList, uint8_t iBufSize, const char* strDevicePath) { @@ -337,6 +342,7 @@ int libcec_volume_down(libcec_connection_t connection, int bSendRelease) -1; } +#if CEC_LIB_VERSION_MAJOR >= 5 int libcec_mute_audio(libcec_connection_t connection, int UNUSED(bSendRelease)) { ICECAdapter* adapter = static_cast(connection); @@ -344,6 +350,7 @@ int libcec_mute_audio(libcec_connection_t connection, int UNUSED(bSendRelease)) adapter->AudioToggleMute() : -1; } +#endif int libcec_send_keypress(libcec_connection_t connection, cec_logical_address iDestination, cec_user_control_code key, int bWait) { @@ -410,6 +417,7 @@ int libcec_get_current_configuration(libcec_connection_t connection, libcec_conf -1; } +#if CEC_LIB_VERSION_MAJOR >= 5 int libcec_can_save_configuration(libcec_connection_t connection) { ICECAdapter* adapter = static_cast(connection); @@ -417,6 +425,25 @@ int libcec_can_save_configuration(libcec_connection_t connection) (adapter->CanSaveConfiguration() ? 1 : 0) : -1; } +#else +int libcec_can_persist_configuration(libcec_connection_t connection) +{ + ICECAdapter* adapter = static_cast(connection); + return adapter ? + (adapter->CanPersistConfiguration() ? 1 : 0) : + -1; +} +#endif + +#if CEC_LIB_VERSION_MAJOR < 5 +int libcec_persist_configuration(libcec_connection_t connection, libcec_configuration* configuration) +{ + ICECAdapter* adapter = static_cast(connection); + return adapter ? + (adapter->PersistConfiguration(configuration) ? 1 : 0) : + -1; +} +#endif int libcec_set_configuration(libcec_connection_t connection, libcec_configuration* configuration) { diff --git a/windows/build-all.cmd b/windows/build-all.cmd index 8e244fb5..e1a86c70 100644 --- a/windows/build-all.cmd +++ b/windows/build-all.cmd @@ -37,6 +37,13 @@ IF "%3" == "" ( SET VSVERSION=%3 ) +rem optional parameter: build .net applications +IF "%4" == "" ( + SET DOTNETAPPS=1 +) ELSE ( + SET DOTNETAPPS=0 +) + SET BUILDPATH=%MYDIR%..\build SET EXITCODE=1 @@ -93,38 +100,40 @@ IF EXIST "%MYDIR%..\build\%BUILDARCH%\netcore\LibCecSharpCore.dll" ( EXIT /b 1 ) -rem Compile cec-tray and CecSharpTester apps -ECHO. * compiling .Net applications for %BUILDARCH% -CD "%MYDIR%..\src\dotnet\project" -rem Restore nuget dependencies -msbuild -t:restore -"%DevEnvDir%devenv.com" cec-dotnet.sln /Build "%BUILDTYPE%|%BUILDARCHPROJECT%" - -rem Check and copy CecSharpTester -IF EXIST ..\build\%BUILDARCHPROJECT%\CecSharpTester.exe ( - COPY ..\build\%BUILDARCHPROJECT%\CecSharpTester.exe "%MYDIR%..\build\%BUILDARCH%\CecSharpTester.exe" >nul -) ELSE ( - ECHO. *** failed to build CecSharpTester for %BUILDARCH% *** - PAUSE - EXIT /b 1 -) - -rem Check and copy cec-tray -IF EXIST ..\build\%BUILDARCHPROJECT%\cec-tray.exe ( - COPY ..\build\%BUILDARCHPROJECT%\cec-tray.exe "%MYDIR%..\build\%BUILDARCH%\cec-tray.exe" >nul -) ELSE ( - ECHO. *** failed to build cec-tray for %BUILDARCH% *** - PAUSE - EXIT /b 1 -) - -rem Check and copy CecSharpCoreTester -IF EXIST ..\build\%BUILDARCHPROJECT%\netcoreapp3.1\CecSharpCoreTester.exe ( - COPY ..\build\%BUILDARCHPROJECT%\netcoreapp3.1\CecSharpCoreTester.* "%MYDIR%..\build\%BUILDARCH%\netcore\." >nul -) ELSE ( - ECHO. *** failed to build CecSharpCoreTester for %BUILDARCH% *** - PAUSE - EXIT /b 1 +IF %DOTNETAPPS% == 1 ( + rem Compile cec-tray and CecSharpTester apps + ECHO. * compiling .Net applications for %BUILDARCH% + CD "%MYDIR%..\src\dotnet\project" + rem Restore nuget dependencies + msbuild -t:restore + "%DevEnvDir%devenv.com" cec-dotnet.sln /Build "%BUILDTYPE%|%BUILDARCHPROJECT%" + + rem Check and copy CecSharpTester + IF EXIST "..\build\%BUILDARCHPROJECT%\CecSharpTester.exe" ( + COPY "..\build\%BUILDARCHPROJECT%\CecSharpTester.exe" "%MYDIR%..\build\%BUILDARCH%\CecSharpTester.exe" >nul + ) ELSE ( + ECHO. *** failed to build CecSharpTester for %BUILDARCH% *** + PAUSE + EXIT /b 1 + ) + + rem Check and copy cec-tray + IF EXIST "..\build\%BUILDARCHPROJECT%\cec-tray.exe" ( + COPY "..\build\%BUILDARCHPROJECT%\cec-tray.exe" "%MYDIR%..\build\%BUILDARCH%\cec-tray.exe" >nul + ) ELSE ( + ECHO. *** failed to build cec-tray for %BUILDARCH% *** + PAUSE + EXIT /b 1 + ) + + rem Check and copy CecSharpCoreTester + IF EXIST "..\build\%BUILDARCHPROJECT%\netcoreapp3.1\CecSharpCoreTester.exe" ( + COPY "..\build\%BUILDARCHPROJECT%\netcoreapp3.1\CecSharpCoreTester.*" "%MYDIR%..\build\%BUILDARCH%\netcore\." >nul + ) ELSE ( + ECHO. *** failed to build CecSharpCoreTester for %BUILDARCH% *** + PAUSE + EXIT /b 1 + ) ) RMDIR /s /q "%BUILDPATH%\cmake" >nul 2>&1 diff --git a/windows/create-installer.cmd b/windows/create-installer.cmd index 0ca176b5..a6802072 100644 --- a/windows/create-installer.cmd +++ b/windows/create-installer.cmd @@ -20,6 +20,7 @@ IF "%2" == "" ( SET BUILDTYPE=%2 ) +SET NSISDOTNET=/DNSISDOTNETAPPS SET BUILDPATH=%MYDIR%..\build SET EXITCODE=1 @@ -33,6 +34,7 @@ rem Skip to libCEC/x86 if we're running on win32 IF "%PROCESSOR_ARCHITECTURE%"=="x86" IF "%PROCESSOR_ARCHITEW6432%"=="" GOTO libcecx86 :libcecx64 +SET X86ONLY=0 CALL "%MYDIR%build-all.cmd" amd64 %BUILDTYPE% %VSVERSION% IF %errorlevel% neq 0 ( ECHO. *** failed to build libCEC for x64 *** @@ -41,6 +43,7 @@ IF %errorlevel% neq 0 ( ) :libcecx86 +SET X86ONLY=1 CALL "%MYDIR%build-all.cmd" x86 %BUILDTYPE% %VSVERSION% IF %errorlevel% neq 0 ( ECHO. *** failed to build libCEC for x86 *** @@ -55,22 +58,37 @@ IF NOT EXIST "..\support\private\sign-binary.cmd" GOTO CREATEINSTALLER ECHO. * signing all binaries CALL ..\support\private\sign-binary.cmd "%MYDIR%..\build\x86\cec.dll" >nul CALL ..\support\private\sign-binary.cmd "%MYDIR%..\build\x86\LibCecSharp.dll" >nul -CALL ..\support\private\sign-binary.cmd "%MYDIR%..\build\x86\cec-tray.exe" >nul -CALL ..\support\private\sign-binary.cmd "%MYDIR%..\build\x86\CecSharpTester.exe" >nul CALL ..\support\private\sign-binary.cmd "%MYDIR%..\build\x86\netcore\LibCecSharpCore.dll" >nul -CALL ..\support\private\sign-binary.cmd "%MYDIR%..\build\x86\netcore\CecSharpCoreTester.dll" >nul -CALL ..\support\private\sign-binary.cmd "%MYDIR%..\build\x86\netcore\CecSharpCoreTester.exe" >nul CALL ..\support\private\sign-binary.cmd "%MYDIR%..\build\x86\cec-client.exe" >nul CALL ..\support\private\sign-binary.cmd "%MYDIR%..\build\x86\cecc-client.exe" >nul -CALL ..\support\private\sign-binary.cmd "%MYDIR%..\build\amd64\cec.dll" >nul -CALL ..\support\private\sign-binary.cmd "%MYDIR%..\build\amd64\LibCecSharp.dll" >nul -CALL ..\support\private\sign-binary.cmd "%MYDIR%..\build\amd64\cec-tray.exe" >nul -CALL ..\support\private\sign-binary.cmd "%MYDIR%..\build\amd64\CecSharpTester.exe" >nul -CALL ..\support\private\sign-binary.cmd "%MYDIR%..\build\amd64\netcore\LibCecSharpCore.dll" >nul -CALL ..\support\private\sign-binary.cmd "%MYDIR%..\build\amd64\netcore\CecSharpCoreTester.dll" >nul -CALL ..\support\private\sign-binary.cmd "%MYDIR%..\build\amd64\netcore\CecSharpCoreTester.exe" >nul -CALL ..\support\private\sign-binary.cmd "%MYDIR%..\build\amd64\cec-client.exe" >nul -CALL ..\support\private\sign-binary.cmd "%MYDIR%..\build\amd64\cecc-client.exe" >nul +IF EXIST "%MYDIR%..\build\x86\cec-tray.exe" ( + CALL ..\support\private\sign-binary.cmd "%MYDIR%..\build\x86\cec-tray.exe" >nul +) +IF EXIST "%MYDIR%..\build\x86\CecSharpTester.exe" ( + CALL ..\support\private\sign-binary.cmd "%MYDIR%..\build\x86\CecSharpTester.exe" >nul +) +IF EXIST "%MYDIR%..\build\x86\netcore\CecSharpCoreTester.exe" ( + CALL ..\support\private\sign-binary.cmd "%MYDIR%..\build\x86\netcore\CecSharpCoreTester.dll" >nul + CALL ..\support\private\sign-binary.cmd "%MYDIR%..\build\x86\netcore\CecSharpCoreTester.exe" >nul +) + +IF %X86ONLY% == 0 ( + CALL ..\support\private\sign-binary.cmd "%MYDIR%..\build\amd64\cec.dll" >nul + CALL ..\support\private\sign-binary.cmd "%MYDIR%..\build\amd64\LibCecSharp.dll" >nul + CALL ..\support\private\sign-binary.cmd "%MYDIR%..\build\amd64\netcore\LibCecSharpCore.dll" >nul + CALL ..\support\private\sign-binary.cmd "%MYDIR%..\build\amd64\cec-client.exe" >nul + CALL ..\support\private\sign-binary.cmd "%MYDIR%..\build\amd64\cecc-client.exe" >nul + IF EXIST "%MYDIR%..\build\amd64\cec-tray.exe" ( + CALL ..\support\private\sign-binary.cmd "%MYDIR%..\build\amd64\cec-tray.exe" >nul + ) + IF EXIST "%MYDIR%..\build\amd64\CecSharpTester.exe" ( + CALL ..\support\private\sign-binary.cmd "%MYDIR%..\build\amd64\CecSharpTester.exe" >nul + ) + IF EXIST "%MYDIR%..\build\amd64\netcore\CecSharpCoreTester.exe" ( + CALL ..\support\private\sign-binary.cmd "%MYDIR%..\build\amd64\netcore\CecSharpCoreTester.dll" >nul + CALL ..\support\private\sign-binary.cmd "%MYDIR%..\build\amd64\netcore\CecSharpCoreTester.exe" >nul + ) +) :CREATEEGPLUGIN call "%MYDIR%eventghost.cmd" @@ -88,14 +106,14 @@ COPY "%MYDIR%..\support\windows\p8-usbcec-bootloader-driver-installer.exe" "%MYD COPY "%MYDIR%..\support\windows\libusb0.dll" "%MYDIR%..\build\." >nul RMDIR /s /q "%MYDIR%..\build\ref" >nul 2>&1 -CALL "%MYDIR%nsis-helper.cmd" libcec.nsi "libcec-*.exe" +CALL "%MYDIR%nsis-helper.cmd" libcec.nsi "libcec-*.exe" "%NSISDOTNET%" IF %errorlevel% neq 0 ( ECHO. *** failed to build installer *** SET EXITCODE=%errorlevel% GOTO EXIT ) -CALL "%MYDIR%nsis-helper.cmd" libcec.nsi "libcec-dbg-*.exe" "/DNSISINCLUDEPDB" +CALL "%MYDIR%nsis-helper.cmd" libcec.nsi "libcec-dbg-*.exe" "/DNSISINCLUDEPDB %NSISDOTNET%" IF %errorlevel% neq 0 ( ECHO. *** failed to build installer *** SET EXITCODE=%errorlevel%