11###############################################################################
2- # Copyright (c) 2016-2020 Joel de Guzman
2+ # Copyright (c) 2016-2023 Joel de Guzman
33#
44# Distributed under the MIT License (https://opensource.org/licenses/MIT)
55###############################################################################
@@ -10,6 +10,7 @@ project(${ELEMENTS_APP_PROJECT} LANGUAGES CXX)
1010# Sanitizers
1111
1212option (ASAN "Build with address sanitizer" OFF )
13+ option (LSAN "Build with leak sanitizer" OFF )
1314option (TSAN "Build with thread sanitizer" OFF )
1415option (UBSAN "Build with undefined Behavior sanitizer" OFF )
1516
@@ -25,6 +26,10 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU
2526 add_sanitizer("address" )
2627 endif ()
2728
29+ if (LSAN)
30+ add_sanitizer("leak" )
31+ endif ()
32+
2833 if (TSAN)
2934 add_sanitizer("thread" )
3035 endif ()
@@ -33,11 +38,19 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU
3338 add_sanitizer("undefined" )
3439 endif ()
3540else ()
36- if (ASAN OR TSAN OR UBSAN)
41+ if (ASAN OR LSAN OR TSAN OR UBSAN)
3742 message (FATAL_ERROR "Compiler is not supported." )
3843 endif ()
3944endif ()
4045
46+ ###############################################################################
47+ # Linux Open GL
48+
49+ if (UNIX AND NOT APPLE )
50+ find_package (PkgConfig REQUIRED)
51+ find_package (OpenGL REQUIRED COMPONENTS OpenGL)
52+ endif ()
53+
4154###############################################################################
4255# Sources (and Resources)
4356
@@ -107,25 +120,29 @@ elseif (WIN32)
107120 )
108121
109122 if (MSVC )
123+
124+ set_property (TARGET ${ELEMENTS_APP_PROJECT} PROPERTY
125+ MSVC_RUNTIME_LIBRARY "MultiThreaded"
126+ )
127+
110128 target_link_options (${ELEMENTS_APP_PROJECT} PRIVATE
111129 /SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup shcore.lib
112130 )
113131
132+ add_dependencies (${PROJECT_NAME} windows_dlls)
133+
114134 if (CMAKE_SIZEOF_VOID_P EQUAL 8) # 64 bits?
115- set (CAIRO_DLL ${ELEMENTS_ROOT} /lib/external/cairo/lib/x64/cairo.dll)
116135 set (FREETYPE_DLL ${ELEMENTS_ROOT} /lib/external/freetype/win64/freetype.dll)
117136 set (FONTCONFIG_DLL ${ELEMENTS_ROOT} /lib/external/fontconfig/x64/fontconfig.dll)
118137 set (ICONV_DLL ${ELEMENTS_ROOT} /lib/external/fontconfig/x64/libiconv.dll)
119138 set (XML2 ${ELEMENTS_ROOT} /lib/external/fontconfig/x64/libxml2.dll)
120139 else ()
121- set (CAIRO_DLL ${ELEMENTS_ROOT} /lib/external/cairo/lib/x86/cairo.dll)
122140 set (FREETYPE_DLL ${ELEMENTS_ROOT} /lib/external/freetype/win32 /freetype.dll)
123141 set (FONTCONFIG_DLL ${ELEMENTS_ROOT} /lib/external/fontconfig/x86/fontconfig.dll)
124142 set (ICONV_DLL ${ELEMENTS_ROOT} /lib/external/fontconfig/x86/libiconv.dll)
125143 set (XML2 ${ELEMENTS_ROOT} /lib/external/fontconfig/x86/libxml2.dll)
126144 endif ()
127145
128- file (COPY ${CAIRO_DLL} DESTINATION "${CMAKE_CURRENT_BINARY_DIR} " )
129146 file (COPY ${FREETYPE_DLL} DESTINATION "${CMAKE_CURRENT_BINARY_DIR} " )
130147 file (COPY ${FONTCONFIG_DLL} DESTINATION "${CMAKE_CURRENT_BINARY_DIR} " )
131148 file (COPY ${ICONV_DLL} DESTINATION "${CMAKE_CURRENT_BINARY_DIR} " )
@@ -143,12 +160,17 @@ target_compile_options(${ELEMENTS_APP_PROJECT} PRIVATE
143160 $<$<CXX_COMPILER_ID:MSVC >:/utf-8>
144161)
145162
163+ if (APPLE )
164+ target_compile_options (${ELEMENTS_APP_PROJECT} PUBLIC "-fobjc-arc" )
165+ endif ()
166+
146167###############################################################################
147168# Libraries and linking
148169
149170target_link_libraries (${ELEMENTS_APP_PROJECT} PRIVATE
150171 ${ELEMENTS_APP_DEPENDENCIES}
151172 elements
173+ ${OPENGL_LIBRARIES}
152174)
153175
154176if (NOT DEFINED ELEMENTS_APP_INCLUDE_DIRECTORIES)
0 commit comments