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_LIBLTO_PATH ?=
|
||||||
OSXCROSS_CXXFLAGS ?=
|
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)
|
ifeq ($(LTO), 1)
|
||||||
override CXXFLAGS+=-flto
|
override CXXFLAGS+=-flto
|
||||||
|
@ -92,10 +92,10 @@ function compile_wrapper()
|
|||||||
export PLATFORM
|
export PLATFORM
|
||||||
export CXX
|
export CXX
|
||||||
|
|
||||||
verbose_cmd make clean
|
verbose_cmd $MAKE clean
|
||||||
|
|
||||||
OSXCROSS_CXXFLAGS="$FLAGS" \
|
OSXCROSS_CXXFLAGS="$FLAGS" \
|
||||||
verbose_cmd make wrapper -j$JOBS
|
verbose_cmd $MAKE wrapper -j$JOBS
|
||||||
}
|
}
|
||||||
|
|
||||||
compile_wrapper
|
compile_wrapper
|
||||||
|
@ -85,7 +85,7 @@ bool detectTarget(int argc, char **argv, Target &target) {
|
|||||||
val = argv[++i];
|
val = argv[++i];
|
||||||
|
|
||||||
if (i >= argc) {
|
if (i >= argc) {
|
||||||
std::cerr << "missing argument for '" << val << "'" << std::endl;
|
std::cerr << "missing argument for '" << flag << "'" << std::endl;
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -380,9 +380,8 @@ bool detectTarget(int argc, char **argv, Target &target) {
|
|||||||
else
|
else
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (const char *p = strchr(cmd, '-')) {
|
if (const char *p = strchr(cmd, '-'))
|
||||||
target.compiler = &cmd[p - cmd + 1];
|
target.compiler = &cmd[p - cmd + 1];
|
||||||
}
|
|
||||||
|
|
||||||
if (!parseArgs())
|
if (!parseArgs())
|
||||||
return false;
|
return false;
|
||||||
@ -397,8 +396,8 @@ bool detectTarget(int argc, char **argv, Target &target) {
|
|||||||
// and clang + -oc-use-gcc-libs
|
// and clang + -oc-use-gcc-libs
|
||||||
//
|
//
|
||||||
|
|
||||||
void generateMultiArchObjectFile(int &rc, int argc, char **argv, Target &target,
|
void generateMultiArchObjectFile(int &rc, int argc, char **argv,
|
||||||
int debug) {
|
Target &target, int debug) {
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
std::string stdintmpfile;
|
std::string stdintmpfile;
|
||||||
string_vector objs;
|
string_vector objs;
|
||||||
@ -705,13 +704,11 @@ int main(int argc, char **argv) {
|
|||||||
cargs = new char *[target.fargs.size() + target.args.size() + 1];
|
cargs = new char *[target.fargs.size() + target.args.size() + 1];
|
||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
|
|
||||||
for (auto &arg : target.fargs) {
|
for (auto &arg : target.fargs)
|
||||||
cargs[i++] = const_cast<char *>(arg.c_str());
|
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++] = const_cast<char *>(arg.c_str());
|
||||||
}
|
|
||||||
|
|
||||||
cargs[i] = nullptr;
|
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)
|
if (!ltopath)
|
||||||
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::cout << "export OSXCROSS_OSX_VERSION_MIN=" << OSXVersionMin.shortStr()
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
std::cout << "export OSXCROSS_TARGET=" << getDefaultTarget() << std::endl;
|
std::cout << "export OSXCROSS_TARGET=" << getDefaultTarget() << std::endl;
|
||||||
std::cout << "export OSXCROSS_SDK_VERSION=" << target.getSDKOSNum().shortStr()
|
std::cout << "export OSXCROSS_SDK_VERSION=" << target.getSDKOSNum().shortStr()
|
||||||
<< std::endl;
|
<< 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
|
std::cout << "export OSXCROSS_TARBALL_DIR=" << target.execpath
|
||||||
<< "/../../tarballs" << std::endl;
|
<< "/../../tarballs"
|
||||||
|
<< std::endl;
|
||||||
std::cout << "export OSXCROSS_PATCH_DIR=" << target.execpath
|
std::cout << "export OSXCROSS_PATCH_DIR=" << target.execpath
|
||||||
<< "/../../patches" << std::endl;
|
<< "/../../patches"
|
||||||
|
<< std::endl;
|
||||||
std::cout << "export OSXCROSS_TARGET_DIR=" << target.execpath << "/.."
|
std::cout << "export OSXCROSS_TARGET_DIR=" << target.execpath << "/.."
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
std::cout << "export OSXCROSS_BUILD_DIR=" << target.execpath << "/../../build"
|
std::cout << "export OSXCROSS_BUILD_DIR=" << target.execpath << "/../../build"
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
std::cout << "export OSXCROSS_CCTOOLS_PATH=" << target.execpath << std::endl;
|
std::cout << "export OSXCROSS_CCTOOLS_PATH=" << target.execpath
|
||||||
std::cout << "export OSXCROSS_LIBLTO_PATH=" << ltopath << std::endl;
|
<< std::endl;
|
||||||
|
std::cout << "export OSXCROSS_LIBLTO_PATH=" << ltopath
|
||||||
|
<< std::endl;
|
||||||
std::cout << "export OSXCROSS_LINKER_VERSION=" << getLinkerVersion()
|
std::cout << "export OSXCROSS_LINKER_VERSION=" << getLinkerVersion()
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
|
|
||||||
|
@ -41,9 +41,9 @@ int env(int argc, char **argv) {
|
|||||||
|
|
||||||
// TODO: escape?
|
// TODO: escape?
|
||||||
|
|
||||||
auto check = [](const char * p, const char * desc)->const char * {
|
auto containsBadChars = [](const char * p, const char * desc)->bool {
|
||||||
if (!p)
|
if (!p)
|
||||||
return nullptr;
|
return false;
|
||||||
|
|
||||||
const char *pp = p;
|
const char *pp = p;
|
||||||
|
|
||||||
@ -69,10 +69,10 @@ int env(int argc, char **argv) {
|
|||||||
case ' ':
|
case ' ':
|
||||||
case ';':
|
case ';':
|
||||||
badChar(p);
|
badChar(p);
|
||||||
return nullptr;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return pp;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
if (argc <= 1) {
|
if (argc <= 1) {
|
||||||
@ -83,8 +83,8 @@ int env(int argc, char **argv) {
|
|||||||
<< std::endl << "please use " << std::endl << std::endl
|
<< std::endl << "please use " << std::endl << std::endl
|
||||||
<< "setenv PATH `" << epath << "/osxcross-env -v=PATH`"
|
<< "setenv PATH `" << epath << "/osxcross-env -v=PATH`"
|
||||||
<< std::endl << "setenv LD_LIBRARY_PATH `" << epath
|
<< std::endl << "setenv LD_LIBRARY_PATH `" << epath
|
||||||
<< "/osxcross-env -v=LD_LIBRARY_PATH`" << std::endl << std::endl
|
<< "/osxcross-env -v=LD_LIBRARY_PATH`" << std::endl
|
||||||
<< "instead." << std::endl << 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));
|
return ((hasPathSeparator && (check(0) || check(1))) || check(-1));
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!check(oldpath, "PATH") || !check(oldlibpath, "LD_LIBRARY_PATH") ||
|
if (containsBadChars(oldpath, "PATH") ||
|
||||||
!check(ltopath, "LIB LTO PATH"))
|
containsBadChars(oldlibpath, "LD_LIBRARY_PATH") ||
|
||||||
|
containsBadChars(ltopath, "LIB LTO PATH"))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
std::stringstream path;
|
std::stringstream path;
|
||||||
|
@ -107,10 +107,13 @@ struct Target {
|
|||||||
return false;
|
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 {
|
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(); }
|
bool isKnownCompiler() const { return isClang() || isGCC(); }
|
||||||
|
@ -82,8 +82,8 @@ char *getExecutablePath(char *buf, size_t len) {
|
|||||||
if (l <= 0)
|
if (l <= 0)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
buf[len - 1] = '\0';
|
buf[len - 1] = '\0';
|
||||||
p = strrchr(buf, '/');
|
p = strrchr(buf, PATHDIV);
|
||||||
if (*p) {
|
if (p) {
|
||||||
*p = '\0';
|
*p = '\0';
|
||||||
}
|
}
|
||||||
return buf;
|
return buf;
|
||||||
@ -328,9 +328,8 @@ std::string &realPath(const char *file, std::string &result, realpathcmp cmp) {
|
|||||||
sfile += "/";
|
sfile += "/";
|
||||||
sfile += file;
|
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;
|
break;
|
||||||
}
|
|
||||||
|
|
||||||
sfile.clear();
|
sfile.clear();
|
||||||
} while (*p);
|
} while (*p);
|
||||||
@ -340,10 +339,9 @@ std::string &realPath(const char *file, std::string &result, realpathcmp cmp) {
|
|||||||
char buf[PATH_MAX + 1];
|
char buf[PATH_MAX + 1];
|
||||||
ssize_t len;
|
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);
|
result.assign(buf, len);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
result.swap(sfile);
|
result.swap(sfile);
|
||||||
@ -365,7 +363,7 @@ std::string &getPathOfCommand(const char *command, std::string &result) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const char *getFileName(const char *file) {
|
const char *getFileName(const char *file) {
|
||||||
const char *p = strrchr(file, '/');
|
const char *p = strrchr(file, PATHDIV);
|
||||||
|
|
||||||
if (!p)
|
if (!p)
|
||||||
p = file;
|
p = file;
|
||||||
|
@ -201,6 +201,9 @@ typedef OSVersion ClangVersion;
|
|||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
int setenv(const char *name, const char *value, int overwrite);
|
int setenv(const char *name, const char *value, int overwrite);
|
||||||
int unsetenv(const char *name);
|
int unsetenv(const char *name);
|
||||||
|
constexpr char PATHDIV = '\\';
|
||||||
|
#else
|
||||||
|
constexpr char PATHDIV = '/';
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//
|
//
|
||||||
|
Loading…
Reference in New Issue
Block a user