cmake_modules/paths.cmake
author koda
Wed, 12 Jun 2013 19:30:11 +0200
changeset 9217 992b7ef2eba3
parent 9216 29372f16ddce
child 9220 5e7db24f3489
permissions -rw-r--r--
apply linker flags to all relevant targets
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9190
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
     1
#where to build libs and bins
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
     2
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
     3
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
     4
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
     5
#resource paths
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
     6
if(UNIX AND NOT APPLE)
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
     7
    set(target_binary_install_dir "bin")
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
     8
    set(target_library_install_dir "lib")
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
     9
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    10
    string(SUBSTRING "${DATA_INSTALL_DIR}" 0 1 sharepath_start)
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    11
    if (NOT (${sharepath_start} MATCHES "/"))
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    12
        set(HEDGEWARS_DATADIR "${CMAKE_INSTALL_PREFIX}/${DATA_INSTALL_DIR}/")
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    13
    else()
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    14
        set(HEDGEWARS_DATADIR "${DATA_INSTALL_DIR}/")
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    15
    endif()
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    16
    set(HEDGEWARS_FULL_DATADIR "${HEDGEWARS_DATADIR}")
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    17
else()
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    18
    set(target_binary_install_dir "./")
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    19
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    20
    if(APPLE)
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    21
        set(target_library_install_dir "../Frameworks/")
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    22
        set(CMAKE_INSTALL_PREFIX "Hedgewars.app/Contents/MacOS/")
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    23
        set(HEDGEWARS_DATADIR "../Resources/")
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    24
        set(HEDGEWARS_FULL_DATADIR "/Applications/${CMAKE_INSTALL_PREFIX}/${HEDGEWARS_DATADIR}")
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    25
    elseif(WIN32)
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    26
        set(target_library_install_dir "./")
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    27
        set(HEDGEWARS_DATADIR "./")
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    28
        set(HEDGEWARS_FULL_DATADIR "${CMAKE_INSTALL_PREFIX}/")
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    29
        link_directories("${EXECUTABLE_OUTPUT_PATH}" "${CMAKE_SOURCE_DIR}/misc/winutils/bin")
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    30
    endif()
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    31
endif()
9198
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    32
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    33
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    34
#RPATH SETTINGS
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    35
#necessary for dynamic libraries on UNIX, ignored elsewhere
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    36
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    37
#use, i.e. don't skip the full RPATH for the build tree
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    38
set(CMAKE_SKIP_BUILD_RPATH FALSE)
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    39
set(CMAKE_SKIP_INSTALL_RPATH FALSE)
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    40
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    41
#it's safe to use our RPATH because it is relative
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    42
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    43
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    44
#paths where to find libraries (final slash not optional):
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    45
# - the first is relative to the executable
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    46
# - the second is the same directory of the executable (so it runs in bin/)
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    47
# - the third one is the full path of the system dir
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    48
#source http://www.cmake.org/pipermail/cmake/2008-January/019290.html
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    49
set(CMAKE_INSTALL_RPATH "$ORIGIN/../${target_library_install_dir}/:$ORIGIN/:${CMAKE_INSTALL_PREFIX}/${target_library_install_dir}/")
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    50
set(CMAKE_INSTALL_RPATH_ESCAPED "$$ORIGIN/../${target_library_install_dir}/:$$ORIGIN/:${CMAKE_INSTALL_PREFIX}/${target_library_install_dir}/")
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    51
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    52
if(UNIX AND NOT APPLE)
9216
29372f16ddce explicitly set the origin linker flag so that $ORIGIN is used correctly
koda
parents: 9200
diff changeset
    53
    list(APPEND pascal_flags "-k-rpath" "-k'${CMAKE_INSTALL_RPATH_ESCAPED}'" "-k-z" "-korigin")
29372f16ddce explicitly set the origin linker flag so that $ORIGIN is used correctly
koda
parents: 9200
diff changeset
    54
    list(APPEND haskell_flags "-optl" "-Wl,-rpath,'${CMAKE_INSTALL_RPATH_ESCAPED},-z,origin'")
29372f16ddce explicitly set the origin linker flag so that $ORIGIN is used correctly
koda
parents: 9200
diff changeset
    55
    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,origin")
29372f16ddce explicitly set the origin linker flag so that $ORIGIN is used correctly
koda
parents: 9200
diff changeset
    56
    set(CMAKE_SHARED_LIBRARY_C_FLAGS "${CMAKE_SHARED_LIBRARY_C_FLAGS} -Wl,-z,origin")
29372f16ddce explicitly set the origin linker flag so that $ORIGIN is used correctly
koda
parents: 9200
diff changeset
    57
    set(CMAKE_SHARED_LIBRARY_CXX_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS} -Wl,-z,origin")
9198
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    58
endif()
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    59
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    60
#add the automatically determined parts of the RPATH
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    61
#which point to directories outside the build tree to the install RPATH
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    62
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH FALSE)
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    63
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    64
9200
37c37026f7ec love cmake when it works
koda
parents: 9198
diff changeset
    65
#install_name_tool magic for OS X
37c37026f7ec love cmake when it works
koda
parents: 9198
diff changeset
    66
set(CMAKE_INSTALL_NAME_DIR "@executable_path/../Frameworks")
37c37026f7ec love cmake when it works
koda
parents: 9198
diff changeset
    67