mirror of
https://github.com/Relintai/osxcross.git
synced 2025-03-09 07:46:59 +01:00
misc fixes
This commit is contained in:
parent
0d9ba01d5b
commit
a34ce76854
@ -9,7 +9,7 @@ OSXCROSS_LINKER_VERSION ?= 134.9
|
||||
OSXCROSS_LIBLTO_PATH ?=
|
||||
OSXCROSS_CXXFLAGS ?=
|
||||
|
||||
override CXXFLAGS=-std=c++0x -Wall -Wextra -pedantic -I. -O$(OPTIMIZE)
|
||||
override CXXFLAGS=-std=c++0x -Wall -Wextra -pedantic -I. -O$(OPTIMIZE) -g
|
||||
|
||||
ifeq ($(LTO), 1)
|
||||
override CXXFLAGS+=-flto
|
||||
|
@ -92,10 +92,10 @@ function compile_wrapper()
|
||||
export PLATFORM
|
||||
export CXX
|
||||
|
||||
verbose_cmd make clean
|
||||
verbose_cmd $MAKE clean
|
||||
|
||||
OSXCROSS_CXXFLAGS="$FLAGS" \
|
||||
verbose_cmd make wrapper -j$JOBS
|
||||
verbose_cmd $MAKE wrapper -j$JOBS
|
||||
}
|
||||
|
||||
compile_wrapper
|
||||
|
@ -85,7 +85,7 @@ bool detectTarget(int argc, char **argv, Target &target) {
|
||||
val = argv[++i];
|
||||
|
||||
if (i >= argc) {
|
||||
std::cerr << "missing argument for '" << val << "'" << std::endl;
|
||||
std::cerr << "missing argument for '" << flag << "'" << std::endl;
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
@ -380,9 +380,8 @@ bool detectTarget(int argc, char **argv, Target &target) {
|
||||
else
|
||||
return false;
|
||||
|
||||
if (const char *p = strchr(cmd, '-')) {
|
||||
if (const char *p = strchr(cmd, '-'))
|
||||
target.compiler = &cmd[p - cmd + 1];
|
||||
}
|
||||
|
||||
if (!parseArgs())
|
||||
return false;
|
||||
@ -397,8 +396,8 @@ bool detectTarget(int argc, char **argv, Target &target) {
|
||||
// and clang + -oc-use-gcc-libs
|
||||
//
|
||||
|
||||
void generateMultiArchObjectFile(int &rc, int argc, char **argv, Target &target,
|
||||
int debug) {
|
||||
void generateMultiArchObjectFile(int &rc, int argc, char **argv,
|
||||
Target &target, int debug) {
|
||||
#ifndef _WIN32
|
||||
std::string stdintmpfile;
|
||||
string_vector objs;
|
||||
@ -705,13 +704,11 @@ int main(int argc, char **argv) {
|
||||
cargs = new char *[target.fargs.size() + target.args.size() + 1];
|
||||
size_t i = 0;
|
||||
|
||||
for (auto &arg : target.fargs) {
|
||||
for (auto &arg : target.fargs)
|
||||
cargs[i++] = const_cast<char *>(arg.c_str());
|
||||
}
|
||||
|
||||
for (auto &arg : target.args) {
|
||||
for (auto &arg : target.args)
|
||||
cargs[i++] = const_cast<char *>(arg.c_str());
|
||||
}
|
||||
|
||||
cargs[i] = nullptr;
|
||||
}
|
||||
|
18
wrapper/programs/osxcross-conf.cpp
Normal file → Executable file
18
wrapper/programs/osxcross-conf.cpp
Normal file → Executable file
@ -43,23 +43,29 @@ int conf(const Target &target) {
|
||||
if (!ltopath)
|
||||
ltopath = "";
|
||||
|
||||
std::cout << "export OSXCROSS_VERSION=" << getOSXCrossVersion() << std::endl;
|
||||
std::cout << "export OSXCROSS_VERSION=" << getOSXCrossVersion()
|
||||
<< std::endl;
|
||||
std::cout << "export OSXCROSS_OSX_VERSION_MIN=" << OSXVersionMin.shortStr()
|
||||
<< std::endl;
|
||||
std::cout << "export OSXCROSS_TARGET=" << getDefaultTarget() << std::endl;
|
||||
std::cout << "export OSXCROSS_SDK_VERSION=" << target.getSDKOSNum().shortStr()
|
||||
<< std::endl;
|
||||
std::cout << "export OSXCROSS_SDK=" << sdkpath << std::endl;
|
||||
std::cout << "export OSXCROSS_SDK=" << sdkpath
|
||||
<< std::endl;
|
||||
std::cout << "export OSXCROSS_TARBALL_DIR=" << target.execpath
|
||||
<< "/../../tarballs" << std::endl;
|
||||
<< "/../../tarballs"
|
||||
<< std::endl;
|
||||
std::cout << "export OSXCROSS_PATCH_DIR=" << target.execpath
|
||||
<< "/../../patches" << std::endl;
|
||||
<< "/../../patches"
|
||||
<< std::endl;
|
||||
std::cout << "export OSXCROSS_TARGET_DIR=" << target.execpath << "/.."
|
||||
<< std::endl;
|
||||
std::cout << "export OSXCROSS_BUILD_DIR=" << target.execpath << "/../../build"
|
||||
<< std::endl;
|
||||
std::cout << "export OSXCROSS_CCTOOLS_PATH=" << target.execpath << std::endl;
|
||||
std::cout << "export OSXCROSS_LIBLTO_PATH=" << ltopath << std::endl;
|
||||
std::cout << "export OSXCROSS_CCTOOLS_PATH=" << target.execpath
|
||||
<< std::endl;
|
||||
std::cout << "export OSXCROSS_LIBLTO_PATH=" << ltopath
|
||||
<< std::endl;
|
||||
std::cout << "export OSXCROSS_LINKER_VERSION=" << getLinkerVersion()
|
||||
<< std::endl;
|
||||
|
||||
|
@ -41,9 +41,9 @@ int env(int argc, char **argv) {
|
||||
|
||||
// TODO: escape?
|
||||
|
||||
auto check = [](const char * p, const char * desc)->const char * {
|
||||
auto containsBadChars = [](const char * p, const char * desc)->bool {
|
||||
if (!p)
|
||||
return nullptr;
|
||||
return false;
|
||||
|
||||
const char *pp = p;
|
||||
|
||||
@ -52,7 +52,7 @@ int env(int argc, char **argv) {
|
||||
std::cerr << desc << " should not contain '" << *p << "'" << std::endl;
|
||||
|
||||
const char *start =
|
||||
p - std::min(static_cast<size_t>(p - pp), static_cast<size_t>(30));
|
||||
p - std::min(static_cast<size_t>(p - pp), static_cast<size_t>(30));
|
||||
|
||||
size_t len = std::min(strlen(start), static_cast<size_t>(60));
|
||||
std::cerr << std::string(start, len) << std::endl;
|
||||
@ -69,10 +69,10 @@ int env(int argc, char **argv) {
|
||||
case ' ':
|
||||
case ';':
|
||||
badChar(p);
|
||||
return nullptr;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return pp;
|
||||
return false;
|
||||
};
|
||||
|
||||
if (argc <= 1) {
|
||||
@ -83,8 +83,8 @@ int env(int argc, char **argv) {
|
||||
<< std::endl << "please use " << std::endl << std::endl
|
||||
<< "setenv PATH `" << epath << "/osxcross-env -v=PATH`"
|
||||
<< std::endl << "setenv LD_LIBRARY_PATH `" << epath
|
||||
<< "/osxcross-env -v=LD_LIBRARY_PATH`" << std::endl << std::endl
|
||||
<< "instead." << std::endl << std::endl;
|
||||
<< "/osxcross-env -v=LD_LIBRARY_PATH`" << std::endl
|
||||
<< std::endl << "instead." << std::endl << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
@ -127,8 +127,9 @@ int env(int argc, char **argv) {
|
||||
return ((hasPathSeparator && (check(0) || check(1))) || check(-1));
|
||||
};
|
||||
|
||||
if (!check(oldpath, "PATH") || !check(oldlibpath, "LD_LIBRARY_PATH") ||
|
||||
!check(ltopath, "LIB LTO PATH"))
|
||||
if (containsBadChars(oldpath, "PATH") ||
|
||||
containsBadChars(oldlibpath, "LD_LIBRARY_PATH") ||
|
||||
containsBadChars(ltopath, "LIB LTO PATH"))
|
||||
return 1;
|
||||
|
||||
std::stringstream path;
|
||||
|
@ -107,10 +107,13 @@ struct Target {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool isClang() const { return !compiler.compare(0, 4, "clang", 4); }
|
||||
bool isClang() const {
|
||||
return !strncmp(getFileName(compiler.c_str()), "clang", 5);
|
||||
}
|
||||
|
||||
bool isGCC() const {
|
||||
return !compiler.compare(0, 3, "gcc") || !compiler.compare(0, 3, "g++");
|
||||
const char *c = getFileName(compiler.c_str());
|
||||
return (!strncmp(c, "gcc", 3) || !strncmp(c, "g++", 3));
|
||||
}
|
||||
|
||||
bool isKnownCompiler() const { return isClang() || isGCC(); }
|
||||
|
@ -82,8 +82,8 @@ char *getExecutablePath(char *buf, size_t len) {
|
||||
if (l <= 0)
|
||||
return nullptr;
|
||||
buf[len - 1] = '\0';
|
||||
p = strrchr(buf, '/');
|
||||
if (*p) {
|
||||
p = strrchr(buf, PATHDIV);
|
||||
if (p) {
|
||||
*p = '\0';
|
||||
}
|
||||
return buf;
|
||||
@ -328,9 +328,8 @@ std::string &realPath(const char *file, std::string &result, realpathcmp cmp) {
|
||||
sfile += "/";
|
||||
sfile += file;
|
||||
|
||||
if (!stat(sfile.c_str(), &st) && (!cmp || cmp(sfile.c_str(), st))) {
|
||||
if (!stat(sfile.c_str(), &st) && (!cmp || cmp(sfile.c_str(), st)))
|
||||
break;
|
||||
}
|
||||
|
||||
sfile.clear();
|
||||
} while (*p);
|
||||
@ -340,9 +339,8 @@ std::string &realPath(const char *file, std::string &result, realpathcmp cmp) {
|
||||
char buf[PATH_MAX + 1];
|
||||
ssize_t len;
|
||||
|
||||
if ((len = readlink(sfile.c_str(), buf, PATH_MAX)) != -1) {
|
||||
if ((len = readlink(sfile.c_str(), buf, PATH_MAX)) != -1)
|
||||
result.assign(buf, len);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -365,7 +363,7 @@ std::string &getPathOfCommand(const char *command, std::string &result) {
|
||||
}
|
||||
|
||||
const char *getFileName(const char *file) {
|
||||
const char *p = strrchr(file, '/');
|
||||
const char *p = strrchr(file, PATHDIV);
|
||||
|
||||
if (!p)
|
||||
p = file;
|
||||
|
@ -201,6 +201,9 @@ typedef OSVersion ClangVersion;
|
||||
#ifdef _WIN32
|
||||
int setenv(const char *name, const char *value, int overwrite);
|
||||
int unsetenv(const char *name);
|
||||
constexpr char PATHDIV = '\\';
|
||||
#else
|
||||
constexpr char PATHDIV = '/';
|
||||
#endif
|
||||
|
||||
//
|
||||
|
Loading…
Reference in New Issue
Block a user