Skip to content
Open
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: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,12 @@
*.app

# Output directories
.build/*
.build-rules/*
scripts/*/build-*
libs/boost/*
subprojects/*/


# Qmake temporary files
*.pro.user
10 changes: 10 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -492,6 +492,16 @@ Where:
### Linux build
from the ```scripts/unixes``` folder, run ```./build_remaken.sh```

### Meson build (on linux so far)
from the repository root folder, run

```
./meson_build.sh
```

The remaken binary is in the .build/remaken folder
Note: this build depends on system openssl for now.

### Windows build
from the ```scripts/win``` folder, run ```./build_remaken.bat```

Expand Down
106 changes: 106 additions & 0 deletions meson.build
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
project('remaken', 'cpp', default_options : ['cpp_std=c++17'])
#NOTE: BOOST_OS_LINUX_AVAILABLE is defined hardcoded : must figure out why os detection doesn't work within boost/predef ?
add_project_arguments('-DMYVERSIONSTRING="1.10.1"', '-DBOOST_OS_LINUX_AVAILABLE', language : 'cpp')

cc = meson.get_compiler('cpp')
incdir = include_directories('libs/CLI11/include', 'libs/nlohmann-json/single_include', 'src')

openssl_proj = subproject('openssl')
openssl_dep = openssl_proj.get_variable('openssl_dep')

boost_lib_dir = meson.project_source_root() / '.build/boost/install/lib'
boost_dep = declare_dependency(
dependencies : [cc.find_library('boost_atomic', dirs : [boost_lib_dir]), \
cc.find_library('boost_charconv', dirs : [boost_lib_dir]), \
cc.find_library('boost_chrono', dirs : [boost_lib_dir]), \
cc.find_library('boost_cobalt', dirs : [boost_lib_dir]), \
cc.find_library('boost_container', dirs : [boost_lib_dir]), \
cc.find_library('boost_context', dirs : [boost_lib_dir]), \
cc.find_library('boost_contract', dirs : [boost_lib_dir]), \
cc.find_library('boost_coroutine', dirs : [boost_lib_dir]), \
cc.find_library('boost_date_time', dirs : [boost_lib_dir]), \
cc.find_library('boost_fiber', dirs : [boost_lib_dir]), \
cc.find_library('boost_fiber_numa', dirs : [boost_lib_dir]), \
cc.find_library('boost_filesystem', dirs : [boost_lib_dir]), \
cc.find_library('boost_graph', dirs : [boost_lib_dir]), \
cc.find_library('boost_iostreams', dirs : [boost_lib_dir]), \
cc.find_library('boost_json', dirs : [boost_lib_dir]), \
cc.find_library('boost_locale', dirs : [boost_lib_dir]), \
cc.find_library('boost_log', dirs : [boost_lib_dir]), \
cc.find_library('boost_log_setup', dirs : [boost_lib_dir]), \
cc.find_library('boost_nowide', dirs : [boost_lib_dir]), \
cc.find_library('boost_prg_exec_monitor', dirs : [boost_lib_dir]), \
cc.find_library('boost_process', dirs : [boost_lib_dir]), \
cc.find_library('boost_program_options', dirs : [boost_lib_dir]), \
cc.find_library('boost_random', dirs : [boost_lib_dir]), \
cc.find_library('boost_serialization', dirs : [boost_lib_dir]), \
cc.find_library('boost_stacktrace_addr2line', dirs : [boost_lib_dir]), \
cc.find_library('boost_stacktrace_backtrace', dirs : [boost_lib_dir]), \
cc.find_library('boost_stacktrace_basic', dirs : [boost_lib_dir]), \
cc.find_library('boost_stacktrace_from_exception', dirs : [boost_lib_dir]), \
cc.find_library('boost_stacktrace_noop', dirs : [boost_lib_dir]), \
cc.find_library('boost_test_exec_monitor', dirs : [boost_lib_dir]), \
cc.find_library('boost_thread', dirs : [boost_lib_dir]), \
cc.find_library('boost_timer', dirs : [boost_lib_dir]), \
cc.find_library('boost_type_erasure', dirs : [boost_lib_dir]), \
cc.find_library('boost_unit_test_framework', dirs : [boost_lib_dir]), \
cc.find_library('boost_url', dirs : [boost_lib_dir]), \
cc.find_library('boost_wave', dirs : [boost_lib_dir]), \
cc.find_library('boost_wserialization', dirs : [boost_lib_dir])], \
include_directories : include_directories('.build/boost/install/include/boost')
)

#boost_dep = dependency('boost', modules : ['DLL', 'Filesystem', 'Fiber'])
remaken = executable('remaken', 'src/backends/BackendGeneratorFactory.cpp', \
'src/backends/BazelGeneratorBackend.cpp', \
'src/backends/CMakeGeneratorBackend.cpp', \
'src/backends/JSONGeneratorBackend.cpp', \
'src/backends/QMakeGeneratorBackend.cpp', \
'src/backends/MesonGeneratorBackend.cpp', \
'src/commands/RemoteCommand.cpp', \
'src/commands/SearchCommand.cpp', \
'src/managers/BundleManager.cpp', \
'src/commands/BundleXpcfCommand.cpp', \
'src/commands/CleanCommand.cpp', \
'src/commands/ConfigureCommand.cpp', \
'src/commands/ListCommand.cpp', \
'src/managers/XpcfXmlManager.cpp', \
'src/tools/BrewSystemTool.cpp', \
'src/tools/ConanSystemTool.cpp', \
'src/tools/GitTool.cpp', \
'src/commands/InfoCommand.cpp', \
'src/commands/PackageCommand.cpp', \
'src/commands/InitCommand.cpp', \
'src/tools/NativeSystemTools.cpp', \
'src/tools/PkgConfigTool.cpp', \
'src/utils/DepUtils.cpp', \
'src/utils/OsUtils.cpp', \
'src/utils/PathBuilder.cpp', \
'src/commands/ProfileCommand.cpp', \
'src/commands/RunCommand.cpp', \
'src/tools/VCPKGSystemTool.cpp', \
'src/tools/ZipTool.cpp', \
'src/main.cpp', \
'src/Dependency.cpp', \
'src/managers/DependencyManager.cpp', \
'src/Constants.cpp', \
'src/CmdOptions.cpp', \
'src/Cache.cpp', \
'src/commands/InstallCommand.cpp', \
'src/commands/VersionCommand.cpp', \
'src/commands/AbstractCommand.cpp', \
'src/FileHandlerFactory.cpp', \
'src/retrievers/CredentialsFileRetriever.cpp', \
'src/retrievers/FSFileRetriever.cpp', \
'src/retrievers/HttpFileRetriever.cpp', \
'src/retrievers/AbstractFileRetriever.cpp', \
'src/HttpHandlerFactory.cpp', \
'src/retrievers/ConanFileRetriever.cpp', \
'src/retrievers/SystemFileRetriever.cpp', \
'src/tools/SystemTools.cpp', \
'src/commands/ParseCommand.cpp', \
'src/commands/BundleCommand.cpp', \
'src/tinyxml2.cpp', \
'src/tinyxmlhelper.cpp',
include_directories : incdir,
dependencies : [boost_dep, openssl_dep])
29 changes: 29 additions & 0 deletions meson_build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#!/bin/bash

if [ ! -d libs/boost ]; then
pushd libs
echo "Trying to clone boost from github"
git clone --recurse-submodules https://github.com/boostorg/boost
popd
fi

if [ ! -d libs/boost ]; then
echo "Error cloning boost from github - exiting"
exit
fi

echo "Building boost"
mkdir -p .build/boost/cmake
pushd .build/boost/cmake
cmake -DCMAKE_INSTALL_PREFIX=../install -DCMAKE_POSITION_INDEPENDENT_CODE=ON ../../../libs/boost
make
make install
popd

echo "Meson setup for remaken"
meson setup .build/remaken

echo "Building remaken"
pushd .build/remaken
meson compile
popd
1 change: 1 addition & 0 deletions remaken.pro
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ SOURCES += \
src/main.cpp \
src/Dependency.cpp \
src/managers/DependencyManager.cpp \
src/Constants.cpp \
src/CmdOptions.cpp \
src/Cache.cpp \
src/commands/InstallCommand.cpp \
Expand Down
11 changes: 11 additions & 0 deletions src/Constants.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#include "Constants.h"

bool copy_file_overwrite(fs::path const& from, fs::path const& to, boost::system::error_code* ec)
{
#if BOOST_VERSION >= 107400
fs::copy_file(from , to, fs::copy_options::overwrite_existing);
#else /* BOOST_VERSION */
fs::copy_file(from , to, fs::copy_option::overwrite_if_exists);
#endif /* BOOST_VERSION */
}

5 changes: 4 additions & 1 deletion src/Constants.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,8 @@ typedef enum {
pkg_config = 0x04,
json = 0x08,
make = 0x10,
bazel = 0x20
bazel = 0x20,
meson = 0x40
} GeneratorType;

typedef enum {
Expand Down Expand Up @@ -94,4 +95,6 @@ typename Range::const_iterator find(Range const& range, Value const& value)
return std::find(begin(range), end(range), value);
}

bool copy_file_overwrite(fs::path const& from, fs::path const& to, boost::system::error_code* ec = nullptr);

#endif // CONSTANTS_H
3 changes: 3 additions & 0 deletions src/backends/BackendGeneratorFactory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
#include "backends/CMakeGeneratorBackend.h"
#include "backends/JSONGeneratorBackend.h"
#include "backends/QMakeGeneratorBackend.h"
#include "backends/MesonGeneratorBackend.h"

namespace BackendGeneratorFactory {
std::shared_ptr<IGeneratorBackend> getGenerator(const CmdOptions & options)
Expand All @@ -38,6 +39,8 @@ std::shared_ptr<IGeneratorBackend> getGenerator(const CmdOptions & options)
break;
case GeneratorType::json: return std::make_shared<JSONGeneratorBackend>(options);
break;
case GeneratorType::meson: return std::make_shared<MesonGeneratorBackend>(options);
break;
default:
throw std::runtime_error("Generator not imnplemented - generator support coming in future releases");
break;
Expand Down
Loading