Skip to content

Commit 5e69066

Browse files
committed
2 parents 94eb692 + 54eed95 commit 5e69066

File tree

40 files changed

+145
-100
lines changed

40 files changed

+145
-100
lines changed

CMakeLists.txt

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#######################################################
44
# Project information
55
cmake_minimum_required(VERSION 3.14)
6-
project(matplotplusplus VERSION 1.0.2)
6+
project(matplotplusplus VERSION 1.1.0)
77
set(CMAKE_CXX_STANDARD 17)
88
set(CMAKE_C_STANDARD 11)
99
set(MATPLOT_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR})
@@ -64,6 +64,7 @@ option(WITH_SYSTEM_NODESOUP "Use system-provided nodesoup instead of bundled" OF
6464
#######################################################
6565
# In development, we can set some options for all targets
6666
if (MASTER_PROJECT)
67+
message("Setting global options")
6768
# Maybe add sanitizers to all targets
6869
if (BUILD_WITH_SANITIZERS AND NOT EMSCRIPTEN)
6970
add_sanitizers()
@@ -81,13 +82,16 @@ if (MASTER_PROJECT)
8182

8283
# MSVC hack to disable windows min/max
8384
# http://www.suodenjoki.dk/us/archive/2010/min-max.htm
84-
if (BUILD_WITH_MSVC_HACKS)
85+
if (MSVC AND BUILD_WITH_MSVC_HACKS)
8586
# Check for min in Windows.h
86-
include(CheckSymbolExists)
87-
check_symbol_exists(min "Windows.h" HAVE_WINDOWS_MINMAX)
88-
if (HAVE_WINDOWS_MINMAX)
89-
add_compile_definitions(NOMINMAX)
90-
endif ()
87+
# include(CheckSymbolExists)
88+
# check_symbol_exists(min "WinDef.h" HAVE_WINDOWS_MINMAX)
89+
# if (NOT HAVE_WINDOWS_MINMAX)
90+
# check_symbol_exists(min "Windows.h" HAVE_WINDOWS_MINMAX)
91+
# endif ()
92+
# if (HAVE_WINDOWS_MINMAX)
93+
add_compile_definitions(NOMINMAX)
94+
# endif ()
9195
endif ()
9296
endif()
9397

cmake/functions/project_flags.cmake

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -50,27 +50,35 @@ endmacro()
5050
# @brief Set the default optimization flags in case the user didn't
5151
# explicitly choose it with -DCMAKE_CXX_FLAGS
5252
macro(set_optimization_flags)
53-
if (NOT CMAKE_CXX_FLAGS)
53+
set(OPT_FLAGS /O1 /O2 /Ob /Od /Og /Oi /Os /Ot /Ox /Oy /favor -O0 -O1 -O -O2 -O3 -Os -Ofast -Og)
54+
set(OPTIMIZATION_FLAG_IS_SET OFF)
55+
string(REPLACE " " ";" CMAKE_CXX_FLAGS_LIST ${CMAKE_CXX_FLAGS})
56+
foreach(FLAG ${CMAKE_CXX_FLAGS_LIST})
57+
if (${FLAG} IN_LIST OPT_FLAGS)
58+
message("CXX optimization flag is already set to ${FLAG}")
59+
set(OPTIMIZATION_FLAG_IS_SET ON)
60+
endif()
61+
endforeach()
62+
63+
if (NOT OPTIMIZATION_FLAG_IS_SET)
5464
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
5565
if (EMSCRIPTEN)
56-
list(APPEND CMAKE_CXX_FLAGS "-O0 -g4")
66+
list(APPEND CMAKE_CXX_FLAGS " -O0 -g4")
5767
elseif (MSVC)
58-
list(APPEND CMAKE_CXX_FLAGS "/O0")
68+
list(APPEND CMAKE_CXX_FLAGS " /O0")
5969
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
60-
list(APPEND CMAKE_CXX_FLAGS "-O0")
70+
list(APPEND CMAKE_CXX_FLAGS " -O0")
6171
else()
6272
# https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
63-
list(APPEND CMAKE_CXX_FLAGS "-Og")
73+
list(APPEND CMAKE_CXX_FLAGS " -Og")
6474
endif()
6575
else()
6676
if (MSVC)
67-
list(APPEND CMAKE_CXX_FLAGS "/O2")
77+
list(APPEND CMAKE_CXX_FLAGS " /O2")
6878
else()
69-
list(APPEND CMAKE_CXX_FLAGS "-O2")
79+
list(APPEND CMAKE_CXX_FLAGS " -O2")
7080
endif()
7181
endif()
7282
message("Setting CXX flags to default for ${CMAKE_BUILD_TYPE} mode (${CMAKE_CXX_FLAGS})")
73-
else()
74-
message("CXX flags are already set to ${CMAKE_CXX_FLAGS}")
7583
endif()
7684
endmacro()

cmake/functions/target_options.cmake

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,14 +64,33 @@ function(target_utf8_options TARGET_NAME)
6464
target_msvc_compile_options(${TARGET_NAME} PRIVATE /utf-8)
6565
endfunction()
6666

67-
# @brief Enable utf-8 for the target
67+
# @brief Disable minmax for target
6868
function(target_disable_minmax TARGET_NAME)
69+
message("Checking if min exists for ${TARGET_NAME}")
6970
if (MSVC)
7071
# Another hack to check for min in Windows.h
7172
# http://www.suodenjoki.dk/us/archive/2010/min-max.htm
72-
check_symbol_exists(min "Windows.h" HAVE_WINDOWS_MINMAX)
73+
include(CheckSymbolExists)
74+
message("Looking in WinDef.h")
75+
check_symbol_exists(min "WinDef.h" HAVE_WINDOWS_MINMAX)
76+
if (NOT HAVE_WINDOWS_MINMAX)
77+
message("Looking in Windows.h")
78+
check_symbol_exists(min "Windows.h" HAVE_WINDOWS_MINMAX)
79+
endif()
7380
if (HAVE_WINDOWS_MINMAX)
7481
target_compile_definitions(${TARGET_NAME} PUBLIC NOMINMAX)
82+
else()
83+
message("MINMAX not found")
7584
endif()
85+
else()
86+
message("Compiler is not MSVC")
7687
endif()
88+
endfunction()
89+
90+
# @brief Disable minmax for target
91+
# This forces the NOMINMAX definition without even looking for
92+
# min in WinDef.h. This is necessary because the solution
93+
# based on check_symbol_exists hasn't been enough.
94+
function(target_nominmax_definition TARGET_NAME)
95+
target_compile_definitions(${TARGET_NAME} PUBLIC NOMINMAX)
7796
endfunction()

examples/annotations/rectangle/rectangle_1.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ int main() {
1212

1313
auto r2 = rectangle(6.5, 4.5, 1, 1);
1414
r2->fill(true);
15-
r2->color({0.8, 0, 0, 1});
15+
r2->color({0.8f, 0.f, 0.f, 1.f});
1616

1717
show();
1818
return 0;

examples/appearance/axes/axes_2.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66

77
int main() {
88
using namespace matplot;
9-
auto ax1 = axes({0.1, 0.1, 0.7, 0.7});
10-
auto ax2 = axes({0.65, 0.65, 0.28, 0.28});
9+
auto ax1 = axes({0.1f, 0.1f, 0.7f, 0.7f});
10+
auto ax2 = axes({0.65f, 0.65f, 0.28f, 0.28f});
1111

1212
auto [X, Y, Z] = peaks(20);
1313
contour(ax1, X, Y, Z);

examples/appearance/axes/axes_3.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66

77
int main() {
88
using namespace matplot;
9-
auto ax1 = axes({0.1, 0.1, 0.6, 0.6});
10-
auto ax2 = axes({0.35, 0.35, 0.6, 0.6});
9+
auto ax1 = axes({0.1f, 0.1f, 0.6f, 0.6f});
10+
auto ax2 = axes({0.35f, 0.35f, 0.6f, 0.6f});
1111

1212
ax1->box(true);
1313
ax2->box(true);

examples/appearance/camera/lighting/lighting_2.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ int main() {
44
using namespace matplot;
55

66
auto [x, y, z] = peaks();
7-
surf(x, y, z)->lighting(true).primary(0.2);
7+
surf(x, y, z)->lighting(true).primary(0.2f);
88

99
show();
1010
return 0;

examples/appearance/camera/lighting/lighting_3.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ int main() {
44
using namespace matplot;
55

66
auto [x, y, z] = peaks();
7-
surf(x, y, z)->lighting(true).primary(0.8);
7+
surf(x, y, z)->lighting(true).primary(0.8f);
88

99
show();
1010
return 0;

examples/appearance/camera/lighting/lighting_4.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ int main() {
44
using namespace matplot;
55

66
auto [x, y, z] = peaks();
7-
surf(x, y, z)->lighting(true).specular(0.2);
7+
surf(x, y, z)->lighting(true).specular(0.2f);
88

99
show();
1010
return 0;

examples/appearance/camera/lighting/lighting_5.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ int main() {
44
using namespace matplot;
55

66
auto [x, y, z] = peaks();
7-
surf(x, y, z)->lighting(true).specular(0.8);
7+
surf(x, y, z)->lighting(true).specular(0.8f);
88

99
show();
1010
return 0;

0 commit comments

Comments
 (0)