Skip to content
Snippets Groups Projects
Commit 0d29dfa9 authored by Rye Mutt's avatar Rye Mutt :bread:
Browse files

Fixes for debug and relwithdebug builds in msvc

parent 3db27af8
No related branches found
No related tags found
1 merge request!24Newgen
......@@ -126,8 +126,8 @@ if (WINDOWS)
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /INCREMENTAL")
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /INCREMENTAL")
else ()
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /OPT:REF /OPT:ICF /INCREMENTAL:NO")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /OPT:REF /OPT:ICF /INCREMENTAL:NO")
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /OPT:REF /OPT:ICF /INCREMENTAL:NO")
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /OPT:REF /OPT:ICF /INCREMENTAL:NO")
endif ()
if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
......
......@@ -13,22 +13,48 @@ include(Linking)
# copy_if_different commands. Encapsulate that usage.
# Pass FROM_DIR, TARGETS and the files to copy. TO_DIR is implicit.
# to_staging_dirs diverges from copy_if_different in that it appends to TARGETS.
MACRO(to_staging_dirs from_dir targets)
MACRO(to_debug_staging_dirs from_dir targets)
foreach(staging_dir
"${SHARED_LIB_STAGING_DIR_DEBUG}")
copy_if_different("${from_dir}" "${staging_dir}" out_targets ${ARGN})
list(APPEND "${targets}" "${out_targets}")
endforeach()
ENDMACRO(to_debug_staging_dirs from_dir to_dir targets)
MACRO(to_relwithdeb_staging_dirs from_dir targets)
foreach(staging_dir
"${SHARED_LIB_STAGING_DIR_RELEASE}"
"${SHARED_LIB_STAGING_DIR_RELWITHDEBINFO}")
copy_if_different("${from_dir}" "${staging_dir}" out_targets ${ARGN})
list(APPEND "${targets}" "${out_targets}")
endforeach()
ENDMACRO(to_staging_dirs from_dir to_dir targets)
ENDMACRO(to_relwithdeb_staging_dirs from_dir to_dir targets)
MACRO(to_release_staging_dirs from_dir targets)
foreach(staging_dir
"${SHARED_LIB_STAGING_DIR_RELEASE}")
copy_if_different("${from_dir}" "${staging_dir}" out_targets ${ARGN})
list(APPEND "${targets}" "${out_targets}")
endforeach()
ENDMACRO(to_release_staging_dirs from_dir to_dir targets)
string(TOUPPER "${CMAKE_BUILD_TYPE}" uppercase_CMAKE_BUILD_TYPE)
###################################################################
# set up platform specific lists of files that need to be copied
###################################################################
if(WINDOWS)
set(SHARED_LIB_STAGING_DIR_DEBUG "${SHARED_LIB_STAGING_DIR}/Debug")
set(SHARED_LIB_STAGING_DIR_RELWITHDEBINFO "${SHARED_LIB_STAGING_DIR}/RelWithDebInfo")
set(SHARED_LIB_STAGING_DIR_RELEASE "${SHARED_LIB_STAGING_DIR}/Release")
message(STATUS "FUK: ${uppercase_CMAKE_BUILD_TYPE}")
if(GEN_IS_MULTI_CONFIG)
set(SHARED_LIB_STAGING_DIR_DEBUG "${SHARED_LIB_STAGING_DIR}/Debug")
set(SHARED_LIB_STAGING_DIR_RELWITHDEBINFO "${SHARED_LIB_STAGING_DIR}/RelWithDebInfo")
set(SHARED_LIB_STAGING_DIR_RELEASE "${SHARED_LIB_STAGING_DIR}/Release")
elseif (uppercase_CMAKE_BUILD_TYPE MATCHES DEBUG)
set(SHARED_LIB_STAGING_DIR_DEBUG "${SHARED_LIB_STAGING_DIR}")
elseif (uppercase_CMAKE_BUILD_TYPE MATCHES RELWITHDEBINFO)
set(SHARED_LIB_STAGING_DIR_RELWITHDEBINFO "${SHARED_LIB_STAGING_DIR}")
elseif (uppercase_CMAKE_BUILD_TYPE MATCHES RELEASE)
set(SHARED_LIB_STAGING_DIR_RELEASE "${SHARED_LIB_STAGING_DIR}")
endif()
#*******************************
# VIVOX - *NOTE: no debug version
......@@ -52,10 +78,26 @@ if(WINDOWS)
set(addrsfx "-x${ADDRESS_SIZE}")
set(debug_src_dir "${ARCH_PREBUILT_DIRS_DEBUG}")
set(debug_files
epoxy-0.dll
libexpatd.dll
glod.dll
libapr-1.dll
libaprutil-1.dll
libapriconv-1.dll
libhunspell.dll
libogg.dll
libvorbis.dll
libvorbisfile.dll
openjp2.dll
xmlrpc-epid.dll
)
set(release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
set(release_files
epoxy-0.dll
${EXPAT_COPY}
libexpat.dll
glod.dll
libapr-1.dll
libaprutil-1.dll
......@@ -88,6 +130,7 @@ if(WINDOWS)
endif (USE_FMODSTUDIO)
if (USE_OPENAL)
list(APPEND debug_files OpenAL32.dll alut.dll)
list(APPEND release_files OpenAL32.dll alut.dll)
endif ()
......@@ -201,28 +244,71 @@ endif(WINDOWS)
# Done building the file lists, now set up the copy commands.
################################################################
# Curiously, slvoice_files are only copied to SHARED_LIB_STAGING_DIR_RELEASE.
# It's unclear whether this is oversight or intentional, but anyway leave the
# single copy_if_different command rather than using to_staging_dirs.
copy_if_different(
${slvoice_src_dir}
"${SHARED_LIB_STAGING_DIR_RELEASE}"
out_targets
${slvoice_files}
)
list(APPEND third_party_targets ${out_targets})
to_staging_dirs(
${vivox_lib_dir}
third_party_targets
${vivox_libs}
)
to_staging_dirs(
${release_src_dir}
third_party_targets
${release_files}
)
if (GEN_IS_MULTI_CONFIG OR uppercase_CMAKE_BUILD_TYPE MATCHES DEBUG)
copy_if_different(
${slvoice_src_dir}
"${SHARED_LIB_STAGING_DIR_DEBUG}"
out_targets
${slvoice_files}
)
list(APPEND third_party_targets ${out_targets})
to_debug_staging_dirs(
${vivox_lib_dir}
third_party_targets
${vivox_libs}
)
to_debug_staging_dirs(
${debug_src_dir}
third_party_targets
${debug_files}
)
endif()
if (GEN_IS_MULTI_CONFIG OR uppercase_CMAKE_BUILD_TYPE MATCHES RELWITHDEBINFO)
copy_if_different(
${slvoice_src_dir}
"${SHARED_LIB_STAGING_DIR_RELWITHDEBINFO}"
out_targets
${slvoice_files}
)
list(APPEND third_party_targets ${out_targets})
to_relwithdeb_staging_dirs(
${vivox_lib_dir}
third_party_targets
${vivox_libs}
)
to_relwithdeb_staging_dirs(
${release_src_dir}
third_party_targets
${release_files}
)
endif()
if (GEN_IS_MULTI_CONFIG OR uppercase_CMAKE_BUILD_TYPE MATCHES RELEASE)
copy_if_different(
${slvoice_src_dir}
"${SHARED_LIB_STAGING_DIR_RELEASE}"
out_targets
${slvoice_files}
)
list(APPEND third_party_targets ${out_targets})
to_release_staging_dirs(
${vivox_lib_dir}
third_party_targets
${vivox_libs}
)
to_release_staging_dirs(
${release_src_dir}
third_party_targets
${release_files}
)
endif()
if(NOT USESYSTEMLIBS)
add_custom_target(
......
......@@ -18,6 +18,10 @@ if(NOT DEFINED COMMON_CMAKE_DIR)
set(COMMON_CMAKE_DIR "${CMAKE_SOURCE_DIR}/cmake")
endif(NOT DEFINED COMMON_CMAKE_DIR)
get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
option(GEN_IS_MULTI_CONFIG "" ${_isMultiConfig})
mark_as_advanced(GEN_IS_MULTI_CONFIG)
set(LIBS_CLOSED_PREFIX)
set(LIBS_OPEN_PREFIX)
set(SCRIPTS_PREFIX ../scripts)
......
......@@ -1663,6 +1663,9 @@ if (WINDOWS)
list(APPEND viewer_SOURCE_FILES ${viewer_RESOURCE_FILES})
endif (NOT USESYSTEMLIBS)
set_source_files_properties(llappviewer.cpp PROPERTIES COMPILE_FLAGS /bigobj)
set_source_files_properties(llviewermenu.cpp PROPERTIES COMPILE_FLAGS /bigobj)
# see EXP-1765 - theory is opengl32.lib needs to be included before gdi32.lib (windows libs)
set(viewer_LIBRARIES
opengl32
......@@ -1864,20 +1867,11 @@ if (WINDOWS)
${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/libapr-1.dll
${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/libaprutil-1.dll
${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/libapriconv-1.dll
${SHARED_LIB_STAGING_DIR}/Release/glod.dll
${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/glod.dll
#${SHARED_LIB_STAGING_DIR}/Debug/glod.dll
${SHARED_LIB_STAGING_DIR}/Release/openjp2.dll
${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/openjp2.dll
#${SHARED_LIB_STAGING_DIR}/Debug/openjp2.dll
${SHARED_LIB_STAGING_DIR}/Release/libhunspell.dll
${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/libhunspell.dll
#${SHARED_LIB_STAGING_DIR}/Debug/libhunspell.dll
${SHARED_LIB_STAGING_DIR}/Release/epoxy-0.dll
${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/epoxy-0.dll
#${SHARED_LIB_STAGING_DIR}/Debug/epoxy-0.dll
${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/glod.dll
${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/openjp2.dll
${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/libhunspell.dll
${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/epoxy-0.dll
${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/SLVoice.exe
${GOOGLE_PERF_TOOLS_SOURCE}
${CMAKE_CURRENT_SOURCE_DIR}/licenses-win32.txt
${CMAKE_CURRENT_SOURCE_DIR}/featuretable.txt
${viewer_APPSETTINGS_FILES}
......@@ -1885,6 +1879,39 @@ if (WINDOWS)
media_plugin_example
)
if (GEN_IS_MULTI_CONFIG)
list(APPEND COPY_INPUT_DEPENDENCIES
${SHARED_LIB_STAGING_DIR}/Release/libexpat.dll
${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/libexpat.dll
${SHARED_LIB_STAGING_DIR}/Debug/libexpatd.dll
)
elseif (uppercase_CMAKE_BUILD_TYPE MATCHES DEBUG)
list(APPEND COPY_INPUT_DEPENDENCIES
${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/libexpatd.dll
)
else()
list(APPEND COPY_INPUT_DEPENDENCIES
${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/libexpat.dll
)
endif()
if (GEN_IS_MULTI_CONFIG)
list(APPEND COPY_INPUT_DEPENDENCIES
${SHARED_LIB_STAGING_DIR}/Release/xmlrpc-epi.dll
${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/xmlrpc-epi.dll
${SHARED_LIB_STAGING_DIR}/Debug/xmlrpc-epid.dll
)
elseif (uppercase_CMAKE_BUILD_TYPE MATCHES DEBUG)
list(APPEND COPY_INPUT_DEPENDENCIES
${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/xmlrpc-epid.dll
)
else()
list(APPEND COPY_INPUT_DEPENDENCIES
${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/xmlrpc-epi.dll
)
endif()
if (ADDRESS_SIZE EQUAL 64)
list(APPEND COPY_INPUT_DEPENDENCIES
${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/vivoxsdk_x64.dll
......@@ -1910,11 +1937,21 @@ if (WINDOWS)
endif ()
if (USE_FMODSTUDIO)
list(APPEND COPY_INPUT_DEPENDENCIES
${SHARED_LIB_STAGING_DIR}/Release/fmod.dll
${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/fmod.dll
#${SHARED_LIB_STAGING_DIR}/Debug/fmodL.dll
)
if (GEN_IS_MULTI_CONFIG)
list(APPEND COPY_INPUT_DEPENDENCIES
${SHARED_LIB_STAGING_DIR}/Release/fmod.dll
${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/fmod.dll
${SHARED_LIB_STAGING_DIR}/Debug/fmodL.dll
)
elseif (uppercase_CMAKE_BUILD_TYPE MATCHES DEBUG)
list(APPEND COPY_INPUT_DEPENDENCIES
${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/fmodL.dll
)
else()
list(APPEND COPY_INPUT_DEPENDENCIES
${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/fmod.dll
)
endif()
endif (USE_FMODSTUDIO)
if (USE_OPENAL)
......@@ -2017,12 +2054,10 @@ if (WINDOWS)
add_custom_target(llpackage ALL DEPENDS
${CMAKE_CFG_INTDIR}/touched.bat
windows-setup-build-all
)
# temporarily disable packaging of event_host until hg subrepos get
# sorted out on the parabuild cluster...
#${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/event_host.tar.bz2)
endif (PACKAGE)
elseif (DARWIN)
set_target_properties(${VIEWER_BINARY_NAME}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment