Merge pull request #349 from jardous/fastmath

add -ffast-math to speed up the execution
This commit is contained in:
Robin Davies
2025-07-23 14:14:12 -04:00
committed by GitHub
+26 -39
View File
@@ -59,8 +59,8 @@ find_package(sdbus-c++ REQUIRED)
find_package(ICU REQUIRED COMPONENTS uc i18n ) find_package(ICU REQUIRED COMPONENTS uc i18n)
message(STATUS "ICU_LIBRARIES: ${ICU_LIBRARIES}") message(STATUS "ICU_LIBRARIES: ${ICU_LIBRARIES}")
if(DEFINED ENV{GITHUB_ACTIONS}) if(DEFINED ENV{GITHUB_ACTIONS})
@@ -84,7 +84,7 @@ set (ENABLE_VST3 0)
if (ENABLE_VST3) if (ENABLE_VST3)
set (VST3PATH "../../vst3sdk") set (VST3PATH "../../vst3sdk")
message(STATUS " VST3 Support Enabled") message(STATUS " VST3 Support Enabled")
set (VST3_INCLUDES "${VST3PATH}") set (VST3_INCLUDES "${VST3PATH}")
set (VST3_LIBRARIES vst3_lib dl) set (VST3_LIBRARIES vst3_lib dl)
@@ -133,7 +133,7 @@ set (LV2DEV_INCLUDE_DIRS ) # use lvt headers fro /usr/include
# version of websocketpp cannot compile under GCC 12.x. # version of websocketpp cannot compile under GCC 12.x.
set (WEBSOCKETPP_INCLUDE_DIRS ${PROJECT_SOURCE_DIR}/modules/websocketpp) set (WEBSOCKETPP_INCLUDE_DIRS ${PROJECT_SOURCE_DIR}/modules/websocketpp)
message(STATUS "WEBSOCKETPP_INCLUDE_DIRS ${WEBSOCKETPP_INCLUDE_DIRS}" ) message(STATUS "WEBSOCKETPP_INCLUDE_DIRS ${WEBSOCKETPP_INCLUDE_DIRS}")
# pkg_check_modules(JACK "jack") # pkg_check_modules(JACK "jack")
# if(!JACK_FOUND) # if(!JACK_FOUND)
@@ -151,7 +151,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED True)
if (!ENABLE_VST3) if (!ENABLE_VST3)
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wno-psabi -DARCHITECTURE=${CPACK_SYSTEM_NAME}") set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wno-psabi -DARCHITECTURE=${CPACK_SYSTEM_NAME}")
else() else()
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-multichar -Wno-psabi") set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-multichar -Wno-psabi")
endif() endif()
EXECUTE_PROCESS( COMMAND dpkg --print-architecture COMMAND tr -d '\n' OUTPUT_VARIABLE DEBIAN_ARCHITECTURE ) EXECUTE_PROCESS( COMMAND dpkg --print-architecture COMMAND tr -d '\n' OUTPUT_VARIABLE DEBIAN_ARCHITECTURE )
@@ -163,22 +163,22 @@ if (CMAKE_BUILD_TYPE MATCHES Debug)
message(STATUS "Debug build") message(STATUS "Debug build")
# Must not -D_GLIBCXX_DEBUG, since it conflict with SQLiteCpp.lol # Must not -D_GLIBCXX_DEBUG, since it conflict with SQLiteCpp.lol
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -g -DDEBUG " ) set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -g -DDEBUG " )
if (USE_SANITIZE) if (USE_SANITIZE)
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -static-libasan " ) set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -static-libasan " )
endif() endif()
elseif(CMAKE_BUILD_TYPE MATCHES RelWithDebInfo) elseif(CMAKE_BUILD_TYPE MATCHES RelWithDebInfo)
message(STATUS "RelWithgDebInfo build") message(STATUS "RelWithgDebInfo build")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O3 -DNDEBUG" ) set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O3 -ffast-math -DNDEBUG" )
else() else()
message(STATUS "Release build") message(STATUS "Release build")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -DNDEBUG" ) set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -ffast-math -DNDEBUG" )
endif() endif()
if (ENABLE_BACKTRACE) if (ENABLE_BACKTRACE)
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -rdynamic") set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -rdynamic")
if (${DEBIAN_ARCHITECTURE} MATCHES arm64) if (${DEBIAN_ARCHITECTURE} MATCHES arm64)
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -funwind-tables") set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -funwind-tables")
endif() endif()
endif() endif()
@@ -189,7 +189,7 @@ endif()
# message(STATUS "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}") # message(STATUS "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}")
# set(CMAKE_ENABLE_EXPORTS 1) # set(CMAKE_ENABLE_EXPORTS 1)
message (STATUS "Cxx flags: ${CMAKE_CXX_FLAGS}" ) message (STATUS "Cxx flags: ${CMAKE_CXX_FLAGS}")
add_definitions(-DBOOST_ERROR_CODE_HEADER_ONLY -DBOOST_BIND_GLOBAL_PLACEHOLDERS -DONBOARDING) add_definitions(-DBOOST_ERROR_CODE_HEADER_ONLY -DBOOST_BIND_GLOBAL_PLACEHOLDERS -DONBOARDING)
@@ -350,8 +350,7 @@ add_library(libpipedald STATIC ${PIPEDAL_SOURCES})
target_compile_definitions(libpipedald PUBLIC "_REENTRANT") target_compile_definitions(libpipedald PUBLIC "_REENTRANT")
target_include_directories(libpipedald PUBLIC ${PIPEDAL_INCLUDES} target_include_directories(libpipedald PUBLIC ${PIPEDAL_INCLUDES})
)
target_link_libraries(libpipedald target_link_libraries(libpipedald
PUBLIC PUBLIC
@@ -394,10 +393,7 @@ target_include_directories(pipedald PRIVATE ${PIPEDAL_INCLUDES})
target_compile_definitions(pipedald PRIVATE "ENABLE_BACKTRACE=${ENABLE_BACKTRACE}") target_compile_definitions(pipedald PRIVATE "ENABLE_BACKTRACE=${ENABLE_BACKTRACE}")
target_link_libraries(pipedald PRIVATE PiPedalCommon target_link_libraries(pipedald PRIVATE PiPedalCommon ${PIPEDAL_LIBS})
${PIPEDAL_LIBS}
)
################################# #################################
@@ -448,29 +444,23 @@ add_executable(pipedaltest
MemDebug.hpp MemDebug.hpp
) )
target_link_libraries(pipedaltest PRIVATE ${PIPEDAL_LIBS} ${ICU_LIBRARIES}) target_link_libraries(pipedaltest PRIVATE ${PIPEDAL_LIBS} ${ICU_LIBRARIES})
target_include_directories(pipedaltest PRIVATE ${PIPEDAL_INCLUDES} target_include_directories(pipedaltest PRIVATE ${PIPEDAL_INCLUDES})
)
set_target_properties(pipedaltest PROPERTIES EXCLUDE_FROM_ALL ${PIPEDAL_EXCLUDE_TESTS}) set_target_properties(pipedaltest PROPERTIES EXCLUDE_FROM_ALL ${PIPEDAL_EXCLUDE_TESTS})
if (NOT GITHUB_ACTIONS) # Google perftools are not available on Github action servers. if (NOT GITHUB_ACTIONS) # Google perftools are not available on Github action servers.
add_executable(pipedalProfilePlugin add_executable(pipedalProfilePlugin
profilePluginMain.cpp ArmPerformanceCounters.hpp profilePluginMain.cpp ArmPerformanceCounters.hpp
) )
target_link_libraries(pipedalProfilePlugin PRIVATE profiler ${PIPEDAL_LIBS}) target_link_libraries(pipedalProfilePlugin PRIVATE profiler ${PIPEDAL_LIBS})
target_include_directories(pipedalProfilePlugin PRIVATE ${PIPEDAL_INCLUDES} target_include_directories(pipedalProfilePlugin PRIVATE ${PIPEDAL_INCLUDES}
) )
if (${DEBIAN_ARCHITECTURE} MATCHES arm64) if (${DEBIAN_ARCHITECTURE} MATCHES arm64)
target_compile_definitions(pipedalProfilePlugin PRIVATE "PIPEDAL_AARCH64") target_compile_definitions(pipedalProfilePlugin PRIVATE "PIPEDAL_AARCH64")
endif() endif()
endif() endif()
add_executable(jsonTest add_executable(jsonTest
testMain.cpp testMain.cpp
jsonTest.cpp jsonTest.cpp
@@ -484,8 +474,7 @@ add_executable(jsonTest
PromiseTest.cpp PromiseTest.cpp
) )
target_link_libraries(jsonTest PRIVATE PiPedalCommon) target_link_libraries(jsonTest PRIVATE PiPedalCommon)
target_include_directories(jsonTest PRIVATE ${PIPEDAL_INCLUDES} target_include_directories(jsonTest PRIVATE ${PIPEDAL_INCLUDES})
)
set_target_properties(jsonTest PROPERTIES EXCLUDE_FROM_ALL ${PIPEDAL_EXCLUDE_TESTS}) set_target_properties(jsonTest PROPERTIES EXCLUDE_FROM_ALL ${PIPEDAL_EXCLUDE_TESTS})
@@ -519,7 +508,7 @@ target_link_libraries(pipedaltest PRIVATE ${PIPEDAL_LIBS}
# licensing problems. # licensing problems.
# There's no easy way to get the VST SDK to build without # There's no easy way to get the VST SDK to build without
# GCC c++11 linkage, which is not compatible with pipedal's # GCC c++11 linkage, which is not compatible with pipedal's
# use of C++20 features (strictly a link time breakage). # use of C++20 features (strictly a link time breakage).
# #
# So pipedal rebuilds the VST3 SDK using pipedal-compatible # So pipedal rebuilds the VST3 SDK using pipedal-compatible
@@ -693,7 +682,7 @@ if(ENABLE_VST3)
add_library(vst3_lib STATIC ${vst3_sources}) add_library(vst3_lib STATIC ${vst3_sources})
target_include_directories(vst3_lib PRIVATE ${VST3_INCLUDES} target_include_directories(vst3_lib PRIVATE ${VST3_INCLUDES}
) )
@@ -710,8 +699,7 @@ if(ENABLE_VST3)
# asan_options.cpp # asan_options.cpp
# ) # )
target_include_directories(vst3test PRIVATE ${PIPEDAL_INCLUDES} target_include_directories(vst3test PRIVATE ${PIPEDAL_INCLUDES})
)
target_link_libraries(vst3test PRIVATE ${PIPEDAL_LIBS} target_link_libraries(vst3test PRIVATE ${PIPEDAL_LIBS}
@@ -773,8 +761,7 @@ add_executable(pipedal_latency_test
CpuUse.cpp CpuUse.cpp
) )
target_link_libraries(pipedal_latency_test PRIVATE pthread asound PiPedalCommon target_link_libraries(pipedal_latency_test PRIVATE pthread asound PiPedalCommon)
)
add_executable(pipedal_alsa_info add_executable(pipedal_alsa_info
@@ -814,7 +801,7 @@ add_executable(pipedal_update
AdminInstallUpdate.cpp AdminInstallUpdate.hpp AdminInstallUpdate.cpp AdminInstallUpdate.hpp
) )
target_link_libraries(pipedal_update PRIVATE stdc++fs systemd PiPedalCommon ) target_link_libraries(pipedal_update PRIVATE stdc++fs systemd PiPedalCommon )
add_executable(pipedaladmind AdminMain.cpp CommandLineParser.hpp add_executable(pipedaladmind AdminMain.cpp CommandLineParser.hpp
@@ -834,7 +821,7 @@ target_link_libraries(pipedaladmind PRIVATE PiPedalCommon pthread atomic stdc++f
add_executable(processcopyrights copyrightMain.cpp add_executable(processcopyrights copyrightMain.cpp
CommandLineParser.hpp CommandLineParser.hpp
PiPedalException.hpp PiPedalException.hpp
asan_options.cpp ) asan_options.cpp)
target_link_libraries(processcopyrights PRIVATE PiPedalCommon stdc++fs) target_link_libraries(processcopyrights PRIVATE PiPedalCommon stdc++fs)
set (REACT_BUILD_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../build/react/build/) set (REACT_BUILD_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../build/react/build/)
@@ -876,7 +863,7 @@ add_custom_target (
install (TARGETS pipedalconfig pipedal_kconfig pipedal_latency_test DESTINATION ${CMAKE_INSTALL_PREFIX}/bin install (TARGETS pipedalconfig pipedal_kconfig pipedal_latency_test DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
EXPORT pipedalTargets) EXPORT pipedalTargets)
install (TARGETS pipedald pipedaladmind pipedal_update DESTINATION ${CMAKE_INSTALL_PREFIX}/sbin install (TARGETS pipedald pipedaladmind pipedal_update DESTINATION ${CMAKE_INSTALL_PREFIX}/sbin
EXPORT pipedalSbinTargets) EXPORT pipedalSbinTargets)