cmark

My personal build of CMark ✏️

Commit
b4599a48694b78a5db144f17c2ab281a6d9f17d1
Parent
8f429810c03f1d869936776b174332d55ff88bde
Author
John MacFarlane <jgm@berkeley.edu>
Date

Added Ubsan build target, to check for undefined behavior.

Diffstat

3 files changed, 13 insertions, 2 deletions

Status File Name N° Changes Insertions Deletions
Modified CMakeLists.txt 2 1 1
Modified Makefile 8 7 1
Modified src/CMakeLists.txt 5 5 0
diff --git a/CMakeLists.txt b/CMakeLists.txt
@@ -21,5 +21,5 @@ add_subdirectory(test testdir)
 
 if(NOT CMAKE_BUILD_TYPE)
   set(CMAKE_BUILD_TYPE "Release" CACHE STRING
-  "Choose the type of build, options are: Debug Profile Release." FORCE)
+  "Choose the type of build, options are: Debug Profile Release Asan Ubsan." FORCE)
 endif(NOT CMAKE_BUILD_TYPE)
diff --git a/Makefile b/Makefile
@@ -19,7 +19,7 @@ VERSION?=$(SPECVERSION)
 RELEASE?=CommonMark-$(VERSION)
 INSTALL_PREFIX?=/usr/local
 
-.PHONY: all cmake_build spec leakcheck clean fuzztest dingus upload test update-site upload-site debug asan mingw archive bench astyle update-spec afl
+.PHONY: all cmake_build spec leakcheck clean fuzztest dingus upload test update-site upload-site debug ubsan asan mingw archive bench astyle update-spec afl
 
 all: cmake_build man/man3/cmark.3
 
@@ -47,6 +47,12 @@ debug:
 	cmake .. -DCMAKE_BUILD_TYPE=Debug; \
 	make
 
+ubsan:
+	mkdir -p $(BUILDDIR); \
+	cd $(BUILDDIR); \
+	cmake .. -DCMAKE_BUILD_TYPE=Ubsan; \
+	make
+
 asan:
 	mkdir -p $(BUILDDIR); \
 	cd $(BUILDDIR); \
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
@@ -164,3 +164,7 @@ endif()
 if($ENV{TIMER})
   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DTIMER=1")
 endif($ENV{TIMER})
+
+if(CMAKE_BUILD_TYPE STREQUAL "Ubsan")
+  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=undefined")
+endif()+
\ No newline at end of file