Add generate-compile-flags as argument
- generate-compile-flags (or shorthand gcf), will generate a compile_flags.txt file based on the makegen.xml configuration. - Fix IncludeDirExclDep not generating in the Makefile correctly
This commit is contained in:
@@ -1,2 +1,3 @@
|
||||
bin/*
|
||||
.ycm_extra_conf.py
|
||||
compile_flags.txt
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# This Makefile was generated using MakeGen v1.3.10 made by Tim Håkansson
|
||||
# This Makefile was generated using MakeGen v1.3.12 made by Tim Håkansson
|
||||
# and is licensed under MIT. Full source of the project can be found at
|
||||
# https://gitea.timha.se/Thraix/MakeGen
|
||||
CC=@g++
|
||||
@@ -7,7 +7,7 @@ MKDIR_P=mkdir -p
|
||||
BIN=bin/Release/
|
||||
OBJPATH=$(BIN)intermediates
|
||||
INCLUDES=
|
||||
OBJECTS=$(OBJPATH)/src/ConfigCLI.o $(OBJPATH)/src/ConfigFile.o $(OBJPATH)/src/HFileGen.o $(OBJPATH)/src/IncludeDeps.o $(OBJPATH)/src/Makefile.o $(OBJPATH)/src/Utils.o $(OBJPATH)/src/compatibility/ConfigFileConf.o $(OBJPATH)/src/main.o $(OBJPATH)/src/xml/XML.o $(OBJPATH)/src/xml/XMLObject.o
|
||||
OBJECTS=$(OBJPATH)/src/CompileFlags.o $(OBJPATH)/src/ConfigCLI.o $(OBJPATH)/src/ConfigFile.o $(OBJPATH)/src/HFileGen.o $(OBJPATH)/src/IncludeDeps.o $(OBJPATH)/src/Makefile.o $(OBJPATH)/src/Utils.o $(OBJPATH)/src/compatibility/ConfigFileConf.o $(OBJPATH)/src/main.o $(OBJPATH)/src/xml/XML.o $(OBJPATH)/src/xml/XMLObject.o
|
||||
CFLAGS=$(INCLUDES) -std=c++17 -c
|
||||
LIBDIR=
|
||||
LDFLAGS=
|
||||
@@ -34,29 +34,32 @@ $(OUTPUT): $(OBJECTS)
|
||||
install: all
|
||||
$(info Installing MakeGen to /usr/bin/)
|
||||
@cp $(OUTPUT) /usr/bin/makegen
|
||||
$(OBJPATH)/src/CompileFlags.o: src/CompileFlags.cpp src/CompileFlags.h src/ConfigFile.h src/ConfigUtils.h src/Common.h src/AssertException.h src/Dependency.h src/FlagData.h src/xml/XMLObject.h
|
||||
$(info -[9%]- $<)
|
||||
$(CC) $(CFLAGS) -o $@ $<
|
||||
$(OBJPATH)/src/ConfigCLI.o: src/ConfigCLI.cpp src/Common.h src/AssertException.h src/ConfigCLI.h src/ConfigFile.h src/ConfigUtils.h src/Dependency.h src/FlagData.h src/xml/XMLObject.h src/FileUtils.h src/Utils.h
|
||||
$(info -[10%]- $<)
|
||||
$(info -[18%]- $<)
|
||||
$(CC) $(CFLAGS) -o $@ $<
|
||||
$(OBJPATH)/src/ConfigFile.o: src/ConfigFile.cpp src/ConfigFile.h src/ConfigUtils.h src/Common.h src/AssertException.h src/Dependency.h src/FlagData.h src/xml/XMLObject.h src/FileUtils.h src/Utils.h src/compatibility/ConfigFileConf.h src/xml/XML.h
|
||||
$(info -[20%]- $<)
|
||||
$(info -[27%]- $<)
|
||||
$(CC) $(CFLAGS) -o $@ $<
|
||||
$(OBJPATH)/src/HFileGen.o: src/HFileGen.cpp src/FileUtils.h src/Common.h src/AssertException.h src/Utils.h src/HFileGen.h src/ConfigFile.h src/ConfigUtils.h src/Dependency.h src/FlagData.h src/xml/XMLObject.h
|
||||
$(info -[30%]- $<)
|
||||
$(info -[36%]- $<)
|
||||
$(CC) $(CFLAGS) -o $@ $<
|
||||
$(OBJPATH)/src/IncludeDeps.o: src/IncludeDeps.cpp src/Common.h src/AssertException.h src/IncludeDeps.h src/ConfigFile.h src/ConfigUtils.h src/Dependency.h src/FlagData.h src/xml/XMLObject.h src/FileUtils.h src/Utils.h
|
||||
$(info -[40%]- $<)
|
||||
$(info -[45%]- $<)
|
||||
$(CC) $(CFLAGS) -o $@ $<
|
||||
$(OBJPATH)/src/Makefile.o: src/Makefile.cpp src/Common.h src/AssertException.h src/IncludeDeps.h src/ConfigFile.h src/ConfigUtils.h src/Dependency.h src/FlagData.h src/xml/XMLObject.h src/FileUtils.h src/Utils.h src/Makefile.h
|
||||
$(info -[50%]- $<)
|
||||
$(info -[54%]- $<)
|
||||
$(CC) $(CFLAGS) -o $@ $<
|
||||
$(OBJPATH)/src/Utils.o: src/Utils.cpp src/ConfigFile.h src/ConfigUtils.h src/Common.h src/AssertException.h src/Dependency.h src/FlagData.h src/xml/XMLObject.h src/FileUtils.h src/Utils.h
|
||||
$(info -[60%]- $<)
|
||||
$(info -[63%]- $<)
|
||||
$(CC) $(CFLAGS) -o $@ $<
|
||||
$(OBJPATH)/src/compatibility/ConfigFileConf.o: src/compatibility/ConfigFileConf.cpp src/Common.h src/AssertException.h src/xml/XMLObject.h src/compatibility/ConfigFileConf.h
|
||||
$(info -[70%]- $<)
|
||||
$(info -[72%]- $<)
|
||||
$(CC) $(CFLAGS) -o $@ $<
|
||||
$(OBJPATH)/src/main.o: src/main.cpp src/Common.h src/AssertException.h src/ConfigCLI.h src/ConfigFile.h src/ConfigUtils.h src/Dependency.h src/FlagData.h src/xml/XMLObject.h src/HFileGen.h src/Makefile.h src/Timer.h src/Utils.h
|
||||
$(info -[80%]- $<)
|
||||
$(OBJPATH)/src/main.o: src/main.cpp src/Common.h src/AssertException.h src/CompileFlags.h src/ConfigFile.h src/ConfigUtils.h src/Dependency.h src/FlagData.h src/xml/XMLObject.h src/ConfigCLI.h src/HFileGen.h src/Makefile.h src/Timer.h src/Utils.h
|
||||
$(info -[81%]- $<)
|
||||
$(CC) $(CFLAGS) -o $@ $<
|
||||
$(OBJPATH)/src/xml/XML.o: src/xml/XML.cpp src/xml/XML.h src/xml/XMLObject.h src/xml/XMLException.h
|
||||
$(info -[90%]- $<)
|
||||
|
||||
+2
-1
@@ -16,7 +16,7 @@
|
||||
// Release, should be backwards compatible with any minor version
|
||||
#define MAKEGEN_VERSION_RELEASE 3
|
||||
// Minor changes, generally bug fixes
|
||||
#define MAKEGEN_VERSION_MINOR 11
|
||||
#define MAKEGEN_VERSION_MINOR 12
|
||||
|
||||
#define MAKEGEN_VERSION ("v" STR(MAKEGEN_VERSION_MAJOR) "." STR(MAKEGEN_VERSION_RELEASE) "." STR(MAKEGEN_VERSION_MINOR))
|
||||
|
||||
@@ -32,6 +32,7 @@ const static unsigned int FLAG_DEPENDENCY = BIT(8);
|
||||
const static unsigned int FLAG_SIMPLE = BIT(9);
|
||||
const static unsigned int FLAG_CONFIG = BIT(10);
|
||||
const static unsigned int FLAG_TARGET = BIT(11);
|
||||
const static unsigned int FLAG_GEN_COMP_FLAGS = BIT(12);
|
||||
|
||||
#define LOG_INFO(...) LogHelper(__VA_ARGS__)
|
||||
#define LOG_WARNING(...) LogHelper(__VA_ARGS__)
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
#include "CompileFlags.h"
|
||||
|
||||
#include <fstream>
|
||||
|
||||
void CompileFlags::Save(ConfigFile& conf)
|
||||
{
|
||||
std::ofstream file{"compile_flags.txt"};
|
||||
file << "-xc++" << std::endl;
|
||||
file << "-std=" << conf.GetCppVersion() << std::endl;
|
||||
|
||||
const std::vector<std::string>& includeDirs = conf.GetIncludeDirs();
|
||||
for (const auto& includeDir : includeDirs)
|
||||
{
|
||||
file << "-I" << includeDir << std::endl;
|
||||
}
|
||||
|
||||
const std::vector<std::string>& includeDirExclDeps = conf.GetIncludeDirExclDeps();
|
||||
for (const auto& includeDirExclDep : includeDirExclDeps)
|
||||
{
|
||||
file << "-I" << includeDirExclDep << std::endl;
|
||||
}
|
||||
|
||||
const std::vector<std::string>& defines = conf.GetDefines();
|
||||
for (const auto& defines : defines)
|
||||
{
|
||||
file << "-D" << defines << std::endl;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
#pragma once
|
||||
|
||||
#include "ConfigFile.h"
|
||||
|
||||
class CompileFlags
|
||||
{
|
||||
public:
|
||||
static void Save(ConfigFile& conf);
|
||||
};
|
||||
@@ -78,6 +78,7 @@ void ConfigFile::Init(const FlagData& flagData)
|
||||
InitOptionalDir(sourceDir);
|
||||
InitDirs(libraryDirs);
|
||||
InitDirs(includeDirs);
|
||||
InitDirs(includeDirExclDeps);
|
||||
}
|
||||
|
||||
void ConfigFile::InitTarget(const FlagData& flagData)
|
||||
|
||||
+1
-1
@@ -46,7 +46,7 @@ void Makefile::Save(ConfigFile& conf, unsigned int flags)
|
||||
const std::vector<std::string>& includeDirExclDeps = conf.GetIncludeDirExclDeps();
|
||||
for (const auto& includeDirExclDep : includeDirExclDeps)
|
||||
{
|
||||
outputFile << "-I " << includeDirExclDeps << " ";
|
||||
outputFile << "-I " << includeDirExclDep << " ";
|
||||
}
|
||||
outputFile << std::endl;
|
||||
outputFile << "OBJECTS=";
|
||||
|
||||
+18
-7
@@ -5,6 +5,7 @@
|
||||
#include <thread>
|
||||
|
||||
#include "Common.h"
|
||||
#include "CompileFlags.h"
|
||||
#include "ConfigCLI.h"
|
||||
#include "ConfigFile.h"
|
||||
#include "FlagData.h"
|
||||
@@ -44,6 +45,8 @@ Usage: makegen [options]
|
||||
(no --jobs=X flag)
|
||||
--simple Creates a simple Makefile without include dependencies
|
||||
--target=<target> Run the makegen.xml file with the specified target
|
||||
gcf, generate-compile-flags
|
||||
Generates a Makefile and runs
|
||||
|
||||
If no option is given it will run "make all"
|
||||
|
||||
@@ -103,6 +106,10 @@ FlagData ReadFlags(int argc, char** argv)
|
||||
{
|
||||
flagData.flags |= FLAG_SINGLE_THREAD;
|
||||
}
|
||||
else if (flag == "gcf" || flag == "generate-compile-flags")
|
||||
{
|
||||
flagData.flags |= FLAG_GEN_COMP_FLAGS;
|
||||
}
|
||||
else if (flag == "--simple")
|
||||
{
|
||||
flagData.flags |= FLAG_SIMPLE;
|
||||
@@ -204,20 +211,24 @@ int Run(int argc, char** argv)
|
||||
{
|
||||
return ConfigCLI::Main(argc - 1, &argv[1]);
|
||||
}
|
||||
std::map<std::string, ConfigFile> files{};
|
||||
|
||||
auto conf = ConfigFile::GetConfigFile("./", flagData);
|
||||
if (conf)
|
||||
{
|
||||
bool success = MakeGen("./", flagData, *conf);
|
||||
return success ? 0 : 1;
|
||||
}
|
||||
else
|
||||
if (!conf.has_value())
|
||||
{
|
||||
LOG_ERROR("Couldn\'t load config file");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (flagData.flags & FLAG_GEN_COMP_FLAGS)
|
||||
{
|
||||
CompileFlags::Save(conf.value());
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool success = MakeGen("./", flagData, conf.value());
|
||||
return success ? 0 : 1;
|
||||
}
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
try
|
||||
|
||||
Reference in New Issue
Block a user