summaryrefslogtreecommitdiff
blob: 7becf7d3f75ad62415956245f417cdfd17963a19 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
From 210926d23d0f40277b549ca490f876f93c3ffb6d Mon Sep 17 00:00:00 2001
From: Diogo Pereira <sir.suriv@gmail.com>
Date: Wed, 24 Jan 2018 16:44:03 +0000
Subject: [PATCH 1/3] CMake: simplify GCC version check

---
 CMakeLists.txt | 18 +++---------------
 1 file changed, 3 insertions(+), 15 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 392db54..78a71c0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,21 +2,9 @@ cmake_minimum_required(VERSION 2.8)
 
 project(j4-dmenu)
 
-exec_program(
-  ${CMAKE_CXX_COMPILER}
-  ARGS --version
-  OUTPUT_VARIABLE _compiler_output
-  )
-string(REGEX REPLACE "(\n.*$)" "" cxx_compiler_version "${_compiler_output}")
-string(REGEX REPLACE "([^0-9.])|([0-9.][^0-9.])" "" cxx_compiler_version "${cxx_compiler_version}")
-
-if(CMAKE_COMPILER_IS_GNUCXX)
-  if(${cxx_compiler_version} VERSION_LESS "4.7.0")
-    set(CXX_OPT "-std=c++0x")
-  else()
-    set(CXX_OPT "-std=c++11")
-  endif()
-elseif(${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
+if(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.7")
+  set(CXX_OPT "-std=c++0x")
+else()
   set(CXX_OPT "-std=c++11")
 endif()
 

From e6e05d0170554246118c2dffe5395a982e1af250 Mon Sep 17 00:00:00 2001
From: Diogo Pereira <sir.suriv@gmail.com>
Date: Wed, 24 Jan 2018 16:53:39 +0000
Subject: [PATCH 2/3] CMake: clean up and reorder CMAKE_CXX_FLAGS

---
 CMakeLists.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 78a71c0..1b3f2b0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -8,7 +8,7 @@ else()
   set(CXX_OPT "-std=c++11")
 endif()
 
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX_OPT} ${CXX_OPT} -Wall -pedantic -Wextra -O2")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX_OPT} -Wall -Wextra -pedantic -O2")
 set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG")
 
 if(NOT DEFINED NO_TESTS)

From 7be5116d0d6d80522517a58bb6e45ca1cdcd9612 Mon Sep 17 00:00:00 2001
From: Diogo Pereira <sir.suriv@gmail.com>
Date: Wed, 24 Jan 2018 17:51:28 +0000
Subject: [PATCH 3/3] CMake: add option to disable downloading Catch

---
 CMakeLists.txt | 90 ++++++++++++++++++++++++++++++----------------------------
 1 file changed, 47 insertions(+), 43 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1b3f2b0..17605e8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,6 +2,9 @@ cmake_minimum_required(VERSION 2.8)
 
 project(j4-dmenu)
 
+option(WITH_TESTS "Build and run tests" ON)
+option(WITH_GIT_CATCH "Use a Git checkout of Catch to build the tests" ON)
+
 if(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.7")
   set(CXX_OPT "-std=c++0x")
 else()
@@ -11,53 +14,54 @@ endif()
 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX_OPT} -Wall -Wextra -pedantic -O2")
 set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG")
 
-if(NOT DEFINED NO_TESTS)
-  include(ExternalProject)
-
-  ExternalProject_Add(
-    catch
-    PREFIX ${CMAKE_BINARY_DIR}/catch
-    GIT_TAG Catch1.x
-    GIT_REPOSITORY https://github.com/catchorg/Catch2
-    TIMEOUT 10
-    UPDATE_COMMAND git pull
-    CONFIGURE_COMMAND ""
-    BUILD_COMMAND ""
-    INSTALL_COMMAND ""
-    LOG_DOWNLOAD ON
-    )
-
-  # Expose required variable (CATCH_INCLUDE_DIR) to parent scope
-  ExternalProject_Get_Property(catch source_dir)
-  set(CATCH_INCLUDE_DIR ${source_dir}/include CACHE INTERNAL "Path to include folder for Catch")
-
-  # Includes Catch in the project:
-  #add_subdirectory(${EXT_PROJECTS_DIR}/catch)
-  include_directories(${CATCH_INCLUDE_DIR} ${COMMON_INCLUDES})
-
-  add_definitions(-DTEST_FILES="${CMAKE_CURRENT_SOURCE_DIR}/test_files/")
-
+if(WITH_TESTS)
   enable_testing(true)
-
   add_test(
-    NAME j4-dmenu-tests
-    COMMAND j4-dmenu-tests
-    )
-
+          NAME j4-dmenu-tests
+          COMMAND j4-dmenu-tests
+  )
   add_executable(
-    j4-dmenu-tests
-    src/Test.cc
-    src/TestApplication.cc
-    src/TestApplicationRunner.cc
-    src/TestSearchPath.cc
-    src/TestLocaleSuffixes.cc
-    src/TestFileFinder.cc
-    src/TestFormatters.cc
-    )
-
-  add_dependencies(j4-dmenu-tests catch)
-endif(NOT DEFINED NO_TESTS)
+          j4-dmenu-tests
+          src/Test.cc
+          src/TestApplication.cc
+          src/TestApplicationRunner.cc
+          src/TestSearchPath.cc
+          src/TestLocaleSuffixes.cc
+          src/TestFileFinder.cc
+          src/TestFormatters.cc
+  )
+  add_definitions(-DTEST_FILES="${CMAKE_CURRENT_SOURCE_DIR}/test_files/")
 
+  if(WITH_GIT_CATCH)
+    include(ExternalProject)
+    ExternalProject_Add(
+      catch
+      PREFIX ${CMAKE_BINARY_DIR}/catch
+      GIT_TAG Catch1.x
+      GIT_REPOSITORY https://github.com/catchorg/Catch2
+      TIMEOUT 10
+      UPDATE_COMMAND git pull
+      CONFIGURE_COMMAND ""
+      BUILD_COMMAND ""
+      INSTALL_COMMAND ""
+      LOG_DOWNLOAD ON
+    )
+    add_dependencies(j4-dmenu-tests catch)
+
+    # Expose required variable (CATCH_INCLUDE_DIR) to parent scope
+    ExternalProject_Get_Property(catch source_dir)
+    set(CATCH_INCLUDE_DIR ${source_dir}/include CACHE INTERNAL "Path to include folder for Catch")
+  else()
+    # Use system-installed version of Catch
+    find_path(CATCH_INCLUDE_DIR catch.hpp PATH_SUFFIXES catch)
+    if(NOT CATCH_INCLUDE_DIR)
+      message(FATAL_ERROR "Catch include directory not found")
+    endif()
+  endif(WITH_GIT_CATCH)
+
+  # Include Catch in the project
+  include_directories(${CATCH_INCLUDE_DIR} ${COMMON_INCLUDES})
+endif(WITH_TESTS)
 
 add_executable(
     j4-dmenu-desktop