Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Jan 29, 2009, 11:35:54 PM (15 years ago)
Author:
rgrieder
Message:

This commit gets a little ugly, couldn't separate that anymore:

  • Renamed UseTolua.cmake to GenerateLuaBindings.cmake
  • Applied the macros for compiler flags, linker flags, header files and source groups Updated the whole build tree for that
  • Created real compiler config scripts (BuildConfigGCC.cmake and BuildConfigMSVC.cmake)
  • Large scale clean up in BuildConfig.cmake
  • You can now specify your own LibraryConfig and BuildConfig script via CMake Cache
  • Lots of small changes and fixes
Location:
code/branches/buildsystem2/cmake
Files:
1 deleted
5 edited
1 moved

Legend:

Unmodified
Added
Removed
  • code/branches/buildsystem2/cmake/BuildConfig.cmake

    r2618 r2621  
    3535# Sets where to find the external libraries like OgreMain.dll at runtime
    3636# On Unix you should not have to change this at all.
    37 IF(NOT ORXONOX_LIBRARY_BIN_DIR)
    38   SET(ORXONOX_LIBRARY_BIN_DIR ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
    39 ENDIF(NOT ORXONOX_LIBRARY_BIN_DIR)
     37IF(NOT ORXONOX_RUNTIME_LIBRARY_DIRECTORY)
     38  SET(ORXONOX_RUNTIME_LIBRARY_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
     39ENDIF(NOT ORXONOX_RUNTIME_LIBRARY_DIRECTORY)
    4040
    4141# Set Debug build to default when not having multi-config generator like msvc
     
    5454
    5555OPTION(EXTRA_WARNINGS "Enable some extra warnings (heavily pollutes the output)")
    56 IF(EXTRA_WARNINGS)
    57   SET(ORXONOX_WARNING_FLAGS "-Wextra --Wno-unsued-parameter")
    58 ELSE(EXTRA_WARNINGS)
    59   SET(ORXONOX_WARNING_FLAGS "-Wall")
    60 ENDIF(EXTRA_WARNINGS)
    6156
    62 SET(ORXONOX_MEDIA_DIRECTORY "${CMAKE_SOURCE_DIR}/../media")
     57# Specify media directory
     58GET_FILENAME_COMPONENT(_media_path "${CMAKE_SOURCE_DIR}/../media" ABSOLUTE)
     59SET(ORXONOX_MEDIA_DIRECTORY ${_media_path} CACHE PATH
     60    "Location of the media directory.")
     61IF(NOT EXISTS ${ORXONOX_MEDIA_DIRECTORY})
     62  MESSAGE(STATUS "Warning: The media directory does not exist ${ORXONOX_MEDIA_DIRECTORY}")
     63ENDIF(NOT EXISTS ${ORXONOX_MEDIA_DIRECTORY})
     64
    6365# More plugins: Plugin_BSPSceneManager, Plugin_OctreeSceneManager
    6466# Render systems may be optional, but at least one has to be found in FindOgre
     
    7880
    7981############## Compiler Config ##################
    80 INCLUDE(BuildConfigGCC)
    81 INCLUDE(BuildConfigMSVC)
    82 # User can create his own file if required
    83 IF(EXISTS ${CMAKE_BINARY_DIR}/BuildConfigUser.cmake)
    84   INCLUDE(${CMAKE_BINARY_DIR}/BuildConfigUser)
    85 ENDIF(EXISTS ${CMAKE_BINARY_DIR}/BuildConfigUser.cmake)
     82
     83INCLUDE(FlagUtilities)
     84
     85# Configure the compiler specific build options
     86IF(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_GNUC)
     87  INCLUDE(BuildConfigGCC)
     88ELSEIF(MSVC)
     89  INCLUDE(BuildConfigMSVC)
     90ELSE(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_GNUC)
     91  MESSAGE(STATUS "Warning: Your compiler is not officially supported.")
     92ENDIF(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_GNUC)
     93
     94SET(BUILD_CONFIG_USER_SCRIPT "" CACHE FILEPATH
     95    "Specify a CMake script if you wish to write your own build config.
     96     See BuildConfigGCC.cmake or BuildConfigMSVC.cmake for examples.")
     97IF(BUILD_CONFIG_USER_SCRIPT)
     98  IF(EXISTS ${CMAKE_MODULE_PATH}/${BUILD_CONFIG_USER_SCRIPT}.cmake)
     99    INCLUDE(${BUILD_CONFIG_USER_SCRIPT})
     100  ELSEIF(EXISTS ${BUILD_CONFIG_USER_SCRIPT})
     101    INCLUDE(${BUILD_CONFIG_USER_SCRIPT})
     102  ELSEIF(EXISTS ${CMAKE_MODULE_PATH}/${BUILD_CONFIG_USER_SCRIPT})
     103    INCLUDE(${CMAKE_MODULE_PATH}/${BUILD_CONFIG_USER_SCRIPT})
     104  ENDIF(EXISTS ${CMAKE_MODULE_PATH}/${BUILD_CONFIG_USER_SCRIPT}.cmake)
     105ENDIF(BUILD_CONFIG_USER_SCRIPT)
    86106
    87107
     
    97117
    98118
    99 ################### Macros ######################
     119####### Static/Dynamic linking defines ##########
    100120
    101 # Also define macros to easily extend the compiler flags
    102 # Additional argument is a condition
    103 MACRO(ADD_CXX_FLAGS _flag _cond)
    104   IF(${_cond})
    105     SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_flag}")
    106   ENDIF(${_cond})
    107 ENDMACRO(ADD_CXX_FLAGS _flag)
    108 MACRO(ADD_C_FLAGS _flag)
    109   IF(${_cond})
    110     SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_flag}")
    111   ENDIF(${_cond})
    112 ENDMACRO(ADD_C_FLAGS _flag)
     121# If no defines are specified, these libs get linked statically
     122ADD_COMPILER_FLAGS("-DBOOST_ALL_DYN_LINK" WIN32 LINK_BOOST_DYNAMIC)
     123ADD_COMPILER_FLAGS("-DENET_DLL"           WIN32 LINK_ENET_DYNAMIC)
     124ADD_COMPILER_FLAGS("-DLUA_BUILD_AS_DLL"   WIN32 LINK_LUA_DYNAMIC)
     125ADD_COMPILER_FLAGS("-DZLIB_DLL"           WIN32 LINK_ZLIB_DYNAMIC)
     126
     127# If no defines are specified, these libs get linked dynamically
     128# You can change that optionally in the Cache.
     129ADD_COMPILER_FLAGS("-DCEGUI_STATIC"       WIN32 NOT LINK_CEGUI_DYNAMIC)
     130ADD_COMPILER_FLAGS("-DOGRE_STATIC_LIB"    WIN32 NOT LINK_OGRE_DYNAMIC)
     131ADD_COMPILER_FLAGS("-DSTATIC_BUILD"       WIN32 NOT LINK_TCL_DYNAMIC)
  • code/branches/buildsystem2/cmake/BuildConfigGCC.cmake

    r2612 r2621  
    2626 #
    2727
    28 ###### Default Compiler/Linker Options ##########
    29 # Most people use GCC to compile orxonox, so use that as default
     28# Also include environment flags. Could cause conflicts though
     29SET_COMPILER_FLAGS("$ENV{CXXFLAGS}" CXX CACHE)
     30SET_COMPILER_FLAGS("$ENV{CFLAGS}"   C   CACHE)
    3031
    31 SET(CMAKE_C_FLAGS   "$ENV{CFLAGS}   ${ORXONOX_WARNING_FLAGS} -fPIC")
    32 SET(CMAKE_CXX_FLAGS "$ENV{CXXFLAGS} ${ORXONOX_WARNING_FLAGS} -fPIC")
    33 # These flags are added to the flags above
    34 SET(CMAKE_C_FLAGS_DEBUG            "    -g -ggdb")
    35 SET(CMAKE_CXX_FLAGS_DEBUG          "    -g -ggdb")
    36 SET(CMAKE_C_FLAGS_RELEASE          "-O3          -DNDEBUG")
    37 SET(CMAKE_CXX_FLAGS_RELEASE        "-O3          -DNDEBUG")
    38 SET(CMAKE_C_FLAGS_RELWITHDEBINFO   "-O2 -g -ggdb -DNDEBUG")
    39 SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g -ggdb -DNDEBUG")
    40 SET(CMAKE_C_FLAGS_MINSIZEREL       "-Os          -DNDEBUG")
    41 SET(CMAKE_CXX_FLAGS_MINSIZEREL     "-Os          -DNDEBUG")
     32# These flags get added to the flags above
     33SET_COMPILER_FLAGS("    -g -ggdb -D_DEBUG" Debug          CACHE)
     34SET_COMPILER_FLAGS("             -DNDEBUG" ReleaseAll     CACHE)
     35ADD_COMPILER_FLAGS("-O3"                   Release        CACHE)
     36ADD_COMPILER_FLAGS("-O2 -g -ggdb"          RelWithDebInfo CACHE)
     37ADD_COMPILER_FLAGS("-Os"                   MinSizeRel     CACHE)
    4238
    43 SET(CMAKE_LD_FLAGS "$ENV{LDFLAGS}")
    44 SET(CMAKE_EXE_LINKER_FLAGS    " --no-undefined")
    45 SET(CMAKE_SHARED_LINKER_FLAGS " --no-undefined")
    46 SET(CMAKE_MODULE_LINKER_FLAGS " --no-undefined")
     39# CMake doesn't seem to set the PIC flags right on certain 64 bit systems
     40IF(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64")
     41  ADD_COMPILER_FLAGS("-fPIC" CACHE)
     42ENDIF(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64")
     43
     44# Increase warning level if requested
     45IF(EXTRA_WARNINGS)
     46  REMOVE_COMPILER_FLAGS("-Wall" CACHE)
     47  ADD_COMPILER_FLAGS("-Wextra --Wno-unused-parameter" CACHE)
     48ELSE(EXTRA_WARNINGS)
     49  REMOVE_COMPILER_FLAGS("-Wextra --Wno-unused-parameter" CACHE)
     50  ADD_COMPILER_FLAGS("-Wall" CACHE)
     51ENDIF(EXTRA_WARNINGS)
     52
     53# General linker flags
     54SET_LINKER_FLAGS("--no-undefined" CACHE)
  • code/branches/buildsystem2/cmake/BuildConfigMSVC.cmake

    r2612 r2621  
    2525 #      ...
    2626 #
    27  
    28 ###################### MSVC config ########################
    29 # Set the library directories and special options when
    30 # using Visual Studio.
    31 ###########################################################
    3227
    33 IF (MSVC)
     28#################### Compiler Flags #####################
    3429
    35   #################### Compiler Flags #####################
     30# -MD    Minimal Rebuild
     31# -RTC1  Both basic runtime checks
     32# -MD[d] Multithreaded [debug] DLL
     33# -Zi    Program Database
     34# -ZI    Program Database for Edit & Continue
     35# -WX    General warning Level X
     36# -wdX   Disable specific warning X
     37# -wnX   Set warning level of specific warning X to level n
    3638
    37   # /MD    Minimal Rebuild
    38   # /RTC1  Both basic runtime checks
    39   # /MD[d] Multithreaded [debug] DLL
    40   # /Zi    Program Database
    41   # /ZI    Program Database for Edit & Continue
    42   # /WX    Warning Level X
    43   # /wdX   Disable specific warning X
    44   SET(MSVC_CL_FLAGS "
    45     /D WIN32 /D __WIN32__ /D _WIN32 /D _WINDOWS
    46     /D BOOST_ALL_DYN_LINK
    47     /D OIS_DYNAMIC_LIB
    48     /D ZLIB_WINAPI
    49     /D LUA_BUILD_AS_DLL
    50     /D _CRT_SECURE_NO_WARNINGS
    51     /W3
    52     /EHsc
    53     /wd4522
    54     /wd4251
    55     /wd4800
    56   ")
    57   SET(CMAKE_C_FLAGS                  "${MSVC_CL_FLAGS}")
    58   SET(CMAKE_CXX_FLAGS                "${MSVC_CL_FLAGS}")
     39# Overwrite CMake default flags first. Be careful with this
     40# Only add (not set) the general compiler flags.
     41# CMake default flags : -DWIN32 -D_WINDOWS -W3 -Zm1000
     42# additionally for CXX: -EHsc -GR
     43ADD_COMPILER_FLAGS("-D__WIN32__ -D_WIN32"      CACHE)
     44ADD_COMPILER_FLAGS("-D_CRT_SECURE_NO_WARNINGS" CACHE)
     45ADD_COMPILER_FLAGS("-DUNICODE -D_UNICODE"      CACHE)
     46ADD_COMPILER_FLAGS("-w44522 -w44251 -w44800"   CACHE)
    5947
    60   # Note: ${CMAKE_C_FLAGS} get added to the specific ones
    61   SET(MSVC_CL_FLAGS_DEBUG            "/MDd /Od  /Zi /Gm /RTC1")
    62   SET(MSVC_CL_FLAGS_RELEASE          "/MD  /MP2 /D TOLUA_RELEASE")
    63   SET(CMAKE_C_FLAGS_DEBUG            "${MSVC_CL_FLAGS_DEBUG}")
    64   SET(CMAKE_CXX_FLAGS_DEBUG          "${MSVC_CL_FLAGS_DEBUG}")
    65   SET(CMAKE_C_FLAGS_RELEASE          "${MSVC_CL_FLAGS_RELEASE} /O2")
    66   SET(CMAKE_CXX_FLAGS_RELEASE        "${MSVC_CL_FLAGS_RELEASE} /O2")
    67   SET(CMAKE_C_FLAGS_RELWITHDEBINFO   "${MSVC_CL_FLAGS_RELEASE} /O2 /Zi")
    68   SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${MSVC_CL_FLAGS_RELEASE} /O2 /Zi")
    69   SET(CMAKE_C_FLAGS_MINSIZEREL       "${MSVC_CL_FLAGS_RELEASE} /O1")
    70   SET(CMAKE_CXX_FLAGS_MINSIZEREL     "${MSVC_CL_FLAGS_RELEASE} /O1")
     48# Increase warning level if requested
     49IF(EXTRA_WARNINGS)
     50  REMOVE_COMPILER_FLAGS("-W1 -W2 -W3" CACHE)
     51  ADD_COMPILER_FLAGS   ("-W4" CACHE)
     52ELSE(EXTRA_WARNINGS)
     53  REMOVE_COMPILER_FLAGS("-W1 -W2 -W4" CACHE)
     54  ADD_COMPILER_FLAGS   ("-W3" CACHE)
     55ENDIF(EXTRA_WARNINGS)
    7156
    72   ##################### Linker Flags ######################
     57# Overwrite CMake default flags here.
     58SET_COMPILER_FLAGS("-MDd -Od -ZI -D_DEBUG -Gm -RTC1" Debug          CACHE)
     59SET_COMPILER_FLAGS("-MD  -O2     -DNDEBUG -MP2"      Release        CACHE)
     60SET_COMPILER_FLAGS("-MD  -O2 -Zi -DNDEBUG"           RelWithDebInfo CACHE)
     61SET_COMPILER_FLAGS("-MD  -O1     -DNDEBUG -MP2"      MinSizeRel     CACHE)
    7362
    74   SET(MSVC_LINKER_FLAGS                        "")
    75   SET(CMAKE_EXE_LINKER_FLAGS                   "${MSVC_LINKER_FLAGS}")
    76   SET(CMAKE_SHARED_LINKER_FLAGS                "${MSVC_LINKER_FLAGS}")
     63##################### Linker Flags ######################
    7764
    78   # Note: ${CMAKE_EXE_LINKER_FLAGS} get added to the specific ones
    79   SET(MSVC_LINKER_FLAGS_DEBUG                  "/INCREMENTAL:YES")
    80   SET(MSVC_LINKER_FLAGS_RELEASE                "/INCREMENTAL:NO /OPT:REF /OPT:ICF")
    81   SET(CMAKE_EXE_LINKER_FLAGS_DEBUG             "${MSVC_LINKER_FLAGS_DEBUG}")
    82   SET(CMAKE_SHARED_LINKER_FLAGS_DEBUG          "${MSVC_LINKER_FLAGS_DEBUG}")
    83   SET(CMAKE_EXE_LINKER_FLAGS_RELEASE           "${MSVC_LINKER_FLAGS_RELEASE}")
    84   SET(CMAKE_SHARED_LINKER_FLAGS_RELEASE        "${MSVC_LINKER_FLAGS_RELEASE}")
    85   SET(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO    "${MSVC_LINKER_FLAGS_RELEASE}")
    86   SET(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "${MSVC_LINKER_FLAGS_RELEASE}")
    87   SET(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL        "${MSVC_LINKER_FLAGS_RELEASE}")
    88   SET(CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL     "${MSVC_LINKER_FLAGS_RELEASE}")
    89 
    90 ENDIF (MSVC)
     65# CMake default flags: -MANIFEST -STACK:10000000 -machine:I386
     66# and INCREMENTAL and DEBUG for debug versions
     67ADD_LINKER_FLAGS("-OPT:REF -OPT:ICF -OPT:NOWIN98" Release MinSizeRel CACHE)
  • code/branches/buildsystem2/cmake/GenerateToluaBindings.cmake

    r2618 r2621  
    1616#    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
    1717
    18 MACRO(TOLUA _tolua_package _tolua_srcfiles_varname)
    19   # TODO: cleaner arguments handling
     18FUNCTION(GENERATE_TOLUA_BINDINGS _tolua_package _target_source_files)
    2019  SET(_tolua_inputfiles ${ARGN})
    2120  LIST(REMOVE_ITEM _tolua_inputfiles "INPUTFILES")
     
    2423  SET(_tolua_cxxfile "${CMAKE_CURRENT_BINARY_DIR}/ToluaBind${_tolua_package}.cc")
    2524  SET(_tolua_hfile   "${CMAKE_CURRENT_BINARY_DIR}/ToluaBind${_tolua_package}.h")
    26   SET(${_tolua_srcfiles_varname} ${${_tolua_srcfiles_varname}} ${_tolua_cxxfile})
    2725
    28   # TODO: check secureness of this temporary file
     26  SET(${_target_source_files}
     27    ${${_target_source_files}}
     28    ${_tolua_cxxfile}
     29    ${_tolua_hfile}
     30    PARENT_SCOPE
     31  )
     32  SOURCE_GROUP("Tolua" FILES ${_tolua_cxxfile} ${_tolua_hfile})
     33
     34  # Create temporary package file
    2935  FILE(REMOVE ${_tolua_pkgfile})
    3036  FOREACH(_tolua_inputfile ${_tolua_inputfiles})
     
    3238  ENDFOREACH(_tolua_inputfile)
    3339
    34   # Note: Some of the variables are already defined in src/tolua/CMakeLists.txt
    35   #       or in the platform config
    3640  ADD_CUSTOM_COMMAND(
    3741    OUTPUT ${_tolua_cxxfile} ${_tolua_hfile}
    38     COMMAND toluaexe_orxonox -n ${_tolua_package}
    39                              -w ${CMAKE_CURRENT_SOURCE_DIR}
    40                              -o ${_tolua_cxxfile}
    41                              -H ${_tolua_hfile}
    42                              -s ${TOLUA_PARSER_SOURCE}
    43                                 ${_tolua_pkgfile}
     42    COMMAND tolua++app_orxonox -n ${_tolua_package}
     43                               -w ${CMAKE_CURRENT_SOURCE_DIR}
     44                               -o ${_tolua_cxxfile}
     45                               -H ${_tolua_hfile}
     46                               -s ${TOLUA_PARSER_SOURCE}
     47                                  ${_tolua_pkgfile}
    4448    DEPENDS              ${TOLUA_PARSER_DEPENDENCIES}
    4549    IMPLICIT_DEPENDS CXX ${_tolua_inputfiles}
    46     WORKING_DIRECTORY    ${ORXONOX_LIBRARY_BIN_DIR}
     50    WORKING_DIRECTORY    ${ORXONOX_RUNTIME_LIBRARY_DIRECTORY}
    4751    COMMENT "Generating tolua bind files for package ${_tolua_package}"
    4852  )
    49 ENDMACRO(TOLUA)
     53ENDFUNCTION(GENERATE_TOLUA_BINDINGS)
  • code/branches/buildsystem2/cmake/LibraryConfigMSVC.cmake

    r2618 r2621  
    4040    MESSAGE(FATAL_ERROR "Could not find dependency directory for the Visual Studio libraries")
    4141  ENDIF(EXISTS ${CMAKE_SOURCE_DIR}/dependencies/orxonox_vc8)
    42   SET(ORXONOX_LIBRARY_BIN_DIR ${MSVC_LIBRARY_DIR}/bin)
     42  SET(ORXONOX_RUNTIME_LIBRARY_DIRECTORY ${MSVC_LIBRARY_DIR}/bin)
    4343
    4444  # Set variables for the include directories and the libraries
  • code/branches/buildsystem2/cmake/LibraryConfigMinGW.cmake

    r2618 r2621  
    4242    MESSAGE(FATAL_ERROR "Could not find dependency directory for the MinGW libraries")
    4343  ENDIF(EXISTS ${CMAKE_SOURCE_DIR}/libs)
    44   SET(ORXONOX_LIBRARY_BIN_DIR ${MINGW_LIBRARY_DIR})
     44  SET(ORXONOX_RUNTIME_LIBRARY_DIRECTORY ${MINGW_LIBRARY_DIR})
    4545
    4646  # Note: When setting ENV${} variables, make sure to use quotes when
Note: See TracChangeset for help on using the changeset viewer.