forked from speed-dreams/speed-dreams-code
Re #58 Fixed MinGW build and install after r5349
git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@5351 30fe4595-0a0c-4342-8851-515496e4dcbd Former-commit-id: 7add551618c82029033563d3d7a3d03f2c8cff20 Former-commit-id: 83c6050ac6ecf089d3ac8fb794151f57bdc2a75f
This commit is contained in:
parent
cbe6210099
commit
a2c721ae45
4 changed files with 90 additions and 15 deletions
|
@ -28,6 +28,7 @@
|
|||
MACRO(_GET_TARGET_REAL_PATHNAME TGT_NAME VAR_PATHNAME)
|
||||
|
||||
GET_TARGET_PROPERTY(${VAR_PATHNAME} ${TGT_NAME} LOCATION)
|
||||
MESSAGE(STATUS "GET_TARGET_REAL_PATHNAME(${TGT_NAME})=${${VAR_PATHNAME}}")
|
||||
IF(MSVC)
|
||||
STRING(REPLACE \"$(OutDir)\" \"\${CMAKE_INSTALL_CONFIG_NAME}\" ${VAR_PATHNAME} \${${VAR_PATHNAME}})
|
||||
STRING(REPLACE \"$(ConfigurationName)\" \"\${CMAKE_INSTALL_CONFIG_NAME}\" ${VAR_PATHNAME} \${${VAR_PATHNAME}})
|
||||
|
@ -65,7 +66,17 @@ ENDMACRO(SD_SETUP_SETTINGS_VERSION)
|
|||
MACRO(SD_UPDATE_SETTINGS_VERSION)
|
||||
|
||||
# Determine the full path-name of xmlversion.exe
|
||||
_GET_TARGET_REAL_PATHNAME(xmlversion _XMLVER_EXE)
|
||||
IF(FALSE AND WIN32)
|
||||
|
||||
# Does not work with MinGW at leat !?
|
||||
MESSAGE(STATUS "CMAKE_BINARY_DIR=${CMAKE_BINARY_DIR}")
|
||||
SET(_XMLVER_EXE "${CMAKE_BINARY_DIR}/${SD_BINDIR}/${CMAKE_EXECUTABLE_PREFIX}xmlversion${CMAKE_EXECUTABLE_SUFFIX}")
|
||||
|
||||
ELSE()
|
||||
|
||||
_GET_TARGET_REAL_PATHNAME(xmlversion _XMLVER_EXE)
|
||||
|
||||
ENDIF()
|
||||
|
||||
# In order to run xmlversion.exe in the build tree (see below), under Windows,
|
||||
# we nearly always have to copy dependency DLLs next to it.
|
||||
|
@ -75,15 +86,32 @@ MACRO(SD_UPDATE_SETTINGS_VERSION)
|
|||
|
||||
# Internal dependencies (needed in all cases).
|
||||
# TODO: Check if still needed after DLLs built in "standard" folders in build tree ????
|
||||
_GET_TARGET_REAL_PATHNAME(_DLL_PATHNAME tgf)
|
||||
|
||||
IF(FALSE)
|
||||
|
||||
IF(WIN32)
|
||||
SET(_DLL_PATHNAME "${CMAKE_BINARY_DIR}/${SD_BINDIR}/${CMAKE_SHARED_LIBRARY_PREFIX}tgf${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
||||
ELSE()
|
||||
_GET_TARGET_REAL_PATHNAME(_DLL_PATHNAME tgf)
|
||||
ENDIF()
|
||||
LIST(APPEND _DLLS_TO_INSTALL ${_DLL_PATHNAME})
|
||||
|
||||
_GET_TARGET_REAL_PATHNAME(_DLL_PATHNAME portability)
|
||||
IF(WIN32)
|
||||
SET(_DLL_PATHNAME "${CMAKE_BINARY_DIR}/${SD_BINDIR}/${CMAKE_SHARED_LIBRARY_PREFIX}portability${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
||||
ELSE()
|
||||
_GET_TARGET_REAL_PATHNAME(_DLL_PATHNAME portability)
|
||||
ENDIF()
|
||||
LIST(APPEND _DLLS_TO_INSTALL ${_DLL_PATHNAME})
|
||||
|
||||
IF(NOT OPTION_3RDPARTY_EXPAT)
|
||||
_GET_TARGET_REAL_PATHNAME(_DLL_PATHNAME txml)
|
||||
IF(WIN32)
|
||||
SET(_DLL_PATHNAME "${CMAKE_BINARY_DIR}/${SD_BINDIR}/${CMAKE_SHARED_LIBRARY_PREFIX}txml${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
||||
ELSE()
|
||||
_GET_TARGET_REAL_PATHNAME(_DLL_PATHNAME txml)
|
||||
ENDIF()
|
||||
LIST(APPEND _DLLS_TO_INSTALL ${_DLL_PATHNAME})
|
||||
ENDIF()
|
||||
|
||||
ENDIF()
|
||||
|
||||
# 3rd party dependencies
|
||||
|
@ -130,9 +158,15 @@ MACRO(SD_UPDATE_SETTINGS_VERSION)
|
|||
ENDIF(MINGW AND NOT CMAKE_GENERATOR STREQUAL "MSYS Makefiles")
|
||||
|
||||
# Copy the dependency DLLs found above.
|
||||
GET_FILENAME_COMPONENT(_XMLVER_DIR "${_XMLVER_EXE}" PATH)
|
||||
MESSAGE(STATUS "xmlversion : DLLs to install=${_DLLS_TO_INSTALL}")
|
||||
FILE(COPY ${_DLLS_TO_INSTALL} DESTINATION "${_XMLVER_DIR}")
|
||||
IF(_DLLS_TO_INSTALL)
|
||||
FOREACH(_DLL ${_DLLS_TO_INSTALL})
|
||||
ADD_CUSTOM_COMMAND(TARGET settings_versions PRE_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E echo Copying "${_DLL}" "${CMAKE_BINARY_DIR}/${SD_BINDIR}"
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/${SD_BINDIR}"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${_DLL}" "${CMAKE_BINARY_DIR}/${SD_BINDIR}")
|
||||
ENDFOREACH()
|
||||
ENDIF()
|
||||
|
||||
ENDIF(WIN32)
|
||||
|
||||
|
@ -148,8 +182,8 @@ MACRO(SD_UPDATE_SETTINGS_VERSION)
|
|||
SET(_USER_DIR ${_ARG})
|
||||
# Register file for run-time install/update at game startup
|
||||
# (through filesetup.cpp services)
|
||||
ADD_CUSTOM_COMMAND(TARGET settings_versions
|
||||
COMMENT "${_XMLVER_EXE}" "${CMAKE_BINARY_DIR}/${SD_BINDIR}/version.xml" "${_SRC_FILE}" "${_USER_DIR}" "${PROJECT_SOURCE_DIR}/data"
|
||||
ADD_CUSTOM_COMMAND(TARGET settings_versions POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E echo "${_XMLVER_EXE}" "${CMAKE_BINARY_DIR}/${SD_BINDIR}/version.xml" "${_SRC_FILE}" "${_USER_DIR}" "${PROJECT_SOURCE_DIR}/data"
|
||||
COMMAND "${_XMLVER_EXE}" "${CMAKE_BINARY_DIR}/${SD_BINDIR}/version.xml" "${_SRC_FILE}" "${_USER_DIR}" "${PROJECT_SOURCE_DIR}/data")
|
||||
# Done for this {file, folder} couple, ready for next one.
|
||||
SET(_SRC_FILE)
|
||||
|
|
|
@ -189,8 +189,20 @@ MACRO(SD_ADD_EXECUTABLE TARGET_NAME)
|
|||
ADD_EXECUTABLE(${TARGET_NAME} ${ARGN})
|
||||
|
||||
# Change target location (for running in build-tree without installing).
|
||||
SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES
|
||||
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${SD_BINDIR})
|
||||
IF(WIN32)
|
||||
|
||||
GET_TARGET_PROPERTY(_TARGET_LOC ${TARGET_NAME} LOCATION)
|
||||
ADD_CUSTOM_COMMAND(TARGET ${TARGET_NAME} POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E echo Copying "${_TARGET_LOC}" to "${CMAKE_BINARY_DIR}/${SD_BINDIR}"
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/${SD_BINDIR}"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${_TARGET_LOC}" "${CMAKE_BINARY_DIR}/${SD_BINDIR}")
|
||||
|
||||
ELSE(WIN32)
|
||||
|
||||
SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES
|
||||
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${SD_BINDIR})
|
||||
|
||||
ENDIF()
|
||||
|
||||
ENDMACRO(SD_ADD_EXECUTABLE TARGET_NAME)
|
||||
|
||||
|
@ -216,9 +228,21 @@ MACRO(SD_ADD_LIBRARY TARGET_NAME TARGET_TYPE)
|
|||
# Change target location (for running in build-tree without installing).
|
||||
IF(${TARGET_TYPE} STREQUAL "SHARED")
|
||||
|
||||
SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES
|
||||
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${SD_LIBDIR}/lib
|
||||
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${SD_LIBDIR}/lib)
|
||||
IF(WIN32)
|
||||
|
||||
GET_TARGET_PROPERTY(_TARGET_LOC ${TARGET_NAME} LOCATION)
|
||||
ADD_CUSTOM_COMMAND(TARGET ${TARGET_NAME} POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E echo Copying "${_TARGET_LOC}" to "${CMAKE_BINARY_DIR}/${SD_BINDIR}"
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/${SD_BINDIR}"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${_TARGET_LOC}" "${CMAKE_BINARY_DIR}/${SD_BINDIR}")
|
||||
|
||||
ELSE(WIN32)
|
||||
|
||||
SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES
|
||||
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${SD_LIBDIR}/lib
|
||||
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${SD_LIBDIR}/lib)
|
||||
|
||||
ENDIF()
|
||||
|
||||
ELSEIF(${TARGET_TYPE} STREQUAL "MODULE")
|
||||
|
||||
|
|
|
@ -424,7 +424,7 @@ bool GfApplication::parseOptions()
|
|||
|
||||
// If the (installed) data dir. does not exists, may be it's because we are running
|
||||
// without installing : try and use the _source_ data dir.
|
||||
if (pszLocalDir && strlen(pszLocalDir) && !GfDirExists(pszDataDir))
|
||||
if (pszDataDir && strlen(pszDataDir) && !GfDirExists(pszDataDir))
|
||||
{
|
||||
GfLogTrace("Installed data dir. '%s' not found, trying source data dir.\n", pszDataDir);
|
||||
pszDataDir = GfSetDataDir(SD_DATADIR_SRC);
|
||||
|
|
|
@ -106,8 +106,25 @@ void GfDirFreeList(tFList *list, tfDirfreeUserData freeUserData, bool freeName,
|
|||
*/
|
||||
bool GfDirExists(const char* pszName)
|
||||
{
|
||||
if (!pszName || strlen(pszName) == 0)
|
||||
return false;
|
||||
|
||||
struct stat st;
|
||||
return stat(pszName, &st) ? false : true;
|
||||
|
||||
#ifdef WIN32
|
||||
if (pszName[strlen(pszName)-1] == '/' || pszName[strlen(pszName)-1] == '\\')
|
||||
{
|
||||
// Windows stat() does not supports traling (anti-)slashes ... no comment please.
|
||||
char* pszNameNoTrailSlash = strdup(pszName);
|
||||
pszNameNoTrailSlash[strlen(pszName)-1] = 0;
|
||||
GfLogDebug("XXXXXXXXXXX pszNameNoTrailSlash=%s\n", pszNameNoTrailSlash);
|
||||
const bool bAnswer = (stat(pszNameNoTrailSlash, &st) ? false : true);
|
||||
free(pszNameNoTrailSlash);
|
||||
return bAnswer;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
return stat(pszName, &st) ? false : true;
|
||||
}
|
||||
|
||||
/** Create a directory and the parents if needed
|
||||
|
|
Loading…
Reference in a new issue