summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--icespider/compile/Jamfile.jam1
-rw-r--r--icespider/compile/main.cpp17
-rw-r--r--icespider/compile/routeCompiler.cpp2
-rw-r--r--icespider/compile/routeCompiler.h4
-rw-r--r--icespider/unittests/testCompile.cpp6
5 files changed, 23 insertions, 7 deletions
diff --git a/icespider/compile/Jamfile.jam b/icespider/compile/Jamfile.jam
index 5d31fb1..9e0636a 100644
--- a/icespider/compile/Jamfile.jam
+++ b/icespider/compile/Jamfile.jam
@@ -26,6 +26,7 @@ lib icespider-compile :
<library>boost_system
<library>boost_filesystem
<library>../common
+ <implicit-dependency>../common
;
exe icespider :
diff --git a/icespider/compile/main.cpp b/icespider/compile/main.cpp
index e96574e..6a8af6c 100644
--- a/icespider/compile/main.cpp
+++ b/icespider/compile/main.cpp
@@ -1,20 +1,35 @@
#include <boost/program_options.hpp>
+#include "routeCompiler.h"
+
namespace po = boost::program_options;
int
main(int c, char ** v)
{
- std::string input, output;
+ bool showHelp;
+ IceSpider::Compile::RouteCompiler rc;
+ boost::filesystem::path input, output;
po::options_description opts("IceSpider compile options");
opts.add_options()
("input", po::value(&input), "Input .json file")
("output", po::value(&output), "Output .cpp file")
+ ("include,I", po::value(&rc.searchPath)->composing(), "Search path")
+ ("help,h", po::value(&showHelp)->default_value(false)->zero_tokens(), "Help")
;
po::positional_options_description pod;
pod.add("input", 1).add("output", 2);
po::variables_map vm;
po::store(po::command_line_parser(c, v).options(opts).positional(pod).run(), vm);
po::notify(vm);
+
+ if (showHelp || input.empty() || output.empty()) {
+ std::cout << opts << std::endl;
+ return 1;
+ }
+
+ rc.searchPath.push_back(input.parent_path());
+ rc.compile(input, output);
+
return 0;
}
diff --git a/icespider/compile/routeCompiler.cpp b/icespider/compile/routeCompiler.cpp
index bce8095..177cd22 100644
--- a/icespider/compile/routeCompiler.cpp
+++ b/icespider/compile/routeCompiler.cpp
@@ -27,7 +27,7 @@ namespace IceSpider {
RouteCompiler::RouteCompiler()
{
- searchPath.insert(boost::filesystem::current_path());
+ searchPath.push_back(boost::filesystem::current_path());
}
UserIceSpider::RouteConfigurationPtr
diff --git a/icespider/compile/routeCompiler.h b/icespider/compile/routeCompiler.h
index 2ac1f4b..9d17675 100644
--- a/icespider/compile/routeCompiler.h
+++ b/icespider/compile/routeCompiler.h
@@ -3,7 +3,7 @@
#include <boost/filesystem/path.hpp>
#include <visibility.h>
-#include <set>
+#include <vector>
#include <routes.h>
#include <Slice/Parser.h>
#include <Ice/BuiltinSequences.h>
@@ -22,7 +22,7 @@ namespace IceSpider {
void applyDefaults(UserIceSpider::RouteConfigurationPtr, const Units & u) const;
void compile(const boost::filesystem::path & input, const boost::filesystem::path & output) const;
- std::set<boost::filesystem::path> searchPath;
+ std::vector<boost::filesystem::path> searchPath;
private:
void processConfiguration(FILE * output, UserIceSpider::RouteConfigurationPtr, const Units &) const;
diff --git a/icespider/unittests/testCompile.cpp b/icespider/unittests/testCompile.cpp
index c53fe65..d46a33d 100644
--- a/icespider/unittests/testCompile.cpp
+++ b/icespider/unittests/testCompile.cpp
@@ -22,7 +22,7 @@ BOOST_FIXTURE_TEST_SUITE(cf, CoreFixture)
BOOST_AUTO_TEST_CASE( testLoadConfiguration )
{
IceSpider::Compile::RouteCompiler rc;
- rc.searchPath.insert(rootDir);
+ rc.searchPath.push_back(rootDir);
auto cfg = rc.loadConfiguration(rootDir / "testRoutes.json");
auto u = rc.loadUnits(cfg);
rc.applyDefaults(cfg, u);
@@ -55,13 +55,13 @@ BOOST_AUTO_TEST_CASE( testLoadConfiguration )
BOOST_AUTO_TEST_CASE( testCompile )
{
IceSpider::Compile::RouteCompiler rc;
- rc.searchPath.insert(rootDir);
+ rc.searchPath.push_back(rootDir);
auto input = rootDir / "testRoutes.json";
auto output = binDir / "testRoutes.cpp";
auto outputso = boost::filesystem::change_extension(output, ".so");
auto libGenDir = (rootDir / "bin" / modeDir);
rc.compile(input, output);
-
+
auto compileCommand = boost::algorithm::join<std::vector<std::string>>({
"gcc", "-shared", "-std=c++1y", "-fPIC", " -fvisibility=hidden", "-O3", "-Wl,--warn-once,--gc-sections",
"-I", "/usr/include/adhocutil",