summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTuomas Virtanen <katajakasa@gmail.com>2020-05-02 00:58:02 +0300
committerTuomas Virtanen <katajakasa@gmail.com>2020-05-02 00:58:02 +0300
commit098615519dd7b4e318aef19fa78ddbc3f68ffd55 (patch)
tree8521d7e3e396cb8c987fac2249873af004a6dfc5
parentafeb991b5b2198ad85e2fe2f9b41cf89ebc70638 (diff)
Add nicer ASAN flag usage in build config
-rw-r--r--CMakeLists.txt47
-rw-r--r--README.md2
2 files changed, 27 insertions, 22 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 87a2efc..9775d4d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -41,6 +41,10 @@ else()
message(STATUS "NOT building static libraries")
endif()
+if(USE_ASAN)
+ message(STATUS "DEVELOPMENT: AddressSanitizer enabled!")
+endif()
+
find_package(SDL2 REQUIRED)
find_package(ffmpeg COMPONENTS avcodec avformat avutil swscale swresample)
@@ -73,15 +77,16 @@ FILE(GLOB INSTALL_HEADERS "include/kitchensink/*.h")
include_directories(${INCLUDES})
-if(USE_ASAN)
- set(LIBRARIES asan ${LIBRARIES})
- message(STATUS "DEVELOPMENT: AddressSanitizer enabled!")
-endif()
-
set(INSTALL_TARGETS "")
if(BUILD_SHARED)
add_library(SDL_kitchensink SHARED ${SOURCES})
+
+ if(USE_ASAN)
+ target_compile_options(SDL_kitchensink PRIVATE "-fsanitize=address")
+ target_link_libraries(SDL_kitchensink asan)
+ endif()
+
target_link_libraries(SDL_kitchensink ${LIBRARIES})
set_target_properties(SDL_kitchensink PROPERTIES VERSION ${KIT_VERSION})
@@ -93,22 +98,19 @@ if(BUILD_SHARED)
set_property(TARGET SDL_kitchensink PROPERTY C_STANDARD 99)
- if(USE_ASAN)
- target_compile_options(SDL_kitchensink PRIVATE "-fsanitize=address")
- endif()
-
set(INSTALL_TARGETS SDL_kitchensink ${INSTALL_TARGETS})
endif()
if(BUILD_STATIC)
add_library(SDL_kitchensink_static STATIC ${SOURCES})
- set_target_properties(SDL_kitchensink_static PROPERTIES DEBUG_POSTFIX "d")
- set_property(TARGET SDL_kitchensink_static PROPERTY C_STANDARD 99)
if(USE_ASAN)
target_compile_options(SDL_kitchensink_static PRIVATE "-fsanitize=address")
endif()
+ set_target_properties(SDL_kitchensink_static PROPERTIES DEBUG_POSTFIX "d")
+ set_property(TARGET SDL_kitchensink_static PROPERTY C_STANDARD 99)
+
set(INSTALL_TARGETS SDL_kitchensink_static ${INSTALL_TARGETS})
endif()
@@ -140,19 +142,22 @@ if(BUILD_EXAMPLES)
set_property(TARGET custom PROPERTY C_STANDARD 99)
set_property(TARGET rwops PROPERTY C_STANDARD 99)
+ # If we are building static, just link all libraries (ffmpeg, sdl, etc.)
+ # If building shared, link shared kitchensink + SDL2 (ffmpeg gets pulled by kitchensink)
if(BUILD_STATIC)
- target_link_libraries(audio SDL_kitchensink_static ${LIBRARIES})
- target_link_libraries(complex SDL_kitchensink_static ${LIBRARIES})
- target_link_libraries(simple SDL_kitchensink_static ${LIBRARIES})
- target_link_libraries(custom SDL_kitchensink_static ${LIBRARIES})
- target_link_libraries(rwops SDL_kitchensink_static ${LIBRARIES})
+ set(EXAMPLE_LIBRARIES SDL_kitchensink_static ${LIBRARIES})
else()
- target_link_libraries(audio SDL_kitchensink ${SDL2_LIBRARIES})
- target_link_libraries(complex SDL_kitchensink ${SDL2_LIBRARIES})
- target_link_libraries(simple SDL_kitchensink ${SDL2_LIBRARIES})
- target_link_libraries(custom SDL_kitchensink ${SDL2_LIBRARIES})
- target_link_libraries(rwops SDL_kitchensink ${SDL2_LIBRARIES})
+ set(EXAMPLE_LIBRARIES SDL_kitchensink ${SDL2_LIBRARIES})
endif()
+ if(USE_ASAN)
+ set(EXAMPLE_LIBRARIES asan ${EXAMPLE_LIBRARIES})
+ endif()
+
+ target_link_libraries(audio ${EXAMPLE_LIBRARIES})
+ target_link_libraries(complex ${EXAMPLE_LIBRARIES})
+ target_link_libraries(simple ${EXAMPLE_LIBRARIES})
+ target_link_libraries(custom ${EXAMPLE_LIBRARIES})
+ target_link_libraries(rwops ${EXAMPLE_LIBRARIES})
if(USE_ASAN)
target_compile_options(audio PRIVATE "-fsanitize=address")
diff --git a/README.md b/README.md
index a9262d4..744bad7 100644
--- a/README.md
+++ b/README.md
@@ -90,7 +90,7 @@ supported on all OSes (eg. windows).
After building, you can run with the following (make sure to set correct llvm-symbolizer path):
```
-ASAN_OPTIONS=symbolize=1 ASAN_SYMBOLIZER_PATH=/usr/bin/llvm-symbolizer ./examplevideo <my videofile>
+ASAN_OPTIONS=symbolize=1 ASAN_SYMBOLIZER_PATH=/usr/bin/llvm-symbolizer ./complex <my videofile>
```
## 3. Why the name SDL_kitchensink