Fix makegen creating Makefile if no config exist
This commit is contained in:
+1
-1
@@ -12,7 +12,7 @@
|
||||
// Release , should be backwards compatible with any minor version
|
||||
#define MAKEGEN_VERSION_RELEASE 0
|
||||
// Minor changes, should be compatible with any other minor version with same major and release.
|
||||
#define MAKEGEN_VERSION_MINOR 8
|
||||
#define MAKEGEN_VERSION_MINOR 9
|
||||
#define MAKEGEN_VERSION ("v" STR(MAKEGEN_VERSION_MAJOR) "." STR(MAKEGEN_VERSION_RELEASE) "." STR(MAKEGEN_VERSION_MINOR))
|
||||
|
||||
const static unsigned int FLAG_HELP = BIT(0);
|
||||
|
||||
+81
-78
@@ -13,7 +13,7 @@ ConfigFile::ConfigFile()
|
||||
|
||||
}
|
||||
|
||||
ConfigFile ConfigFile::Load()
|
||||
ConfigFile ConfigFile::Load(const std::string& filename)
|
||||
{
|
||||
ConfigFile conf;
|
||||
unsigned int loadFlag = 0;
|
||||
@@ -22,94 +22,97 @@ ConfigFile ConfigFile::Load()
|
||||
std::string* s;
|
||||
bool* b;
|
||||
|
||||
std::ifstream file("makegen.conf");
|
||||
std::ifstream file(filename);
|
||||
std::string line;
|
||||
|
||||
while(std::getline(file,line))
|
||||
if(file.is_open())
|
||||
{
|
||||
if(line[0]=='#')
|
||||
while(std::getline(file,line))
|
||||
{
|
||||
if(line == "#libs")
|
||||
if(line[0]=='#')
|
||||
{
|
||||
vec = &conf.libs;
|
||||
loadFlag = FLAG_VECTOR;
|
||||
}
|
||||
else if(line == "#libdirs")
|
||||
{
|
||||
vec = &conf.libdirs;
|
||||
loadFlag = FLAG_VECTOR;
|
||||
}
|
||||
else if(line == "#includedirs")
|
||||
{
|
||||
vec = &conf.includedirs;
|
||||
loadFlag = FLAG_VECTOR;
|
||||
}
|
||||
else if(line == "#compileflags")
|
||||
{
|
||||
vec = &conf.flags;
|
||||
loadFlag = FLAG_VECTOR;
|
||||
}
|
||||
else if(line == "#srcdirs")
|
||||
{
|
||||
vec = &conf.srcdirs;
|
||||
loadFlag = FLAG_VECTOR;
|
||||
}
|
||||
else if(line == "#defines")
|
||||
{
|
||||
vec = &conf.defines;
|
||||
loadFlag = FLAG_VECTOR;
|
||||
}
|
||||
else if(line == "#outputdir")
|
||||
{
|
||||
s = &conf.outputdir;
|
||||
loadFlag = FLAG_STRING;
|
||||
}
|
||||
else if(line == "#outputname")
|
||||
{
|
||||
s = &conf.outputname;
|
||||
loadFlag = FLAG_STRING;
|
||||
}
|
||||
else if(line == "#projectname")
|
||||
{
|
||||
s = &conf.projectname;
|
||||
loadFlag = FLAG_STRING;
|
||||
}
|
||||
else if(line == "#executable")
|
||||
{
|
||||
b = &conf.executable;
|
||||
loadFlag = FLAG_BOOL;
|
||||
}
|
||||
else if(line == "#shared")
|
||||
{
|
||||
b = &conf.shared;
|
||||
loadFlag = FLAG_BOOL;
|
||||
if(line == "#libs")
|
||||
{
|
||||
vec = &conf.libs;
|
||||
loadFlag = FLAG_VECTOR;
|
||||
}
|
||||
else if(line == "#libdirs")
|
||||
{
|
||||
vec = &conf.libdirs;
|
||||
loadFlag = FLAG_VECTOR;
|
||||
}
|
||||
else if(line == "#includedirs")
|
||||
{
|
||||
vec = &conf.includedirs;
|
||||
loadFlag = FLAG_VECTOR;
|
||||
}
|
||||
else if(line == "#compileflags")
|
||||
{
|
||||
vec = &conf.flags;
|
||||
loadFlag = FLAG_VECTOR;
|
||||
}
|
||||
else if(line == "#srcdirs")
|
||||
{
|
||||
vec = &conf.srcdirs;
|
||||
loadFlag = FLAG_VECTOR;
|
||||
}
|
||||
else if(line == "#defines")
|
||||
{
|
||||
vec = &conf.defines;
|
||||
loadFlag = FLAG_VECTOR;
|
||||
}
|
||||
else if(line == "#outputdir")
|
||||
{
|
||||
s = &conf.outputdir;
|
||||
loadFlag = FLAG_STRING;
|
||||
}
|
||||
else if(line == "#outputname")
|
||||
{
|
||||
s = &conf.outputname;
|
||||
loadFlag = FLAG_STRING;
|
||||
}
|
||||
else if(line == "#projectname")
|
||||
{
|
||||
s = &conf.projectname;
|
||||
loadFlag = FLAG_STRING;
|
||||
}
|
||||
else if(line == "#executable")
|
||||
{
|
||||
b = &conf.executable;
|
||||
loadFlag = FLAG_BOOL;
|
||||
}
|
||||
else if(line == "#shared")
|
||||
{
|
||||
b = &conf.shared;
|
||||
loadFlag = FLAG_BOOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG_ERROR("Invalid flag: ", line);
|
||||
loadFlag = FLAG_NONE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG_ERROR("Invalid flag: ", line);
|
||||
loadFlag = FLAG_NONE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(loadFlag == FLAG_STRING)
|
||||
{
|
||||
*s = line;
|
||||
}
|
||||
else if(loadFlag == FLAG_VECTOR)
|
||||
{
|
||||
vec->push_back(line);
|
||||
}
|
||||
else if(loadFlag == FLAG_BOOL)
|
||||
{
|
||||
if(line == "true")
|
||||
*b = true;
|
||||
else
|
||||
*b = false;
|
||||
if(loadFlag == FLAG_STRING)
|
||||
{
|
||||
*s = line;
|
||||
}
|
||||
else if(loadFlag == FLAG_VECTOR)
|
||||
{
|
||||
vec->push_back(line);
|
||||
}
|
||||
else if(loadFlag == FLAG_BOOL)
|
||||
{
|
||||
if(line == "true")
|
||||
*b = true;
|
||||
else
|
||||
*b = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return conf;
|
||||
}
|
||||
return conf;
|
||||
}
|
||||
|
||||
void ConfigFile::InputMultiple(const std::string& inputText, std::vector<std::string>& vec, bool needEnding)
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@ class ConfigFile
|
||||
ConfigFile();
|
||||
void Save() const;
|
||||
static ConfigFile Gen();
|
||||
static ConfigFile Load();
|
||||
static ConfigFile Load(const std::string& filename);
|
||||
private:
|
||||
static void InputMultiple(const std::string& inputText, std::vector<std::string>& vec, bool needEnding);
|
||||
};
|
||||
|
||||
+35
-14
@@ -11,10 +11,38 @@
|
||||
#include "Makefile.h"
|
||||
#include "Timer.h"
|
||||
|
||||
void GenMakefile()
|
||||
void PrintHelp()
|
||||
{
|
||||
ConfigFile conf = ConfigFile::Load();
|
||||
Makefile::Save(conf);
|
||||
LOG_INFO("Usage: makegen [options]");
|
||||
LOG_INFO(" Options:");
|
||||
LOG_INFO(" --help\tDisplays this information");
|
||||
LOG_INFO(" --conf\tGenerate a config file for the project");
|
||||
LOG_INFO(" --version\tDisplays the version of this program");
|
||||
LOG_INFO(" install\tGenerates a Makefile and runs make install");
|
||||
LOG_INFO(" clean\t\tGenerates a Makefile and runs make clean");
|
||||
LOG_INFO(" rebuild\tGenerates a Makefile and runs make rebuild");
|
||||
LOG_INFO(" If no option is given it will run default make");
|
||||
}
|
||||
|
||||
bool GenMakefile()
|
||||
{
|
||||
std::ifstream f("makegen.conf");
|
||||
if(f.good())
|
||||
{
|
||||
ConfigFile conf = ConfigFile::Load("makegen.conf");
|
||||
Makefile::Save(conf);
|
||||
return true;
|
||||
}
|
||||
f.close();
|
||||
f = std::ifstream("Makefile");
|
||||
|
||||
if(!f.good())
|
||||
{
|
||||
LOG_ERROR("No makegen.conf or Makefile found.");
|
||||
PrintHelp();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
unsigned int ReadFlags(int argc, char** argv)
|
||||
@@ -50,15 +78,7 @@ int main(int argc, char** argv)
|
||||
unsigned int flags = ReadFlags(argc,argv);
|
||||
if(flags & FLAG_HELP)
|
||||
{
|
||||
LOG_INFO("Usage: makegen [options]");
|
||||
LOG_INFO(" Options:");
|
||||
LOG_INFO(" --help\tDisplays this information");
|
||||
LOG_INFO(" --conf\tGenerate a config file for the project");
|
||||
LOG_INFO(" --version\tDisplays the version of this program");
|
||||
LOG_INFO(" install\tGenerates a Makefile and runs make install");
|
||||
LOG_INFO(" clean\t\tGenerates a Makefile and runs make clean");
|
||||
LOG_INFO(" rebuild\tGenerates a Makefile and runs make rebuild");
|
||||
LOG_INFO(" If no option is given it will generate a Makefile and run default make");
|
||||
PrintHelp();
|
||||
return 0;
|
||||
}
|
||||
if(flags & FLAG_VERSION)
|
||||
@@ -73,7 +93,8 @@ int main(int argc, char** argv)
|
||||
}
|
||||
LOG_INFO("Generating Makefile...");
|
||||
Timer timer;
|
||||
GenMakefile();
|
||||
if(!GenMakefile())
|
||||
return 1;
|
||||
LOG_INFO("Took ", round(timer.Elapsed()*1000.0)/1000.0,"s");
|
||||
LOG_INFO("Running Makefile...");
|
||||
for(int i = 1;i<argc;i++)
|
||||
@@ -87,6 +108,6 @@ int main(int argc, char** argv)
|
||||
}
|
||||
|
||||
system("make");
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user