- attempt to correct tomreyns cmake linker issue

This commit is contained in:
SoftCoder 2017-10-07 08:59:27 -07:00
parent eaad769182
commit 59be04ab6a
2 changed files with 87 additions and 80 deletions

View File

@ -25,9 +25,9 @@ IF(CMAKE_BUILD_TYPE)
MESSAGE(STATUS "Build type for this compile will be: ${CMAKE_BUILD_TYPE}") MESSAGE(STATUS "Build type for this compile will be: ${CMAKE_BUILD_TYPE}")
ENDIF() ENDIF()
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
SET(CMAKE_COMPILER_IS_GNUCXX "YES") SET(CMAKE_COMPILER_IS_GNUCXX "YES")
# ADD_DEFINITIONS("-Qunused-arguments -Wno-switch") # ADD_DEFINITIONS("-Qunused-arguments -Wno-switch")
ADD_DEFINITIONS("-Wno-switch") ADD_DEFINITIONS("-Wno-switch")
ENDIF() ENDIF()
OPTION(BUILD_MEGAGLEST_MODEL_IMPORT_EXPORT_TOOLS "Build model import/export tools" ON) OPTION(BUILD_MEGAGLEST_MODEL_IMPORT_EXPORT_TOOLS "Build model import/export tools" ON)
@ -102,16 +102,16 @@ IF(APPLE)
ENDIF(APPLE) ENDIF(APPLE)
IF(CMAKE_COMPILER_IS_GNUCXX OR MINGW) IF(CMAKE_COMPILER_IS_GNUCXX OR MINGW)
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
MESSAGE(STATUS "Detected CLANG Compiler...") MESSAGE(STATUS "Detected CLANG Compiler...")
ELSEIF(CMAKE_COMPILER_IS_GNUCXX) ELSEIF(CMAKE_COMPILER_IS_GNUCXX)
MESSAGE(STATUS "Detected GNUC Compiler...") MESSAGE(STATUS "Detected GNUC Compiler...")
ELSEIF(MINGW) ELSEIF(MINGW)
MESSAGE(STATUS "Detected MINGW Compiler...") MESSAGE(STATUS "Detected MINGW Compiler...")
ENDIF() ENDIF()
# Common generic GNU type compiler options that work with all generic GCC compatible compilers # Common generic GNU type compiler options that work with all generic GCC compatible compilers
ADD_DEFINITIONS("-Wuninitialized -Wsign-compare -Wunused-function -Wunused-variable -Wreturn-type -fno-strict-aliasing") ADD_DEFINITIONS("-Wuninitialized -Wsign-compare -Wunused-function -Wunused-variable -Wreturn-type -fno-strict-aliasing")
# For gcc warning options see: http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html # For gcc warning options see: http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
IF(NOT MINGW) IF(NOT MINGW)
@ -121,56 +121,54 @@ IF(CMAKE_COMPILER_IS_GNUCXX OR MINGW)
ELSE() ELSE()
# ADD_DEFINITIONS("-Wreturn-type -fno-strict-aliasing -frounding-math -fsignaling-nans -mfpmath=sse -msse -DUNICODE") # ADD_DEFINITIONS("-Wreturn-type -fno-strict-aliasing -frounding-math -fsignaling-nans -mfpmath=sse -msse -DUNICODE")
# ADD_DEFINITIONS("-Wuninitialized -Wsign-compare -Wunused-function -Wunused-variable -Wreturn-type -fno-strict-aliasing -frounding-math -fsignaling-nans -DUNICODE") # ADD_DEFINITIONS("-Wuninitialized -Wsign-compare -Wunused-function -Wunused-variable -Wreturn-type -fno-strict-aliasing -frounding-math -fsignaling-nans -DUNICODE")
ADD_DEFINITIONS("-DUNICODE") ADD_DEFINITIONS("-DUNICODE")
ENDIF() ENDIF()
# CLang specific Compiler Options # CLang specific Compiler Options
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
# GCC specific Compiler Options # GCC specific Compiler Options
ELSE() ELSE()
ADD_DEFINITIONS("-frounding-math -fsignaling-nans") ADD_DEFINITIONS("-frounding-math -fsignaling-nans")
# IF(NOT MINGW) # IF(NOT MINGW)
# set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -rdynamic") # set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -rdynamic")
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -rdynamic") # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -rdynamic")
# ENDIF() # ENDIF()
ENDIF() ENDIF()
#SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") #SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
#MESSAGE(STATUS "*TEST: Checking for max SSE LEVEL [${FORCE_MAX_SSE_LEVEL}]")
#MESSAGE(STATUS "*TEST: Checking for max SSE LEVEL [${FORCE_MAX_SSE_LEVEL}]")
OPTION(FORCE_STREFLOP_SOFTWRAPPER "Set the streflop library to be forced to use the software emulator" OFF) OPTION(FORCE_STREFLOP_SOFTWRAPPER "Set the streflop library to be forced to use the software emulator" OFF)
IF(NOT FORCE_MAX_SSE_LEVEL AND NOT FORCE_STREFLOP_SOFTWRAPPER) IF(NOT FORCE_MAX_SSE_LEVEL AND NOT FORCE_STREFLOP_SOFTWRAPPER)
SET(FORCE_MAX_SSE_LEVEL "1" CACHE STRING "Set the max SSE level to use if supported (0-3)") SET(FORCE_MAX_SSE_LEVEL "1" CACHE STRING "Set the max SSE level to use if supported (0-3)")
ENDIF() ENDIF()
IF(NOT FORCE_STREFLOP_SOFTWRAPPER) IF(NOT FORCE_STREFLOP_SOFTWRAPPER)
MESSAGE(STATUS "*NOTE: Checking for max SSE LEVEL [${FORCE_MAX_SSE_LEVEL}]") MESSAGE(STATUS "*NOTE: Checking for max SSE LEVEL [${FORCE_MAX_SSE_LEVEL}]")
special_check_for_sse( ${FORCE_MAX_SSE_LEVEL} ) special_check_for_sse( ${FORCE_MAX_SSE_LEVEL} )
ENDIF() ENDIF()
IF(WANT_USE_STREFLOP) IF(WANT_USE_STREFLOP)
ADD_DEFINITIONS("-DUSE_STREFLOP -DSTREFLOP_RANDOM_GEN_SIZE=32 -DLIBM_COMPILING_FLT32 -DN_SPECIALIZED=32") ADD_DEFINITIONS("-DUSE_STREFLOP -DSTREFLOP_RANDOM_GEN_SIZE=32 -DLIBM_COMPILING_FLT32 -DN_SPECIALIZED=32")
IF(HAS_SSE_EXTENSIONS AND NOT ${FORCE_MAX_SSE_LEVEL} MATCHES "0" AND NOT FORCE_STREFLOP_SOFTWRAPPER) IF(HAS_SSE_EXTENSIONS AND NOT ${FORCE_MAX_SSE_LEVEL} MATCHES "0" AND NOT FORCE_STREFLOP_SOFTWRAPPER)
ADD_DEFINITIONS("-DSTREFLOP_SSE") ADD_DEFINITIONS("-DSTREFLOP_SSE")
MESSAGE(STATUS "*NOTE: using SSE for STREFLOP.") MESSAGE(STATUS "*NOTE: using SSE for STREFLOP.")
ELSE() ELSE()
IF(NOT FORCE_STREFLOP_SOFTWRAPPER) IF(NOT FORCE_STREFLOP_SOFTWRAPPER)
special_check_for_x87() special_check_for_x87()
ENDIF() ENDIF()
IF(HAS_X87_SUPPORT AND NOT FORCE_STREFLOP_SOFTWRAPPER) IF(HAS_X87_SUPPORT AND NOT FORCE_STREFLOP_SOFTWRAPPER)
ADD_DEFINITIONS("-DSTREFLOP_X87") ADD_DEFINITIONS("-DSTREFLOP_X87")
MESSAGE(STATUS "*NOTE: using X87 for STREFLOP.") MESSAGE(STATUS "*NOTE: using X87 for STREFLOP.")
ELSE() ELSE()
ADD_DEFINITIONS("-DSTREFLOP_SOFT") ADD_DEFINITIONS("-DSTREFLOP_SOFT")
MESSAGE(STATUS "*NOTE: using SOFT emulation for STREFLOP.") MESSAGE(STATUS "*NOTE: using SOFT emulation for STREFLOP.")
ENDIF() ENDIF()
ENDIF() ENDIF()
ELSE() ELSE()
MESSAGE(STATUS "*WARNING: Disabled use of STREFLOP! Out of synchs may occur") MESSAGE(STATUS "*WARNING: Disabled use of STREFLOP! Out of synchs may occur")
ENDIF() ENDIF()
@ -189,10 +187,10 @@ IF(CMAKE_COMPILER_IS_GNUCXX OR MINGW)
HAS_GCC_BACKTRACE) HAS_GCC_BACKTRACE)
IF(HAS_GCC_BACKTRACE) IF(HAS_GCC_BACKTRACE)
message(STATUS "Found GCC backtrace lib, will support backtraces") message(STATUS "Found GCC backtrace lib, will support backtraces")
ADD_DEFINITIONS(-DHAS_GCC_BACKTRACE) ADD_DEFINITIONS(-DHAS_GCC_BACKTRACE)
ELSE() ELSE()
message(STATUS "**WARNING DID NOT Find GCC backtrace lib") message(STATUS "**WARNING DID NOT Find GCC backtrace lib")
ENDIF() ENDIF()
# Debug compiler flags # Debug compiler flags
@ -212,6 +210,15 @@ IF(CMAKE_COMPILER_IS_GNUCXX OR MINGW)
SET(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL} -s") ## Strip binary SET(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL} -s") ## Strip binary
ENDIF() ENDIF()
# see if this fixes compile issue for tomreyn: libpthread.so.0: error adding symbols: DSO missing from command line
IF(UNIX)
MESSAGE(STATUS "*NOTE: Apply fix for: libpthread.so.0: error adding symbols: DSO missing from command line")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pthread")
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -pthread")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -pthread")
SET(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL} -pthread")
ENDIF()
# Get the git revision info for the binary # Get the git revision info for the binary
SET(HAS_GIT "FALSE") SET(HAS_GIT "FALSE")
SET(GIT_LIVE_REV_CMD "") SET(GIT_LIVE_REV_CMD "")
@ -223,28 +230,28 @@ IF(CMAKE_COMPILER_IS_GNUCXX OR MINGW)
include(FindGit) include(FindGit)
IF(GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git/") IF(GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git/")
SET(HAS_GIT "TRUE") SET(HAS_GIT "TRUE")
MESSAGE(STATUS "Found GIT and using GIT version stamping...") MESSAGE(STATUS "Found GIT and using GIT version stamping...")
# Get the current commit SHA1 # Get the current commit SHA1
execute_process( execute_process(
COMMAND git log -1 --format=%h --abbrev=7 COMMAND git log -1 --format=%h --abbrev=7
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
OUTPUT_VARIABLE GIT_SHA1 OUTPUT_VARIABLE GIT_SHA1
OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_STRIP_TRAILING_WHITESPACE
) )
# Get the current version counter # Get the current version counter
execute_process( execute_process(
COMMAND git rev-list HEAD --count COMMAND git rev-list HEAD --count
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
OUTPUT_VARIABLE GIT_COMMIT_COUNT OUTPUT_VARIABLE GIT_COMMIT_COUNT
OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_STRIP_TRAILING_WHITESPACE
) )
SET(GIT_LIVE_REV_CMD "`cd '${PROJECT_SOURCE_DIR}' && git rev-list HEAD --count`.`cd '${PROJECT_SOURCE_DIR}' && git log -1 --format=%h --abbrev=7`") SET(GIT_LIVE_REV_CMD "`cd '${PROJECT_SOURCE_DIR}' && git rev-list HEAD --count`.`cd '${PROJECT_SOURCE_DIR}' && git log -1 --format=%h --abbrev=7`")
MESSAGE(STATUS "Using GIT revision stamp: [${GIT_COMMIT_COUNT}.${GIT_SHA1}] CMD [${GIT_LIVE_REV_CMD}]") MESSAGE(STATUS "Using GIT revision stamp: [${GIT_COMMIT_COUNT}.${GIT_SHA1}] CMD [${GIT_LIVE_REV_CMD}]")
IF(CMAKE_GENERATOR STREQUAL Xcode) IF(CMAKE_GENERATOR STREQUAL Xcode)
SET(GIT_VERSION_CMD "-DGITVERSION='\\\\'${GIT_COMMIT_COUNT}.${GIT_SHA1}\\\\''") SET(GIT_VERSION_CMD "-DGITVERSION='\\\\'${GIT_COMMIT_COUNT}.${GIT_SHA1}\\\\''")

View File

@ -269,7 +269,7 @@ IF(BUILD_MEGAGLEST)
SET(EXECUTABLE_OUTPUT_PATH "${MEGAGLEST_FRIENDLY_OUTPUT_PATH}") SET(EXECUTABLE_OUTPUT_PATH "${MEGAGLEST_FRIENDLY_OUTPUT_PATH}")
ENDIF() ENDIF()
MESSAGE(STATUS "***Note: The final output path for the MegaGlest engine will be [${EXECUTABLE_OUTPUT_PATH}]") MESSAGE(STATUS "***Note: The final output path for the MegaGlest engine will be [${EXECUTABLE_OUTPUT_PATH}]")
SET_SOURCE_FILES_PROPERTIES(${MG_INCLUDE_FILES} PROPERTIES HEADER_FILE_ONLY 1) SET_SOURCE_FILES_PROPERTIES(${MG_INCLUDE_FILES} PROPERTIES HEADER_FILE_ONLY 1)
@ -296,6 +296,7 @@ IF(BUILD_MEGAGLEST)
IF(WIN32) IF(WIN32)
TARGET_LINK_LIBRARIES(${TARGET_NAME} stdc++ gcc odbc32 wsock32 winspool winmm shell32 comctl32 ctl3d32 advapi32 wsock32 opengl32 glu32 ole32 oleaut32 uuid mingw32 ddraw dsound dxguid ws2_32 iphlpapi wsock32 libogg libvorbis libvorbisfile zlib jpeg libpng xerces-c2_8_0 OpenAL32 libcurl winmm gdi32 opengl32 glu32 ${SDL_VERSION_NAME} ${SDL_VERSION_NAME}main lua5.1 ${MG_STREFLOP} libmegaglest stdc++ moldname mingwex msvcrt user32 kernel32) TARGET_LINK_LIBRARIES(${TARGET_NAME} stdc++ gcc odbc32 wsock32 winspool winmm shell32 comctl32 ctl3d32 advapi32 wsock32 opengl32 glu32 ole32 oleaut32 uuid mingw32 ddraw dsound dxguid ws2_32 iphlpapi wsock32 libogg libvorbis libvorbisfile zlib jpeg libpng xerces-c2_8_0 OpenAL32 libcurl winmm gdi32 opengl32 glu32 ${SDL_VERSION_NAME} ${SDL_VERSION_NAME}main lua5.1 ${MG_STREFLOP} libmegaglest stdc++ moldname mingwex msvcrt user32 kernel32)
ENDIF() ENDIF()
IF(NOT WIN32) IF(NOT WIN32)
IF(WANT_USE_STREFLOP AND NOT STREFLOP_FOUND) IF(WANT_USE_STREFLOP AND NOT STREFLOP_FOUND)
TARGET_LINK_LIBRARIES(${TARGET_NAME} ${MG_STREFLOP}) TARGET_LINK_LIBRARIES(${TARGET_NAME} ${MG_STREFLOP})
@ -304,15 +305,14 @@ IF(BUILD_MEGAGLEST)
ENDIF() ENDIF()
TARGET_LINK_LIBRARIES(${TARGET_NAME} ${EXTERNAL_LIBS}) TARGET_LINK_LIBRARIES(${TARGET_NAME} ${EXTERNAL_LIBS})
SET(HELP2MAN_OUT_PATH ${EXECUTABLE_OUTPUT_PATH}) SET(HELP2MAN_OUT_PATH ${EXECUTABLE_OUTPUT_PATH})
IF("${EXECUTABLE_OUTPUT_PATH}" STREQUAL "") IF("${EXECUTABLE_OUTPUT_PATH}" STREQUAL "")
SET(HELP2MAN_OUT_PATH "${CMAKE_CURRENT_BINARY_DIR}/") SET(HELP2MAN_OUT_PATH "${CMAKE_CURRENT_BINARY_DIR}/")
ENDIF() ENDIF()
IF(EXISTS ${HELP2MAN}) IF(EXISTS ${HELP2MAN})
MESSAGE(STATUS "***-- Found help2man: ${HELP2MAN} about to build manpage in [${HELP2MAN_OUT_PATH}${TARGET_NAME_MANPAGE}]") MESSAGE(STATUS "***-- Found help2man: ${HELP2MAN} about to build manpage in [${HELP2MAN_OUT_PATH}${TARGET_NAME_MANPAGE}]")
SET(MG_MANPAGE_DESCRIPTION "3D multi-player real time strategy game")
SET(MG_MANPAGE_DESCRIPTION "3D multi-player real time strategy game")
IF(EXISTS ${XVFB_EXEC}) IF(EXISTS ${XVFB_EXEC})
MESSAGE(STATUS "***-- Found xvfb-run: ${XVFB_EXEC} about to build manpage with it.") MESSAGE(STATUS "***-- Found xvfb-run: ${XVFB_EXEC} about to build manpage with it.")
@ -327,23 +327,23 @@ IF(BUILD_MEGAGLEST)
ENDIF() ENDIF()
ENDIF() ENDIF()
# Requires an install prefix for the items below to work # Requires an install prefix for the items below to work
IF(NOT CMAKE_INSTALL_PREFIX STREQUAL "") IF(NOT CMAKE_INSTALL_PREFIX STREQUAL "")
MESSAGE(STATUS "**Source package INSTALL TRIGGERED [${PROJECT_SOURCE_DIR}]") MESSAGE(STATUS "**Source package INSTALL TRIGGERED [${PROJECT_SOURCE_DIR}]")
# Installation of the program # Installation of the program
INSTALL(TARGETS INSTALL(TARGETS
${TARGET_NAME} ${TARGET_NAME}
DESTINATION ${MEGAGLEST_BIN_INSTALL_PATH}) DESTINATION ${MEGAGLEST_BIN_INSTALL_PATH})
IF(EXISTS ${HELP2MAN} AND NOT "${MEGAGLEST_MANPAGE_INSTALL_PATH}" STREQUAL "") IF(EXISTS ${HELP2MAN} AND NOT "${MEGAGLEST_MANPAGE_INSTALL_PATH}" STREQUAL "")
MESSAGE(STATUS "**NOTE: Will Install manpage [${TARGET_NAME_MANPAGE}] to [${MEGAGLEST_MANPAGE_INSTALL_PATH}]") MESSAGE(STATUS "**NOTE: Will Install manpage [${TARGET_NAME_MANPAGE}] to [${MEGAGLEST_MANPAGE_INSTALL_PATH}]")
# Installation of the program manpage file # Installation of the program manpage file
INSTALL(FILES INSTALL(FILES
"${HELP2MAN_OUT_PATH}${TARGET_NAME_MANPAGE}" "${HELP2MAN_OUT_PATH}${TARGET_NAME_MANPAGE}"
DESTINATION ${MEGAGLEST_MANPAGE_INSTALL_PATH}) DESTINATION ${MEGAGLEST_MANPAGE_INSTALL_PATH})
ENDIF() ENDIF()
IF(UNIX) IF(UNIX)
INSTALL(PROGRAMS INSTALL(PROGRAMS