From 8959dfa83f1a1edc24c166519476036049354554 Mon Sep 17 00:00:00 2001 From: Snaipe Date: Tue, 6 Sep 2016 18:02:38 +0200 Subject: [PATCH] cmake: Build libcriterion.so as an executable PIE --- .cmake/Modules/PackageUtils.cmake | 15 +++++++++++++-- CMakeLists.txt | 1 + src/core/report.c | 23 ----------------------- 3 files changed, 14 insertions(+), 25 deletions(-) diff --git a/.cmake/Modules/PackageUtils.cmake b/.cmake/Modules/PackageUtils.cmake index 593f2d1..31e3e2e 100644 --- a/.cmake/Modules/PackageUtils.cmake +++ b/.cmake/Modules/PackageUtils.cmake @@ -26,7 +26,7 @@ function (cr_link_libraries _TARGET) endfunction () function (cr_add_library _LIB) - set (options SHARED STATIC) + set (options SHARED STATIC RUNNABLE) set (oneValueArgs COMPONENT) set (multiValueArgs SOURCES HEADERS PROPERTIES) cmake_parse_arguments (ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) @@ -38,7 +38,18 @@ function (cr_add_library _LIB) set (flags ${flags} STATIC) endif () - add_library(${_LIB} ${flags} ${ARGS_SOURCES} ${ARGS_HEADERS}) + if (ARGS_RUNNABLE AND ARGS_SHARED) + include (CheckCCompilerFlag) + check_c_compiler_flag("-fPIC -pie -Wl,-E" COMPILER_HAS_PIE) + endif () + + if (ARGS_RUNNABLE AND ARGS_SHARED AND COMPILER_HAS_PIE) + string (REPLACE "-shared" "-pie -Wl,-E" CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "${CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS}") + set (CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "${CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS}" PARENT_SCOPE) + add_library(${_LIB} SHARED ${ARGS_SOURCES} ${ARGS_HEADERS}) + else () + add_library(${_LIB} ${flags} ${ARGS_SOURCES} ${ARGS_HEADERS}) + endif () set_target_properties(${_LIB} PROPERTIES ${ARGS_PROPERTIES}) foreach (F ${INTERFACE_FILES}) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3ae06a5..eba8935 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -104,6 +104,7 @@ cr_add_library(criterion SHARED PROPERTIES VERSION ${PROJECT_SONAME} SOVERSION ${PROJECT_SOVERSION} + RUNNABLE ) cr_link_subproject(criterion csptr STATIC) diff --git a/src/core/report.c b/src/core/report.c index 9d1b8b3..6f6c968 100644 --- a/src/core/report.c +++ b/src/core/report.c @@ -62,26 +62,3 @@ IMPL_CALL_REPORT_HOOKS(POST_TEST) IMPL_CALL_REPORT_HOOKS(POST_FINI) IMPL_CALL_REPORT_HOOKS(POST_SUITE) IMPL_CALL_REPORT_HOOKS(POST_ALL) - -ReportHook(PRE_ALL)(CR_UNUSED struct criterion_test_set *arg) { -} -ReportHook(PRE_SUITE)(CR_UNUSED struct criterion_suite_set *arg) { -} -ReportHook(PRE_INIT)(CR_UNUSED struct criterion_test *arg) { -} -ReportHook(PRE_TEST)(CR_UNUSED struct criterion_test *arg) { -} -ReportHook(ASSERT)(CR_UNUSED struct criterion_assert_stats *arg) { -} -ReportHook(THEORY_FAIL)(CR_UNUSED struct criterion_theory_stats *arg) { -} -ReportHook(TEST_CRASH)(CR_UNUSED struct criterion_test_stats *arg) { -} -ReportHook(POST_TEST)(CR_UNUSED struct criterion_test_stats *arg) { -} -ReportHook(POST_FINI)(CR_UNUSED struct criterion_test_stats *arg) { -} -ReportHook(POST_SUITE)(CR_UNUSED struct criterion_suite_stats *arg) { -} -ReportHook(POST_ALL)(CR_UNUSED struct criterion_global_stats *arg) { -}