@@ -18,6 +18,8 @@ if(NOT WITH_DEMO)
18
18
FORCE )
19
19
endif (NOT WITH_DEMO )
20
20
21
+ option (WITH_LIBCXX "Building with clang++ and libc++(in Linux). To enable with: -DWITH_LIBCXX=On" On )
22
+
21
23
project (LIBANTLR4 )
22
24
23
25
if (CMAKE_VERSION VERSION_EQUAL "3.0.0" OR
@@ -36,11 +38,12 @@ if(APPLE)
36
38
find_library (COREFOUNDATION_LIBRARY CoreFoundation )
37
39
endif ()
38
40
39
- find_package (Java REQUIRED )
40
-
41
41
file (STRINGS "VERSION" ANTLR_VERSION )
42
42
43
43
if (WITH_DEMO )
44
+ # Java is not necessary if building without demos.
45
+ find_package (Java REQUIRED )
46
+
44
47
if (NOT ANTLR_JAR_LOCATION )
45
48
message (FATAL_ERROR "Missing antlr4.jar location. You can specify it's path using: -DANTLR_JAR_LOCATION=<path>" )
46
49
else ()
@@ -56,18 +59,21 @@ endif(WITH_DEMO)
56
59
set (MY_CXX_WARNING_FLAGS " -Wall -pedantic -W" )
57
60
58
61
# Initialize CXXFLAGS.
59
- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -std=c++11 ${MY_CXX_WARNING_FLAGS} " )
60
- set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g -std=c++11 ${MY_CXX_WARNING_FLAGS} " )
61
- set (CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -Os -DNDEBUG -std=c++11 ${MY_CXX_WARNING_FLAGS} " )
62
- set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -DNDEBUG -std=c++11 ${MY_CXX_WARNING_FLGAS} " )
63
- set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O2 -g -std=c++11 ${MY_CXX_WARNING_FLAGS} " )
62
+ set (CMAKE_CXX_STANDARD 11 )
63
+ set (CMAKE_CXX_STANDARD_REQUIRED ON )
64
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall ${MY_CXX_WARNING_FLAGS} " )
65
+ set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g ${MY_CXX_WARNING_FLAGS} " )
66
+ set (CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -Os -DNDEBUG ${MY_CXX_WARNING_FLAGS} " )
67
+ set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -DNDEBUG ${MY_CXX_WARNING_FLGAS} " )
68
+ set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O2 -g ${MY_CXX_WARNING_FLAGS} " )
64
69
65
70
# Compiler-specific C++11 activation.
66
71
if ("${CMAKE_CXX_COMPILER_ID} " MATCHES "GNU" )
67
72
execute_process (
68
73
COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION )
69
- if (NOT (GCC_VERSION VERSION_GREATER 4.7 OR GCC_VERSION VERSION_EQUAL 4.7 ))
70
- message (FATAL_ERROR "${PROJECT_NAME} requires g++ 4.7 or greater." )
74
+ # Just g++-5.0 and greater contain <codecvt> header. (test in ubuntu)
75
+ if (NOT (GCC_VERSION VERSION_GREATER 5.0 OR GCC_VERSION VERSION_EQUAL 5.0 ))
76
+ message (FATAL_ERROR "${PROJECT_NAME} requires g++ 5.0 or greater." )
71
77
endif ()
72
78
elseif ("${CMAKE_CXX_COMPILER_ID} " MATCHES "Clang" AND APPLE )
73
79
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++" )
@@ -77,6 +83,10 @@ elseif ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" AND CMAKE_SYSTEM_NAME MATCHES
77
83
if (NOT (CLANG_VERSION VERSION_GREATER 4.2.1 OR CLANG_VERSION VERSION_EQUAL 4.2.1 ))
78
84
message (FATAL_ERROR "${PROJECT_NAME} requires clang 4.2.1 or greater." )
79
85
endif ()
86
+ # You can use libc++ to compile this project when g++ is NOT greater than or equal to 5.0.
87
+ if (WITH_LIBCXX )
88
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++" )
89
+ endif ()
80
90
else ()
81
91
message (FATAL_ERROR "Your C++ compiler does not support C++11." )
82
92
endif ()
0 commit comments