diff options
| -rw-r--r-- | icespider/compile/Jamfile.jam | 1 | ||||
| -rw-r--r-- | icespider/compile/main.cpp | 17 | ||||
| -rw-r--r-- | icespider/compile/routeCompiler.cpp | 2 | ||||
| -rw-r--r-- | icespider/compile/routeCompiler.h | 4 | ||||
| -rw-r--r-- | icespider/unittests/testCompile.cpp | 6 | 
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", | 
