Change Makefile to allow another external library to be used instead of bundled one.
E.g. make TINYXML="-ltinyxml" can be used to compile with libtinyxml-dev instead of externals/tinyxml (but won't compile yet, because of #include "tinyxml/tinyxml.h" in the code).
This commit is contained in:
parent
2684b230f1
commit
73e746cfd8
6
Makefile
6
Makefile
|
@ -92,12 +92,16 @@ TESTOBJ = test/options.o \
|
||||||
test/testunusedprivfunc.o \
|
test/testunusedprivfunc.o \
|
||||||
test/testunusedvar.o
|
test/testunusedvar.o
|
||||||
|
|
||||||
EXTOBJ = externals/tinyxml/tinystr.o \
|
#ifndef TINYXML
|
||||||
|
TINYXML = externals/tinyxml/tinystr.o \
|
||||||
externals/tinyxml/tinyxml.o \
|
externals/tinyxml/tinyxml.o \
|
||||||
externals/tinyxml/tinyxmlerror.o \
|
externals/tinyxml/tinyxmlerror.o \
|
||||||
externals/tinyxml/tinyxmlparser.o
|
externals/tinyxml/tinyxmlparser.o
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
EXTOBJ += $(TINYXML)
|
||||||
|
|
||||||
###### Targets
|
###### Targets
|
||||||
|
|
||||||
cppcheck: $(LIBOBJ) $(CLIOBJ) $(EXTOBJ)
|
cppcheck: $(LIBOBJ) $(CLIOBJ) $(EXTOBJ)
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <sstream>
|
||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
#include "../cli/fileLister_win32.h"
|
#include "../cli/fileLister_win32.h"
|
||||||
|
@ -107,6 +108,52 @@ static void makeConditionalVariable(std::ostream &os, const std::string &variabl
|
||||||
<< "\n";
|
<< "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static std::string getLibName(const std::string &path)
|
||||||
|
{
|
||||||
|
// path can be e.g. "externals/foo/foo.cpp" then returned
|
||||||
|
// library name is "FOO".
|
||||||
|
std::string libName = path.substr(path.find('/')+1);
|
||||||
|
libName = libName.substr(0, libName.find('/'));
|
||||||
|
std::transform(libName.begin(), libName.end(),libName.begin(), ::toupper);
|
||||||
|
return libName;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void makeExtObj(std::ostream &fout, const std::vector<std::string> &externalfiles)
|
||||||
|
{
|
||||||
|
bool start = true;
|
||||||
|
std::ostringstream libNames;
|
||||||
|
std::string libName;
|
||||||
|
for (unsigned int i = 0; i < externalfiles.size(); ++i)
|
||||||
|
{
|
||||||
|
if (start)
|
||||||
|
{
|
||||||
|
libName = getLibName(externalfiles[i]);
|
||||||
|
fout << "#ifndef " << libName << std::endl;
|
||||||
|
fout << " " << libName << " = " << objfile(externalfiles[i]);
|
||||||
|
libNames << "EXTOBJ += $(" << libName << ")" << std::endl;
|
||||||
|
start = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fout << std::string(14, ' ') << objfile(externalfiles[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i+1 >= externalfiles.size() || libName != getLibName(externalfiles[i+1]))
|
||||||
|
{
|
||||||
|
// This was the last file for this library
|
||||||
|
fout << std::endl << "#endif" << std::endl;
|
||||||
|
fout << "\n\n";
|
||||||
|
start = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// There are more files for this library
|
||||||
|
fout << " \\" << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fout << libNames.str();
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
@ -220,11 +267,8 @@ int main(int argc, char **argv)
|
||||||
for (unsigned int i = 1; i < testfiles.size(); ++i)
|
for (unsigned int i = 1; i < testfiles.size(); ++i)
|
||||||
fout << " \\" << std::endl << std::string(14, ' ') << objfile(testfiles[i]);
|
fout << " \\" << std::endl << std::string(14, ' ') << objfile(testfiles[i]);
|
||||||
fout << "\n\n";
|
fout << "\n\n";
|
||||||
fout << "EXTOBJ = " << objfile(externalfiles[0]);
|
|
||||||
for (unsigned int i = 1; i < externalfiles.size(); ++i)
|
|
||||||
fout << " \\" << std::endl << std::string(14, ' ') << objfile(externalfiles[i]);
|
|
||||||
fout << "\n\n";
|
|
||||||
|
|
||||||
|
makeExtObj(fout, externalfiles);
|
||||||
|
|
||||||
fout << "\n###### Targets\n\n";
|
fout << "\n###### Targets\n\n";
|
||||||
fout << "cppcheck: $(LIBOBJ) $(CLIOBJ) $(EXTOBJ)\n";
|
fout << "cppcheck: $(LIBOBJ) $(CLIOBJ) $(EXTOBJ)\n";
|
||||||
|
|
Loading…
Reference in New Issue