diff options
-rw-r--r-- | config_host.mk.in | 1 | ||||
-rw-r--r-- | configure.ac | 30 | ||||
-rw-r--r-- | solenv/gbuild/LinkTarget.mk | 6 | ||||
-rw-r--r-- | solenv/gbuild/platform/com_GCC_defs.mk | 1 | ||||
-rw-r--r-- | solenv/gbuild/platform/com_MSC_defs.mk | 1 |
5 files changed, 34 insertions, 5 deletions
diff --git a/config_host.mk.in b/config_host.mk.in index 64a1a6627386..9e8b0c2304e9 100644 --- a/config_host.mk.in +++ b/config_host.mk.in @@ -177,6 +177,7 @@ export ENABLE_OOENV=@ENABLE_OOENV@ export ENABLE_OPENGL_TRANSITIONS=@ENABLE_OPENGL_TRANSITIONS@ export ENABLE_OPENGL_CANVAS=@ENABLE_OPENGL_CANVAS@ export ENABLE_OPTIMIZED=@ENABLE_OPTIMIZED@ +export ENABLE_OPTIMIZED_DEBUG=@ENABLE_OPTIMIZED_DEBUG@ export ENABLE_PCH=@ENABLE_PCH@ export ENABLE_PDFIMPORT=@ENABLE_PDFIMPORT@ export ENABLE_PDFIUM=@ENABLE_PDFIUM@ diff --git a/configure.ac b/configure.ac index 60ece7a9af17..0b728af2e5fb 100644 --- a/configure.ac +++ b/configure.ac @@ -1194,10 +1194,11 @@ libo_FUZZ_ARG_ENABLE(symbols, Example: --enable-symbols="all -sw/ -Library_sc".])) libo_FUZZ_ARG_ENABLE(optimized, - AS_HELP_STRING([--disable-optimized], + AS_HELP_STRING([--enable-optimized=<yes/no/debug>], [Whether to compile with optimization flags. By default, disabled for --enable-debug and --enable-dbgutil, enabled - otherwise.])) + otherwise. Using 'debug' will try to use only optimizations that should + not interfere with debugging.])) libo_FUZZ_ARG_ENABLE(runtime-optimizations, AS_HELP_STRING([--disable-runtime-optimizations], @@ -4204,6 +4205,8 @@ if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" fi fi +ENABLE_OPTIMIZED= +ENABLE_OPTIMIZED_DEBUG= AC_MSG_CHECKING([whether to compile with optimization flags]) if test -z "$enable_optimized"; then if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then @@ -4212,14 +4215,33 @@ if test -z "$enable_optimized"; then enable_optimized=yes fi fi -if test "$enable_optimized" != no; then +if test "$enable_optimized" = yes; then ENABLE_OPTIMIZED=TRUE AC_MSG_RESULT([yes]) +elif test "$enable_optimized" = debug; then + ENABLE_OPTIMIZED_DEBUG=TRUE + AC_MSG_RESULT([yes (debug)]) + HAVE_GCC_OG= + if test "$GCC" = "yes"; then + AC_MSG_CHECKING([whether $CC_BASE supports -Og]) + save_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -Werror -Og" + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[]) + CFLAGS=$save_CFLAGS + if test "$HAVE_GCC_OG" = "TRUE"; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + fi + if test -z "$HAVE_GCC_OG"; then + AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.]) + fi else - ENABLE_OPTIMIZED= AC_MSG_RESULT([no]) fi AC_SUBST(ENABLE_OPTIMIZED) +AC_SUBST(ENABLE_OPTIMIZED_DEBUG) # # determine CPUNAME, OS, ... diff --git a/solenv/gbuild/LinkTarget.mk b/solenv/gbuild/LinkTarget.mk index 914c36d35cd2..9e14f599b690 100644 --- a/solenv/gbuild/LinkTarget.mk +++ b/solenv/gbuild/LinkTarget.mk @@ -44,7 +44,11 @@ gb_LinkTarget__symbols_enabled = \ $(filter $(1),$(ENABLE_SYMBOLS_FOR)))) # debug flags, if the LinkTarget is named in the list of libraries of ENABLE_SYMBOLS_FOR -gb_LinkTarget__get_debugflags=$(if $(ENABLE_OPTIMIZED),$(gb_COMPILEROPTFLAGS),$(gb_COMPILERNOOPTFLAGS)) $(if $(call gb_LinkTarget__symbols_enabled,$(1)),$(gb_DEBUGINFO_FLAGS)) +gb_LinkTarget__get_debugflags= \ +$(if $(ENABLE_OPTIMIZED),$(gb_COMPILEROPTFLAGS), \ +$(if $(ENABLE_OPTIMIZED_DEBUG),$(gb_COMPILERDEBUGOPTFLAGS), \ +$(gb_COMPILERNOOPTFLAGS))) \ +$(if $(call gb_LinkTarget__symbols_enabled,$(1)),$(gb_DEBUGINFO_FLAGS)) # similar for LDFLAGS, use linker optimization flags in non-debug case, # but moreover strip debug from libraries for which debuginfo is not wanted diff --git a/solenv/gbuild/platform/com_GCC_defs.mk b/solenv/gbuild/platform/com_GCC_defs.mk index 530bc16e8da3..cc0eabc292f2 100644 --- a/solenv/gbuild/platform/com_GCC_defs.mk +++ b/solenv/gbuild/platform/com_GCC_defs.mk @@ -201,6 +201,7 @@ gb_PrecompiledHeader_EXCEPTIONFLAGS := $(gb_LinkTarget_EXCEPTIONFLAGS) # optimization level gb_COMPILERNOOPTFLAGS := -O0 -fstrict-aliasing -fstrict-overflow +gb_COMPILERDEBUGOPTFLAGS := -Og ifeq ($(OS),ANDROID) gb_DEBUGINFO_FLAGS=-glldb diff --git a/solenv/gbuild/platform/com_MSC_defs.mk b/solenv/gbuild/platform/com_MSC_defs.mk index 11c1aa6d4b49..7409cffa1f40 100644 --- a/solenv/gbuild/platform/com_MSC_defs.mk +++ b/solenv/gbuild/platform/com_MSC_defs.mk @@ -265,6 +265,7 @@ gb_LINKER_DEBUGINFO_FLAGS := gb_COMPILEROPTFLAGS := -O2 -Oy- gb_COMPILERNOOPTFLAGS := -Od +gb_COMPILERDEBUGOPTFLAGS := ifeq ($(gb_FULLDEPS),$(true)) gb_COMPILERDEPFLAGS := -showIncludes |