Add support for MSVC
This commit is contained in:
parent
8362bdad03
commit
6e88b9f400
|
@ -29,10 +29,10 @@ else()
|
|||
message("Building for target host application: " ${GMIC_QT_HOST})
|
||||
endif()
|
||||
|
||||
if(EXISTS "../src/gmic.cpp")
|
||||
set (GMIC_PATH "../src" CACHE STRING "Define the path to the gmic headers")
|
||||
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/../src/gmic.cpp")
|
||||
set (GMIC_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../src" CACHE STRING "Define the path to the gmic headers")
|
||||
else()
|
||||
set (GMIC_PATH "../gmic/src" CACHE STRING "Define the path to the gmic headers")
|
||||
set (GMIC_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../gmic/src" CACHE STRING "Define the path to the gmic headers")
|
||||
endif()
|
||||
|
||||
message("G'MIC path: " ${GMIC_PATH})
|
||||
|
@ -44,15 +44,20 @@ set (GMIC_LIB_PATH "${GMIC_PATH}" CACHE STRING "Define the path to the GMIC shar
|
|||
option(ENABLE_ASAN "Enable -fsanitize=address (if debug build)" ON)
|
||||
option(ENABLE_FFTW3 "Enable FFTW3 library support" ON)
|
||||
|
||||
option(ENABLE_LTO "Enable -flto (Link Time Optimizer) on gcc and clang" ON)
|
||||
option(ENABLE_LTO "Enable Link Time Optimizer" ON)
|
||||
|
||||
if (WIN32)
|
||||
message("LTO is disabled (windows platform)")
|
||||
if (MSVC)
|
||||
option(ENABLE_CFG "Enable Control Flow Guard (MSVC)" ON)
|
||||
add_definitions(-D__PRETTY_FUNCTION__=__FUNCSIG__)
|
||||
endif()
|
||||
|
||||
if (WIN32 AND NOT MSVC)
|
||||
message("LTO is disabled (windows platform, not MSVC)")
|
||||
set(ENABLE_LTO OFF)
|
||||
endif()
|
||||
|
||||
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
set(ENABLE_LTO OFF)
|
||||
set(ENABLE_LTO OFF FORCE)
|
||||
endif()
|
||||
|
||||
|
||||
|
@ -123,6 +128,11 @@ endif()
|
|||
|
||||
# Required packages
|
||||
|
||||
#
|
||||
# Threads
|
||||
#
|
||||
find_package(Threads REQUIRED)
|
||||
|
||||
#
|
||||
# Qt5
|
||||
#
|
||||
|
@ -203,10 +213,33 @@ endif()
|
|||
# LTO option
|
||||
#
|
||||
|
||||
if (ENABLE_LTO AND (CMAKE_COMPILER_IS_GNUCC OR (CMAKE_CSS_COMPILER_IS STREQUAL "Clang")))
|
||||
if (ENABLE_LTO)
|
||||
message("Link Time Optimizer enabled")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -flto")
|
||||
if (MSVC)
|
||||
string(REPLACE "INCREMENTAL" "INCREMENTAL:NO" CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO}")
|
||||
string(REPLACE "INCREMENTAL" "INCREMENTAL:NO" CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO}")
|
||||
string(REPLACE "INCREMENTAL" "INCREMENTAL:NO" CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO}")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /GL")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /LTCG")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /LTCG")
|
||||
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /LTCG")
|
||||
else()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -flto")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
#
|
||||
# Enable CFG
|
||||
#
|
||||
if (MSVC)
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:4194304")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /STACK:4194304")
|
||||
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /STACK:4194304")
|
||||
if (ENABLE_CFG)
|
||||
add_compile_options(/guard:CF)
|
||||
add_link_options(/GUARD:CF)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
#
|
||||
|
@ -265,9 +298,13 @@ if (WIN32)
|
|||
add_definitions(-Dcimg_display=2)
|
||||
add_definitions(-DPSAPI_VERSION=1)
|
||||
add_definitions(-D_IS_WINDOWS_)
|
||||
if (MSVC)
|
||||
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
|
||||
add_compile_options(/wd4267)
|
||||
endif()
|
||||
set(gmic_qt_LIBRARIES
|
||||
${gmic_qt_LIBRARIES}
|
||||
pthread psapi gdi32
|
||||
Threads::Threads psapi gdi32
|
||||
)
|
||||
endif()
|
||||
|
||||
|
@ -282,19 +319,30 @@ if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|||
endif(ENABLE_ASAN)
|
||||
elseif (CMAKE_BUILD_TYPE STREQUAL "Release")
|
||||
add_definitions(-DQT_NO_DEBUG_OUTPUT)
|
||||
string(REPLACE "-O2" "" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
|
||||
string(REPLACE "-O3" "" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Ofast")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s")
|
||||
if (WIN32)
|
||||
if (MSVC)
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /fp:fast /Oi")
|
||||
else()
|
||||
string(REPLACE "-O2" "" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
|
||||
string(REPLACE "-O3" "" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Ofast")
|
||||
endif()
|
||||
if (NOT MSVC)
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s")
|
||||
endif()
|
||||
if (WIN32 AND NOT MSVC)
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -mwindows")
|
||||
endif()
|
||||
elseif (CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
|
||||
add_definitions(-DQT_NO_DEBUG_OUTPUT)
|
||||
string(REPLACE "-O2" "" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
|
||||
string(REPLACE "-O3" "" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
|
||||
set_source_files_properties(${GMIC_PATH}/gmic.cpp PROPERTIES COMPILE_FLAGS "-Ofast")
|
||||
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O2")
|
||||
if(MSVC)
|
||||
string(REPLACE "Ob1" "Ob2" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
|
||||
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /fp:fast /Oi")
|
||||
else()
|
||||
string(REPLACE "-O2" "" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
|
||||
string(REPLACE "-O3" "" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
|
||||
set_source_files_properties(${GMIC_PATH}/gmic.cpp PROPERTIES COMPILE_FLAGS "-Ofast")
|
||||
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O2")
|
||||
endif()
|
||||
else()
|
||||
message(FATAL_ERROR "Build type not recognized (${CMAKE_BUILD_TYPE})")
|
||||
endif()
|
||||
|
|
|
@ -62,7 +62,7 @@ else()
|
|||
|
||||
find_library(
|
||||
FFTW3_LIBRARY
|
||||
NAMES libfftw3 libfftw3-3 libfftw3f-3 libfftw3l-3
|
||||
NAMES libfftw3 libfftw3-3 libfftw3f-3 libfftw3l-3 fftw3
|
||||
DOC "Libraries to link against for FFT Support")
|
||||
|
||||
if (FFTW3_LIBRARY)
|
||||
|
|
|
@ -161,7 +161,7 @@ void FloatParameter::timerEvent(QTimerEvent * event)
|
|||
{
|
||||
killTimer(event->timerId());
|
||||
_timerId = 0;
|
||||
if (not _spinBox->unfinishedKeyboardEditing()) {
|
||||
if (!_spinBox->unfinishedKeyboardEditing()) {
|
||||
notifyIfRelevant();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -156,7 +156,7 @@ void IntParameter::timerEvent(QTimerEvent * e)
|
|||
{
|
||||
killTimer(e->timerId());
|
||||
_timerId = 0;
|
||||
if (not _spinBox->unfinishedKeyboardEditing()) {
|
||||
if (!_spinBox->unfinishedKeyboardEditing()) {
|
||||
notifyIfRelevant();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -202,7 +202,7 @@ void PointParameter::setVisibilityState(AbstractParameter::VisibilityState state
|
|||
|
||||
void PointParameter::updateView()
|
||||
{
|
||||
if (not _spinBoxX) {
|
||||
if (!_spinBoxX) {
|
||||
return;
|
||||
}
|
||||
disconnectSpinboxes();
|
||||
|
|
|
@ -270,7 +270,7 @@ void FiltersPresenter::selectFilterFromHash(QString hash, bool notify)
|
|||
hashExists = false;
|
||||
}
|
||||
}
|
||||
if (not hashExists) {
|
||||
if (!hashExists) {
|
||||
hash.clear();
|
||||
}
|
||||
setCurrentFilter(hash);
|
||||
|
@ -568,12 +568,12 @@ void FiltersPresenter::onTagToggled(int)
|
|||
|
||||
bool FiltersPresenter::danglingFaveIsSelected() const
|
||||
{
|
||||
if (not _filtersView || not _filtersView->aFaveIsSelected()) {
|
||||
if (!_filtersView || !_filtersView->aFaveIsSelected()) {
|
||||
return false;
|
||||
}
|
||||
QString hash = _filtersView->selectedFilterHash();
|
||||
if (_favesModel.contains(hash)) {
|
||||
return not _filtersModel.contains(_favesModel.getFaveFromHash(hash).originalHash());
|
||||
return !_filtersModel.contains(_favesModel.getFaveFromHash(hash).originalHash());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -271,7 +271,7 @@ void HeadlessProcessor::endApplication(const QString & errorMessage)
|
|||
if (!errorMessage.isEmpty()) {
|
||||
Logger::error(errorMessage);
|
||||
}
|
||||
QCoreApplication::exit(not errorMessage.isEmpty());
|
||||
QCoreApplication::exit(!errorMessage.isEmpty());
|
||||
}
|
||||
|
||||
} // namespace GmicQt
|
||||
|
|
|
@ -407,7 +407,7 @@ void MainWindow::retrieveFilterAndParametersFromPluginParameters(QString & hash,
|
|||
const FiltersPresenter::Filter & filter = _filtersPresenter->currentFilter();
|
||||
if (!plainPath.isEmpty()) {
|
||||
_filtersPresenter->selectFilterFromAbsolutePathOrPlainName(plainPath);
|
||||
if (not filter.isValid()) {
|
||||
if (!filter.isValid()) {
|
||||
throw tr("Plugin was called with a filter path with no matching filter:\n\nPath: %1").arg(QString::fromStdString(_pluginParameters.filterPath));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue