[CMake] Bootstrap fails to detect C++11 compiler on AIX 7.1/XL C 13.1.3 toolset
Nathan Strong
gblues+cmake at gmail.com
Tue Dec 19 11:48:52 EST 2017
I am having difficulty building CMake on AIX 7.1 using IBM XL C 13.1.3,
which seems to be the newest version as of April 2017.
The bootstrap script fails with the following error:
---------------------------------------------
CMake 3.10.1, Copyright 2000-2017 Kitware, Inc. and Contributors
Found XL toolchain
C compiler on this system is: xlc
---------------------------------------------
Error when bootstrapping CMake:
Cannot find a C++ compiler supporting C++11 on this system.
Please specify one using environment variable CXX.
See cmake_bootstrap.log for compilers attempted.
---------------------------------------------
Log of errors: src/cmake-3.10.1/Bootstrap.cmk/cmake_bootstrap.log
---------------------------------------------
Given that AIX is explicitly listed as a supported platform, and I am using
the latest version of the IBM AIX compiler, I find this error dubious.
Below is a the contents of the cmake_bootstrap.log, where we can see that
it does try to use the appropriate -q flag to enable the compiler's
supported C++11 features.
Is XL C simply unsupported?
--- paste below ---
Checking for XL toolchain
Try: xlc
Line: xlc cmake_bootstrap_18350136_test.c -o cmake_bootstrap_18350136_test
---------- file -----------------------
int main() { return 0; }
------------------------------------------
Test succeeded
Try: xlC
Line: xlC cmake_bootstrap_18350136_test.cpp -o
cmake_bootstrap_18350136_test
---------- file -----------------------
int main() { return 0; }
------------------------------------------
Test succeeded
Checking whether 'xlc ' works.
Try: xlc
Line: xlc cmake_bootstrap_18350136_test.c -o cmake_bootstrap_18350136_test
---------- file -----------------------
#ifdef __cplusplus
# error "The CMAKE_C_COMPILER is set to a C++ compiler"
#endif
#if defined(__sun) && __STDC_VERSION__ < 199901L
#error "On Solaris we need C99."
#endif
#include <stdio.h>
int main(int argc, char* argv[])
{
printf("%d%c", (argv != 0), (char)0x0a);
return argc - 1;
}
------------------------------------------
1
Test succeeded
Checking whether 'xlC ' works.
Try: xlC
Line: xlC cmake_bootstrap_18350136_test.cxx -o
cmake_bootstrap_18350136_test
---------- file -----------------------
#include <iostream>
#include <memory>
#include <unordered_map>
#if __cplusplus < 201103L
#error "Compiler is not in a mode aware of C++11."
#endif
#if defined(__SUNPRO_CC) && __SUNPRO_CC < 0x5140
#error "SunPro <= 5.13 mode not supported due to bug in move semantics."
#endif
class Class
{
public:
int Get() const { return this->Member; }
private:
int Member = 1;
};
int main()
{
auto const c = std::unique_ptr<Class>(new Class);
std::cout << c->Get() << std::endl;
return 0;
}
------------------------------------------
"/opt/IBM/xlC/13.1.3/include/unordered_map", line 71.5: 1540-0859 (S)
#error directive: To use the unordered map library, macro __IBMCPP_TR1__
must be defined
by user to non zero integer value..
"cmake_bootstrap_18350136_test.cxx", line 7.2: 1540-0859 (S) #error
directive: "Compiler is not in a mode aware of C++11.".
Test failed to compile
Checking whether 'xlC ' works.
Try: xlC
Line: xlC cmake_bootstrap_18350136_test.cxx -o
cmake_bootstrap_18350136_test
---------- file -----------------------
#include <iostream>
#include <memory>
#include <unordered_map>
#if __cplusplus < 201103L
#error "Compiler is not in a mode aware of C++11."
#endif
#if defined(__SUNPRO_CC) && __SUNPRO_CC < 0x5140
#error "SunPro <= 5.13 mode not supported due to bug in move semantics."
#endif
class Class
{
public:
int Get() const { return this->Member; }
private:
int Member = 1;
};
int main()
{
auto const c = std::unique_ptr<Class>(new Class);
std::cout << c->Get() << std::endl;
return 0;
}
------------------------------------------
"/opt/IBM/xlC/13.1.3/include/unordered_map", line 71.5: 1540-0859 (S)
#error directive: To use the unordered map library, macro __IBMCPP_TR1__
must be defined
by user to non zero integer value..
"cmake_bootstrap_18350136_test.cxx", line 7.2: 1540-0859 (S) #error
directive: "Compiler is not in a mode aware of C++11.".
Test failed to compile
Checking whether 'xlC -qlanglvl=extended1y' works.
Try: xlC
Line: xlC -qlanglvl=extended1y cmake_bootstrap_18350136_test.cxx -o
cmake_bootstrap_18350136_test
---------- file -----------------------
#include <iostream>
#include <memory>
#include <unordered_map>
#if __cplusplus < 201103L
#error "Compiler is not in a mode aware of C++11."
#endif
#if defined(__SUNPRO_CC) && __SUNPRO_CC < 0x5140
#error "SunPro <= 5.13 mode not supported due to bug in move semantics."
#endif
class Class
{
public:
int Get() const { return this->Member; }
private:
int Member = 1;
};
int main()
{
auto const c = std::unique_ptr<Class>(new Class);
std::cout << c->Get() << std::endl;
return 0;
}
------------------------------------------
1540-5200 (W) The option "langlvl=extended1y" is not supported.
"/opt/IBM/xlC/13.1.3/include/unordered_map", line 71.5: 1540-0859 (S)
#error directive: To use the unordered map library, macro __IBMCPP_TR1__
must be defined
by user to non zero integer value..
"cmake_bootstrap_18350136_test.cxx", line 7.2: 1540-0859 (S) #error
directive: "Compiler is not in a mode aware of C++11.".
Test failed to compile
Checking whether 'xlC ' works.
Try: xlC
Line: xlC cmake_bootstrap_18350136_test.cxx -o
cmake_bootstrap_18350136_test
---------- file -----------------------
#include <iostream>
#include <memory>
#include <unordered_map>
#if __cplusplus < 201103L
#error "Compiler is not in a mode aware of C++11."
#endif
#if defined(__SUNPRO_CC) && __SUNPRO_CC < 0x5140
#error "SunPro <= 5.13 mode not supported due to bug in move semantics."
#endif
class Class
{
public:
int Get() const { return this->Member; }
private:
int Member = 1;
};
int main()
{
auto const c = std::unique_ptr<Class>(new Class);
std::cout << c->Get() << std::endl;
return 0;
}
------------------------------------------
"/opt/IBM/xlC/13.1.3/include/unordered_map", line 71.5: 1540-0859 (S)
#error directive: To use the unordered map library, macro __IBMCPP_TR1__
must be defined
by user to non zero integer value..
"cmake_bootstrap_18350136_test.cxx", line 7.2: 1540-0859 (S) #error
directive: "Compiler is not in a mode aware of C++11.".
Test failed to compile
Checking whether 'xlC -std=gnu++11' works.
Try: xlC
Line: xlC -std=gnu++11 cmake_bootstrap_18350136_test.cxx -o
cmake_bootstrap_18350136_test
---------- file -----------------------
#include <iostream>
#include <memory>
#include <unordered_map>
#if __cplusplus < 201103L
#error "Compiler is not in a mode aware of C++11."
#endif
#if defined(__SUNPRO_CC) && __SUNPRO_CC < 0x5140
#error "SunPro <= 5.13 mode not supported due to bug in move semantics."
#endif
class Class
{
public:
int Get() const { return this->Member; }
private:
int Member = 1;
};
int main()
{
auto const c = std::unique_ptr<Class>(new Class);
std::cout << c->Get() << std::endl;
return 0;
}
------------------------------------------
/opt/IBM/xlC/13.1.3/bin/.orig/xlC: 1501-210 (W) command option t contains
an incorrect subargument
"/opt/IBM/xlC/13.1.3/include/unordered_map", line 71.5: 1540-0859 (S)
#error directive: To use the unordered map library, macro __IBMCPP_TR1__
must be defined
by user to non zero integer value..
"cmake_bootstrap_18350136_test.cxx", line 7.2: 1540-0859 (S) #error
directive: "Compiler is not in a mode aware of C++11.".
Test failed to compile
Checking whether 'xlC -qlanglvl=extended0x' works.
Try: xlC
Line: xlC -qlanglvl=extended0x cmake_bootstrap_18350136_test.cxx -o
cmake_bootstrap_18350136_test
---------- file -----------------------
#include <iostream>
#include <memory>
#include <unordered_map>
#if __cplusplus < 201103L
#error "Compiler is not in a mode aware of C++11."
#endif
#if defined(__SUNPRO_CC) && __SUNPRO_CC < 0x5140
#error "SunPro <= 5.13 mode not supported due to bug in move semantics."
#endif
class Class
{
public:
int Get() const { return this->Member; }
private:
int Member = 1;
};
int main()
{
auto const c = std::unique_ptr<Class>(new Class);
std::cout << c->Get() << std::endl;
return 0;
}
------------------------------------------
"/opt/IBM/xlC/13.1.3/include/unordered_map", line 71.5: 1540-0859 (S)
#error directive: To use the unordered map library, macro __IBMCPP_TR1__
must be defined
by user to non zero integer value..
"cmake_bootstrap_18350136_test.cxx", line 7.2: 1540-0859 (S) #error
directive: "Compiler is not in a mode aware of C++11.".
Test failed to compile
Checking whether 'xlC -qlanglvl=extended0x' works.
Try: xlC
Line: xlC -qlanglvl=extended0x cmake_bootstrap_18350136_test.cxx -o
cmake_bootstrap_18350136_test
---------- file -----------------------
#include <iostream>
#include <memory>
#include <unordered_map>
#if __cplusplus < 201103L
#error "Compiler is not in a mode aware of C++11."
#endif
#if defined(__SUNPRO_CC) && __SUNPRO_CC < 0x5140
#error "SunPro <= 5.13 mode not supported due to bug in move semantics."
#endif
class Class
{
public:
int Get() const { return this->Member; }
private:
int Member = 1;
};
int main()
{
auto const c = std::unique_ptr<Class>(new Class);
std::cout << c->Get() << std::endl;
return 0;
}
------------------------------------------
"/opt/IBM/xlC/13.1.3/include/unordered_map", line 71.5: 1540-0859 (S)
#error directive: To use the unordered map library, macro __IBMCPP_TR1__
must be defined
by user to non zero integer value..
"cmake_bootstrap_18350136_test.cxx", line 7.2: 1540-0859 (S) #error
directive: "Compiler is not in a mode aware of C++11.".
Test failed to compile
Checking whether 'xlC -qlanglvl=extended0x' works.
Try: xlC
Line: xlC -qlanglvl=extended0x cmake_bootstrap_18350136_test.cxx -o
cmake_bootstrap_18350136_test
---------- file -----------------------
#include <iostream>
#include <memory>
#include <unordered_map>
#if __cplusplus < 201103L
#error "Compiler is not in a mode aware of C++11."
#endif
#if defined(__SUNPRO_CC) && __SUNPRO_CC < 0x5140
#error "SunPro <= 5.13 mode not supported due to bug in move semantics."
#endif
class Class
{
public:
int Get() const { return this->Member; }
private:
int Member = 1;
};
int main()
{
auto const c = std::unique_ptr<Class>(new Class);
std::cout << c->Get() << std::endl;
return 0;
}
------------------------------------------
"/opt/IBM/xlC/13.1.3/include/unordered_map", line 71.5: 1540-0859 (S)
#error directive: To use the unordered map library, macro __IBMCPP_TR1__
must be defined
by user to non zero integer value..
"cmake_bootstrap_18350136_test.cxx", line 7.2: 1540-0859 (S) #error
directive: "Compiler is not in a mode aware of C++11.".
Test failed to compile
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cmake.org/pipermail/cmake/attachments/20171219/a4f3a835/attachment.html>
More information about the CMake
mailing list