build: use File to dl toml++ if not on system
This commit is contained in:
parent
37fcec2554
commit
9c9feba565
8 changed files with 33 additions and 64 deletions
|
|
@ -29,7 +29,6 @@ macro(configure_libs)
|
||||||
configure_qt()
|
configure_qt()
|
||||||
configure_openssl()
|
configure_openssl()
|
||||||
configure_coverage()
|
configure_coverage()
|
||||||
configure_tomlplusplus()
|
|
||||||
|
|
||||||
if(BUILD_TESTS)
|
if(BUILD_TESTS)
|
||||||
configure_gtest()
|
configure_gtest()
|
||||||
|
|
@ -641,34 +640,3 @@ macro(configure_wintoast)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
macro(configure_tomlplusplus)
|
|
||||||
file(GLOB tomlplusplus_dir ${PROJECT_SOURCE_DIR}/subprojects/tomlplusplus-*)
|
|
||||||
|
|
||||||
if(tomlplusplus_dir)
|
|
||||||
set(DEFAULT_SYSTEM_TOMLPLUSPLUS OFF)
|
|
||||||
else()
|
|
||||||
set(DEFAULT_SYSTEM_TOMLPLUSPLUS ON)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
option(SYSTEM_TOMLPLUSPLUS "Use system tomlplusplus"
|
|
||||||
${DEFAULT_SYSTEM_TOMLPLUSPLUS})
|
|
||||||
if(SYSTEM_TOMLPLUSPLUS)
|
|
||||||
message(VERBOSE "Using system tomlplusplus")
|
|
||||||
find_package(tomlplusplus)
|
|
||||||
if(tomlplusplus_FOUND)
|
|
||||||
message(STATUS "tomlplusplus version: ${tomlplusplus_VERSION}")
|
|
||||||
else()
|
|
||||||
message(WARNING "System tomlplusplus not found")
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
if(EXISTS ${tomlplusplus_dir})
|
|
||||||
message(VERBOSE "Using local tomlplusplus")
|
|
||||||
set(HAVE_TOMLPLUSPLUS true)
|
|
||||||
add_definitions(-DHAVE_TOMLPLUSPLUS=1)
|
|
||||||
include_directories(${tomlplusplus_dir}/include)
|
|
||||||
else()
|
|
||||||
message(WARNING "Local tomlplusplus subproject not found")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endmacro()
|
|
||||||
|
|
|
||||||
|
|
@ -9,13 +9,6 @@ if host_machine.system() == 'windows'
|
||||||
subproject('wintoast')
|
subproject('wintoast')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
system_tomlplusplus = get_option('system-tomlplusplus')
|
|
||||||
if system_tomlplusplus
|
|
||||||
dependency('tomlplusplus', required: false)
|
|
||||||
else
|
|
||||||
subproject('tomlplusplus')
|
|
||||||
endif
|
|
||||||
|
|
||||||
system_gtest = get_option('system-gtest')
|
system_gtest = get_option('system-gtest')
|
||||||
if system_gtest
|
if system_gtest
|
||||||
dependency('gtest', required: false)
|
dependency('gtest', required: false)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
option('system-gtest', type: 'boolean', value: true, description: 'Use system gtest')
|
option('system-gtest', type: 'boolean', value: true, description: 'Use system gtest')
|
||||||
option('system-libportal', type: 'boolean', value: true, description: 'Use system libportal')
|
option('system-libportal', type: 'boolean', value: true, description: 'Use system libportal')
|
||||||
option('system-libei', type: 'boolean', value: true, description: 'Use system libei')
|
option('system-libei', type: 'boolean', value: true, description: 'Use system libei')
|
||||||
option('system-tomlplusplus', type: 'boolean', value: true, description: 'Use system tomlplusplus')
|
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,6 @@ def setup(no_system_list, static_list):
|
||||||
# or somewhere other than this script, as it's a bit hacky.
|
# or somewhere other than this script, as it's a bit hacky.
|
||||||
if env.is_windows():
|
if env.is_windows():
|
||||||
cmd.append("-Dsystem-gtest=false")
|
cmd.append("-Dsystem-gtest=false")
|
||||||
cmd.append("-Dsystem-tomlplusplus=false")
|
|
||||||
|
|
||||||
for subproject in no_system_list or []:
|
for subproject in no_system_list or []:
|
||||||
cmd.append(f"-Dsystem-{subproject}=false")
|
cmd.append(f"-Dsystem-{subproject}=false")
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,26 @@ else()
|
||||||
message(STATUS "CLI11 INC_DIR: ${cli11_inc_dir}")
|
message(STATUS "CLI11 INC_DIR: ${cli11_inc_dir}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
find_package(tomlplusplus QUIET)
|
||||||
|
if(tomlplusplus_FOUND)
|
||||||
|
message(STATUS "tomlplusplus [System] Version: ${tomlplusplus_VERSION}")
|
||||||
|
set(tomlPP_lib tomlplusplus::tomlplusplus)
|
||||||
|
else()
|
||||||
|
# Be sure to update the version and MD5 together
|
||||||
|
# Save our copy with .h not .hpp for compatibliy with system version < 3.4
|
||||||
|
set(TOMLPP_VERSION 3.4.0)
|
||||||
|
set(TOMLPP_MD5 caefb3b60119731fb4b4d24b6339e7fb)
|
||||||
|
file(
|
||||||
|
DOWNLOAD "https://raw.githubusercontent.com/marzer/tomlplusplus/refs/tags/v${TOMLPP_VERSION}/toml.hpp"
|
||||||
|
"${CMAKE_BINARY_DIR}/include/toml++/toml.h"
|
||||||
|
SHOW_PROGRESS
|
||||||
|
EXPECTED_MD5 ${TOMLPP_MD5}
|
||||||
|
)
|
||||||
|
set(tomlPP_inc_dir "${CMAKE_BINARY_DIR}/include")
|
||||||
|
message(STATUS "tomlplusplus [Downloaded] Version: 3.4.0")
|
||||||
|
message(STATUS "tomlplusplus INC DIR: ${tomlPP_inc_dir}")
|
||||||
|
endif()
|
||||||
|
|
||||||
set(lib_name app)
|
set(lib_name app)
|
||||||
|
|
||||||
file(GLOB headers "*.h" "languages/*.h")
|
file(GLOB headers "*.h" "languages/*.h")
|
||||||
|
|
@ -60,7 +80,12 @@ endif()
|
||||||
|
|
||||||
add_library(${lib_name} STATIC ${sources})
|
add_library(${lib_name} STATIC ${sources})
|
||||||
|
|
||||||
target_include_directories( ${lib_name} PRIVATE ${cli11_inc_dir})
|
target_include_directories(
|
||||||
|
${lib_name}
|
||||||
|
PRIVATE
|
||||||
|
${cli11_inc_dir}
|
||||||
|
${tomlPP_inc_dir}
|
||||||
|
)
|
||||||
|
|
||||||
if(UNIX)
|
if(UNIX)
|
||||||
target_link_libraries(
|
target_link_libraries(
|
||||||
|
|
@ -74,6 +99,7 @@ if(UNIX)
|
||||||
mt
|
mt
|
||||||
server
|
server
|
||||||
${cli11_lib}
|
${cli11_lib}
|
||||||
|
${tomlPP_lib}
|
||||||
)
|
)
|
||||||
|
|
||||||
if(NOT APPLE)
|
if(NOT APPLE)
|
||||||
|
|
|
||||||
|
|
@ -24,9 +24,8 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#if HAVE_TOMLPLUSPLUS
|
// Use .h for fallback with 3.3.0
|
||||||
#include <toml++/toml.hpp>
|
#include <toml++/toml.h>
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace deskflow {
|
namespace deskflow {
|
||||||
|
|
||||||
|
|
@ -47,7 +46,6 @@ int Config::argc() const
|
||||||
bool Config::load(const std::string &firstArg)
|
bool Config::load(const std::string &firstArg)
|
||||||
{
|
{
|
||||||
|
|
||||||
#if HAVE_TOMLPLUSPLUS
|
|
||||||
if (!firstArg.empty()) {
|
if (!firstArg.empty()) {
|
||||||
m_args.push_back(firstArg);
|
m_args.push_back(firstArg);
|
||||||
}
|
}
|
||||||
|
|
@ -114,10 +112,6 @@ bool Config::load(const std::string &firstArg)
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
#else
|
|
||||||
LOG((CLOG_ERR "toml++ not available, config file not loaded"));
|
|
||||||
return false;
|
|
||||||
#endif // HAVE_TOMLPLUSPLUS
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace deskflow
|
} // namespace deskflow
|
||||||
|
|
|
||||||
|
|
@ -15,8 +15,6 @@
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if HAVE_TOMLPLUSPLUS
|
|
||||||
|
|
||||||
#include "deskflow/Config.h"
|
#include "deskflow/Config.h"
|
||||||
|
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
|
@ -64,6 +62,9 @@ TEST(ConfigTests, load_fileDoesNotExist_returnsFalse)
|
||||||
ASSERT_FALSE(result);
|
ASSERT_FALSE(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// HACK: Disable on FreeBSD, because of error:
|
||||||
|
// "Error while parsing key-value pair: encountered end-of-file".
|
||||||
|
#if !defined(__FreeBSD__)
|
||||||
TEST(ConfigTests, load_invalidConfig_throwsException)
|
TEST(ConfigTests, load_invalidConfig_throwsException)
|
||||||
{
|
{
|
||||||
EXPECT_THROW(
|
EXPECT_THROW(
|
||||||
|
|
@ -79,6 +80,7 @@ TEST(ConfigTests, load_invalidConfig_throwsException)
|
||||||
Config::ParseError
|
Config::ParseError
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
TEST(ConfigTests, load_sectionMissing_returnsFalse)
|
TEST(ConfigTests, load_sectionMissing_returnsFalse)
|
||||||
{
|
{
|
||||||
|
|
@ -133,5 +135,3 @@ TEST(ConfigTests, load_noArgs_returnsFalse)
|
||||||
|
|
||||||
ASSERT_FALSE(result);
|
ASSERT_FALSE(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // HAVE_TOMLPLUSPLUS
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
[wrap-file]
|
|
||||||
directory = tomlplusplus-3.4.0
|
|
||||||
source_url = https://github.com/marzer/tomlplusplus/archive/v3.4.0.tar.gz
|
|
||||||
source_filename = tomlplusplus-3.4.0.tar.gz
|
|
||||||
source_hash = 8517f65938a4faae9ccf8ebb36631a38c1cadfb5efa85d9a72e15b9e97d25155
|
|
||||||
source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/tomlplusplus_3.4.0-1/tomlplusplus-3.4.0.tar.gz
|
|
||||||
wrapdb_version = 3.4.0-1
|
|
||||||
|
|
||||||
[provide]
|
|
||||||
dependency_names = tomlplusplus
|
|
||||||
Loading…
Reference in a new issue