diff --git a/CMakeLists.txt b/CMakeLists.txt index fe0af0500..c99783b75 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -105,6 +105,7 @@ option(ENABLE_JSBSIM "Set to ON to build FlightGear with JSBSim FDM (default option(EVENT_INPUT "Set to ON to build FlightGear with event-based Input support" ${EVENT_INPUT_DEFAULT}) option(ENABLE_LIBSVN "Set to ON to build FlightGear/terrasync with libsvnclient support (default)" ON) option(ENABLE_RTI "Set to ON to build FlightGear with RTI support" OFF) +option(ENABLE_PROFILE "Set to ON to build FlightGear with gperftools profiling support" ON) option(JPEG_FACTORY "Set to ON to build FlightGear with JPEG-factory support" OFF) option(SYSTEM_SQLITE "Set to ON to build FlightGear with the system's SQLite3 library" OFF) @@ -223,8 +224,12 @@ check_include_file(unistd.h HAVE_UNISTD_H) check_include_file(sys/time.h HAVE_SYS_TIME_H) check_include_file(windows.h HAVE_WINDOWS_H) -# check optionally supported dependencies -find_package(GooglePerfTools) +if(ENABLE_PROFILE) + find_package(GooglePerfTools) + if(GOOGLE_PERFTOOLS_FOUND) + set(FG_HAVE_GPERFTOOLS 1) + endif() +endif() if(ENABLE_RTI) find_package(RTI) diff --git a/src/Include/config_cmake.h.in b/src/Include/config_cmake.h.in index 181beffa5..3963d71e9 100644 --- a/src/Include/config_cmake.h.in +++ b/src/Include/config_cmake.h.in @@ -36,6 +36,7 @@ #define WEB_BROWSER "@WEB_BROWSER@" #cmakedefine FG_HAVE_HLA +#cmakedefine FG_HAVE_GPERFTOOLS #cmakedefine FG_JPEG_SERVER #cmakedefine SYSTEM_SQLITE diff --git a/src/Main/CMakeLists.txt b/src/Main/CMakeLists.txt index 72ed8634a..259b51132 100644 --- a/src/Main/CMakeLists.txt +++ b/src/Main/CMakeLists.txt @@ -90,7 +90,7 @@ if(ENABLE_JSBSIM) target_link_libraries(fgfs JSBSim) endif() -if(GOOGLE_PERFTOOLS_FOUND) +if(FG_HAVE_GPERFTOOLS) target_link_libraries(fgfs profiler) endif() diff --git a/src/Main/fg_commands.cxx b/src/Main/fg_commands.cxx index 1e32ef6b2..2230d7f3a 100644 --- a/src/Main/fg_commands.cxx +++ b/src/Main/fg_commands.cxx @@ -53,7 +53,7 @@ #include -#if GOOGLE_PERFTOOLS_FOUND == YES +#ifdef FG_HAVE_GPERFTOOLS # include #endif @@ -1453,7 +1453,7 @@ do_release_cockpit_button (const SGPropertyNode *arg) // Optional profiling commands using gperftools: // http://code.google.com/p/gperftools/ -#if GOOGLE_PERFTOOLS_FOUND != YES +#ifndef FG_HAVE_GPERFTOOLS static void no_profiling_support() { @@ -1469,7 +1469,7 @@ no_profiling_support() static bool do_profiler_start(const SGPropertyNode *arg) { -#if GOOGLE_PERFTOOLS_FOUND == YES +#ifdef FG_HAVE_GPERFTOOLS const char *filename = arg->getStringValue("filename", "fgfs.profile"); ProfilerStart(filename); return true; @@ -1482,7 +1482,7 @@ do_profiler_start(const SGPropertyNode *arg) static bool do_profiler_stop(const SGPropertyNode *arg) { -#if GOOGLE_PERFTOOLS_FOUND == YES +#ifdef FG_HAVE_GPERFTOOLS ProfilerStop(); return true; #else @@ -1565,10 +1565,8 @@ static struct { { "reload-shaders", do_reload_shaders }, { "reload-materials", do_materials_reload }, -#if GOOGLE_PERFTOOLS_FOUND == YES { "profiler-start", do_profiler_start }, { "profiler-stop", do_profiler_stop }, -#endif { 0, 0 } // zero-terminated };