Skip to content
Snippets Groups Projects
Commit 5401720d authored by Andreas Traczyk's avatar Andreas Traczyk
Browse files

Revert "project: alter cmake for visual studio project generation"

This reverts commit 55ab57c4.

Reason for revert: packaging scripts require shared lib

Change-Id: I9071645bafd226fa8e3a8e1129ec45079d5d8cc8
parent 55ab57c4
Branches
No related tags found
Loading
......@@ -20,22 +20,11 @@ INCLUDE(GNUInstallDirs)
INCLUDE(CMakePackageConfigHelpers)
INCLUDE(GenerateExportHeader)
string(SUBSTRING ${CMAKE_GENERATOR} 0 14 CMAKE_GENERATOR_SHORT)
if(CMAKE_GENERATOR_SHORT MATCHES "Visual Studio ")
message(STATUS "Generating VS project")
set(CMAKE_CXX_COMPILER_ID "MSVC")
set(ENABLE_TEST false)
set(ENABLE_STATIC true)
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi /W0")
endif()
if (NOT (CMAKE_CXX_COMPILER_ID MATCHES "MSVC"))
ADD_DEFINITIONS(
${QT_DEFINITIONS}
-fexceptions
-O2
)
endif()
ADD_DEFINITIONS(
${QT_DEFINITIONS}
-fexceptions
-O2
)
# Options
set(CHK_FREEABLE_BEFORE_ERASE_ACCOUNT_DESCRIPTION
......@@ -94,41 +83,39 @@ IF((${ENABLE_TEST} MATCHES true))
SET(ENABLE_LIBWRAP true) # because mocks use the same interface present in src/qtwrapper
ENDIF()
if (NOT (CMAKE_CXX_COMPILER_ID MATCHES "MSVC"))
# Enable some useful warnings
ADD_DEFINITIONS(
-Wall
-Wextra
-Wmissing-declarations
-Wmissing-noreturn
-Wpointer-arith
-Wcast-align
-Wwrite-strings
-Wformat-nonliteral
-Wformat-security
-Wswitch-enum
-Winit-self
-Wmissing-include-dirs
-Wundef
-Wmissing-format-attribute
-Wno-reorder
-Wunused
-Wuninitialized
-Woverloaded-virtual
-Wunused-value
-pedantic
-Wnonnull
-Wsequence-point
#-Wsystem-headers
-Wsizeof-pointer-memaccess
#-Wuseless-cast
-Wvarargs
#See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55578
-Wno-unused-function
-Wno-attributes
)
endif()
ADD_DEFINITIONS(
-Wall
-Wextra
-Wmissing-declarations
-Wmissing-noreturn
-Wpointer-arith
-Wcast-align
-Wwrite-strings
-Wformat-nonliteral
-Wformat-security
-Wswitch-enum
-Winit-self
-Wmissing-include-dirs
-Wundef
-Wmissing-format-attribute
-Wno-reorder
-Wunused
-Wuninitialized
-Woverloaded-virtual
-Wunused-value
-pedantic
-Wnonnull
-Wsequence-point
#-Wsystem-headers
-Wsizeof-pointer-memaccess
#-Wuseless-cast
-Wvarargs
#See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55578
-Wno-unused-function
-Wno-attributes
)
#Add more warnings for compilers that support it. I used this command:
#curl https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Warning-Options.html | \
......@@ -211,9 +198,7 @@ IF(${ENABLE_LIBWRAP} MATCHES true)
ADD_SUBDIRECTORY(${CMAKE_SOURCE_DIR}/src/qtwrapper)
ADD_DEFINITIONS(-DENABLE_LIBWRAP=true) # Use native calls (no dbus)
if (NOT (CMAKE_CXX_COMPILER_ID MATCHES "MSVC"))
ADD_DEFINITIONS(-Wno-unknown-pragmas)
endif()
ADD_DEFINITIONS(-Wno-unknown-pragmas)
SET(ENABLE_QT5 true) # Use Qt5
MESSAGE(STATUS "Compiling with qtwrapper enabled, Qt5 enabled.")
......@@ -250,19 +235,17 @@ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/src)
INCLUDE_DIRECTORIES ( ${CMAKE_CURRENT_BINARY_DIR})
IF(NOT (CMAKE_CXX_COMPILER_ID MATCHES "MSVC"))
# Build dbus api
IF(DEFINED RING_XML_INTERFACES_DIR)
SET (dbus_xml_introspecs_path ${RING_XML_INTERFACES_DIR})
ELSEIF(EXISTS "${RING_BUILD_DIR}/../bin/dbus")
SET (dbus_xml_introspecs_path ${RING_BUILD_DIR}/../bin/dbus)
ELSE()
SET (dbus_xml_introspecs_path ${CMAKE_INSTALL_PREFIX}/share/dbus-1/interfaces)
ENDIF()
MESSAGE(STATUS "Using Ring DBus-XML interfaces in ${dbus_xml_introspecs_path}")
# Build dbus api
IF(DEFINED RING_XML_INTERFACES_DIR)
SET (dbus_xml_introspecs_path ${RING_XML_INTERFACES_DIR})
ELSEIF(EXISTS "${RING_BUILD_DIR}/../bin/dbus")
SET (dbus_xml_introspecs_path ${RING_BUILD_DIR}/../bin/dbus)
ELSE()
SET (dbus_xml_introspecs_path ${CMAKE_INSTALL_PREFIX}/share/dbus-1/interfaces)
ENDIF()
MESSAGE(STATUS "Using Ring DBus-XML interfaces in ${dbus_xml_introspecs_path}")
#File to compile
SET( libringclient_LIB_SRCS
#Data objects
......@@ -710,53 +693,45 @@ ENDIF()
IF(NOT ${ENABLE_TEST} MATCHES true)
QT5_WRAP_CPP(LIB_HEADER_MOC ${libringclient_PRIVATE_HDRS})
ENDIF()
ADD_LIBRARY( ringclient SHARED ${libringclient_LIB_SRCS} ${LIB_HEADER_MOC} )
IF(NOT ${ENABLE_STATIC} MATCHES false)
message(STATUS "Configuring as static lib")
add_library( ringclient_static STATIC ${libringclient_LIB_SRCS} ${LIB_HEADER_MOC} )
target_link_libraries(ringclient_static Qt5::Core)
target_link_libraries( ringclient_static
-lpthread
${QT_QTDBUS_LIBRARY}
${QT_QTCORE_LIBRARY}
Qt5::Sql
)
SET_TARGET_PROPERTIES( ringclient_static
PROPERTIES VERSION ${GENERIC_LIB_VERSION}
)
ELSE()
message(STATUS "Configuring as shared lib")
add_library( ringclient SHARED ${libringclient_LIB_SRCS} ${LIB_HEADER_MOC} )
target_link_libraries(ringclient Qt5::Core)
ADD_LIBRARY( ringclient_static STATIC ${libringclient_LIB_SRCS} ${LIB_HEADER_MOC} )
target_link_libraries(ringclient_static Qt5::Core)
TARGET_LINK_LIBRARIES( ringclient_static
-lpthread
${QT_QTDBUS_LIBRARY}
${QT_QTCORE_LIBRARY}
Qt5::Sql
)
SET_TARGET_PROPERTIES( ringclient_static
PROPERTIES VERSION ${GENERIC_LIB_VERSION}
)
ENDIF()
target_link_libraries(ringclient Qt5::Core)
IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
target_link_libraries(ringclient Qt5::DBus)
IF(${ENABLE_STATIC} MATCHES true)
IF(NOT ${ENABLE_STATIC} MATCHES false)
target_link_libraries(ringclient_static Qt5::DBus)
ENDIF()
ELSEIF(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
FIND_PACKAGE(Qt5Concurrent)
FIND_PACKAGE(Qt5Concurrent)
#For some reason, QSemaphore wont compile on Windows without QtConcurrent
IF(${ENABLE_STATIC} MATCHES true)
target_link_libraries(ringclient_static Qt5::Concurrent)
ELSE()
target_link_libraries(ringclient Qt5::Concurrent)
ENDIF()
#For some reason, QSemaphore wont compile on Windows without QtConcurrent
target_link_libraries(ringclient Qt5::Concurrent)
ENDIF()
IF (NOT CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
TARGET_LINK_LIBRARIES( ringclient
-lpthread
${QT_QTCORE_LIBRARY}
Qt5::Sql
)
ENDIF()
TARGET_LINK_LIBRARIES( ringclient
-lpthread
${QT_QTCORE_LIBRARY}
Qt5::Sql
)
IF(${ENABLE_LIBWRAP} MATCHES true)
IF((NOT ${ring_BIN} MATCHES "ring_BIN-NOTFOUND") AND (${ENABLE_STATIC} MATCHES false))
IF(NOT ${ring_BIN} MATCHES "ring_BIN-NOTFOUND")
TARGET_LINK_LIBRARIES( ringclient
qtwrapper
${ring_BIN}
......@@ -764,7 +739,7 @@ IF(${ENABLE_LIBWRAP} MATCHES true)
ELSE()
# Allow building with undefined symbols when only the daemon headers are provided
# It speeds up our CI builds
IF(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
IF("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
SET_TARGET_PROPERTIES( ringclient PROPERTIES LINK_FLAGS "-undefined dynamic_lookup" )
ENDIF()
ENDIF()
......@@ -774,7 +749,6 @@ IF(${ENABLE_LIBWRAP} MATCHES true)
${ring_BIN}
)
ENDIF()
ELSE()
TARGET_LINK_LIBRARIES( ringclient
${QT_QTDBUS_LIBRARY}
......@@ -793,11 +767,9 @@ IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
ENDIF()
ENDIF()
if(${ENABLE_STATIC} MATCHES false)
SET_TARGET_PROPERTIES( ringclient
PROPERTIES VERSION ${GENERIC_LIB_VERSION} SOVERSION ${GENERIC_LIB_VERSION}
)
endif()
SET_TARGET_PROPERTIES( ringclient
PROPERTIES VERSION ${GENERIC_LIB_VERSION} SOVERSION ${GENERIC_LIB_VERSION}
)
SET(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include)
......@@ -842,21 +814,22 @@ INSTALL( FILES ${libringclient_api_LIB_HDRS}
#higher priority than the prefixed one.
STRING(REPLACE "${CMAKE_LIBRARY_ARCHITECTURE}" "" SANE_LIBRARY_PATH "${CMAKE_INSTALL_FULL_LIBDIR}" )
INSTALL( TARGETS ringclient
ARCHIVE DESTINATION ${SANE_LIBRARY_PATH}
RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
LIBRARY DESTINATION ${SANE_LIBRARY_PATH}
DESTINATION ${SANE_LIBRARY_PATH}
)
IF(NOT ${ENABLE_STATIC} MATCHES false)
INSTALL( TARGETS ringclient_static
ARCHIVE DESTINATION ${SANE_LIBRARY_PATH}
LIBRARY DESTINATION ${SANE_LIBRARY_PATH}
DESTINATION ${SANE_LIBRARY_PATH}
)
ELSE()
INSTALL( TARGETS ringclient
ARCHIVE DESTINATION ${SANE_LIBRARY_PATH}
RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
LIBRARY DESTINATION ${SANE_LIBRARY_PATH}
DESTINATION ${SANE_LIBRARY_PATH}
)
INSTALL( TARGETS ringclient_static
ARCHIVE DESTINATION ${SANE_LIBRARY_PATH}
LIBRARY DESTINATION ${SANE_LIBRARY_PATH}
DESTINATION ${SANE_LIBRARY_PATH}
)
ENDIF()
SET(LIB_INSTALL_DIR ${SANE_LIBRARY_PATH})
# Create a CMake config file
......
:: Ring - native Windows LRC project generator
@echo off
setlocal
if "%1" == "/?" goto Usage
if "%~1" == "" goto Usage
set doGen=N
set doBuild=N
set SCRIPTNAME=%~nx0
if "%1"=="gen" (
set doGen=Y
) else if "%1"=="build" (
set doBuild=Y
) else (
goto Usage
)
set arch=N
shift
:ParseArgs
if "%1" == "" goto FinishedArgs
if /I "%1"=="x86" (
set arch=x86
) else if /I "%1"=="x64" (
set arch=x64
) else (
goto Usage
)
shift
goto ParseArgs
:FinishedArgs
if "%arch%"=="x86" (
set MSBUILD_ARGS=/nologo /p:useenv=true /p:Configuration=Release /p:Platform=Win32 /verbosity:normal /maxcpucount:%NUMBER_OF_PROCESSORS%
) else if "%arch%"=="x64" (
set MSBUILD_ARGS=/nologo /p:useenv=true /p:Configuration=Release /p:Platform=x64 /verbosity:normal /maxcpucount:%NUMBER_OF_PROCESSORS%
)
@setlocal
set VSInstallerFolder="%ProgramFiles(x86)%\Microsoft Visual Studio\Installer"
if %PROCESSOR_ARCHITECTURE%==x86 set VSInstallerFolder="%ProgramFiles%\Microsoft Visual Studio\Installer"
pushd %VSInstallerFolder%
for /f "usebackq tokens=*" %%i in (`vswhere -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath`) do (
set VSLATESTDIR=%%i
)
popd
echo VS Installation folder: %VSLATESTDIR%
if not exist "%VSLATESTDIR%\VC\Auxiliary\Build\vcvarsall.bat" (
echo:
echo VSInstallDir not found or not installed correctly.
goto cleanup
)
if %PROCESSOR_ARCHITECTURE%==x86 (
set Comp_x86=x86 10.0.15063.0
set Comp_x64=x86_amd64 10.0.15063.0
) else (
set Comp_x86=amd64_x86 10.0.15063.0
set Comp_x64=amd64 10.0.15063.0
)
set path=%path:"=%
if "%arch%"=="x86" (
call "%VSLATESTDIR%"\\VC\\Auxiliary\\Build\\vcvarsall.bat %Comp_x86%
) else if "%arch%"=="x64" (
call "%VSLATESTDIR%"\\VC\\Auxiliary\\Build\\vcvarsall.bat %Comp_x64%
)
if "%arch%" neq "N" (
if "%doGen%" neq "N" (
goto genLRC
) else if "%doBuild%" neq "N" (
goto buildLRC
)
goto :eof
)
goto Usage
:genLRC
setlocal EnableDelayedExpansion
set DaemonDir=%cd%\\..\\daemon
mkdir msvc
cd msvc
set PATH=C:\\Program Files\\CMake\\bin\\;%PATH%
if "echo QtDir is: %QtDir%"=="" (
echo Error: QtDir not specified
goto cleanup
)
set CMAKE_GENERATOR_STRING=""
set CMAKE_OPTIONS=""
if "%arch%"=="x86" (
set CMAKE_GENERATOR_STRING="Visual Studio 15 2017 Win32"
set QtCmakeDir=%QtDir%\\msvc2017\\lib\\cmake
set CMAKE_OPTIONS=-DQt5Core_DIR=!QtCmakeDir!\\Qt5Core -DQt5Sql_DIR=!QtCmakeDir!\\Qt5Sql -DQt5LinguistTools_DIR=!QtCmakeDir!\\Qt5LinguistTools -DQt5Concurrent_DIR=!QtCmakeDir!\\Qt5Concurrent -Dring_BIN=!DaemonDir!\MSVC\x86\ReleaseLib_win32\bin\dring.lib -DRING_INCLUDE_DIR=!DaemonDir!\src\dring
) else if "%arch%"=="x64" (
set CMAKE_GENERATOR_STRING="Visual Studio 15 2017 Win64"
set QtCmakeDir=%QtDir%\\msvc2017_64\\lib\\cmake
set CMAKE_OPTIONS=-DQt5Core_DIR=!QtCmakeDir!\\Qt5Core -DQt5Sql_DIR=!QtCmakeDir!\\Qt5Sql -DQt5LinguistTools_DIR=!QtCmakeDir!\\Qt5LinguistTools -DQt5Concurrent_DIR=!QtCmakeDir!\\Qt5Concurrent -Dring_BIN=!DaemonDir!\MSVC\x64\ReleaseLib_win32\bin\dring.lib -DRING_INCLUDE_DIR=!DaemonDir!\src\dring
)
cmake .. -G !CMAKE_GENERATOR_STRING! !CMAKE_OPTIONS!
endlocal
goto cleanup
:buildLRC
:: build qtwrapper
msbuild msvc\src\qtwrapper\qtwrapper.vcxproj %MSBUILD_ARGS%
:: build lrc
msbuild msvc\ringclient_static.vcxproj %MSBUILD_ARGS%
goto cleanup
@endlocal
:Usage
echo:
echo The correct usage is:
echo:
echo %0 [action] [architecture]
echo:
echo where
echo:
echo [action] is: gen ^| build
echo [architecture] is: x86 ^| x64
echo:
echo For example:
echo %SCRIPTNAME% gen x86 - gen x86 static lib vs projects for qtwrapper/lrc
echo %SCRIPTNAME% build x64 - build x64 qtwrapper/lrc static libs
echo:
goto :eof
:cleanup
endlocal
exit /B %ERRORLEVEL%
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment