cmake_modules/paths.cmake
author unc0rr
Sat, 14 Jan 2017 22:30:09 +0300
changeset 12137 193dfdcb0620
parent 11329 ac6715709812
child 14274 084af6d2685f
permissions -rw-r--r--
- Use logging facilities instead of plain println! - Parse malformed messages, parser doesn't get stuck anymore
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)
9224
bce8cf41d666 merge cmake_pascal branch in default
koda
parents: 9220
diff changeset
     4
#these variables are for non-makefile generators
bce8cf41d666 merge cmake_pascal branch in default
koda
parents: 9220
diff changeset
     5
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH})
bce8cf41d666 merge cmake_pascal branch in default
koda
parents: 9220
diff changeset
     6
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${EXECUTABLE_OUTPUT_PATH})
bce8cf41d666 merge cmake_pascal branch in default
koda
parents: 9220
diff changeset
     7
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${EXECUTABLE_OUTPUT_PATH})
bce8cf41d666 merge cmake_pascal branch in default
koda
parents: 9220
diff changeset
     8
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH})
bce8cf41d666 merge cmake_pascal branch in default
koda
parents: 9220
diff changeset
     9
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${LIBRARY_OUTPUT_PATH})
bce8cf41d666 merge cmake_pascal branch in default
koda
parents: 9220
diff changeset
    10
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${LIBRARY_OUTPUT_PATH})
bce8cf41d666 merge cmake_pascal branch in default
koda
parents: 9220
diff changeset
    11
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH})
bce8cf41d666 merge cmake_pascal branch in default
koda
parents: 9220
diff changeset
    12
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${LIBRARY_OUTPUT_PATH})
bce8cf41d666 merge cmake_pascal branch in default
koda
parents: 9220
diff changeset
    13
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${LIBRARY_OUTPUT_PATH})
9190
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    14
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    15
#resource paths
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    16
if(UNIX AND NOT APPLE)
9862
14292fb8d094 BUILD: make binary/libdir destinations modifiable
hasufell <hasufell@gentoo.org>
parents: 9860
diff changeset
    17
    set(target_binary_install_dir "bin" CACHE PATH "install dest for binaries")
11329
ac6715709812 Add multiarch location to library (From Fedora)
Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
parents: 10911
diff changeset
    18
    set(target_library_install_dir "lib${LIB_SUFFIX}" CACHE PATH "install dest for libs")
9190
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
    string(SUBSTRING "${DATA_INSTALL_DIR}" 0 1 sharepath_start)
10069
c4ad9c76b542 add AppData file
koda
parents: 9950
diff changeset
    21
    if(${sharepath_start} MATCHES "/")
c4ad9c76b542 add AppData file
koda
parents: 9950
diff changeset
    22
        set(HEDGEWARS_DATADIR "${DATA_INSTALL_DIR}/")
c4ad9c76b542 add AppData file
koda
parents: 9950
diff changeset
    23
    else()
9190
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    24
        set(HEDGEWARS_DATADIR "${CMAKE_INSTALL_PREFIX}/${DATA_INSTALL_DIR}/")
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    25
    endif()
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    26
    set(HEDGEWARS_FULL_DATADIR "${HEDGEWARS_DATADIR}")
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    27
else()
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    28
    set(target_binary_install_dir "./")
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    29
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    30
    if(APPLE)
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    31
        set(target_library_install_dir "../Frameworks/")
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    32
        set(CMAKE_INSTALL_PREFIX "Hedgewars.app/Contents/MacOS/")
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    33
        set(HEDGEWARS_DATADIR "../Resources/")
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    34
        set(HEDGEWARS_FULL_DATADIR "/Applications/${CMAKE_INSTALL_PREFIX}/${HEDGEWARS_DATADIR}")
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    35
    elseif(WIN32)
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    36
        set(target_library_install_dir "./")
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    37
        set(HEDGEWARS_DATADIR "./")
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    38
        set(HEDGEWARS_FULL_DATADIR "${CMAKE_INSTALL_PREFIX}/")
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    39
        link_directories("${EXECUTABLE_OUTPUT_PATH}" "${CMAKE_SOURCE_DIR}/misc/winutils/bin")
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    40
    endif()
4fc0e95e7b64 move paths setup in separate cmake module
koda
parents:
diff changeset
    41
endif()
9198
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    42
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    43
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    44
#RPATH SETTINGS
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    45
#necessary for dynamic libraries on UNIX, ignored elsewhere
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    46
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    47
#use, i.e. don't skip the full RPATH for the build tree
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    48
set(CMAKE_SKIP_BUILD_RPATH FALSE)
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    49
set(CMAKE_SKIP_INSTALL_RPATH FALSE)
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    50
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    51
#it's safe to use our RPATH because it is relative
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    52
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
48b92ff6238f setup RPATH, bump cmake
koda
parents: 9190
diff changeset
    53
9339
14f5f3a1e2f7 some work on cmake_pascal files to better support flags we use, make engine compile as library again
koda
parents: 9313
diff changeset
    54
#add the automatically determined parts of the RPATH
14f5f3a1e2f7 some work on cmake_pascal files to better support flags we use, make engine compile as library again
koda
parents: 9313
diff changeset
    55
#which point to directories outside the build tree to the install RPATH
14f5f3a1e2f7 some work on cmake_pascal files to better support flags we use, make engine compile as library again
koda
parents: 9313
diff changeset
    56
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH FALSE)
14f5f3a1e2f7 some work on cmake_pascal files to better support flags we use, make engine compile as library again
koda
parents: 9313
diff changeset
    57
9856
891eb7fcc26c correctly handle @rpath
koda
parents: 9339
diff changeset
    58
if(APPLE)
9860
d419ff107e15 include paths before platform, move config code around
koda
parents: 9856
diff changeset
    59
    #@rpath mangling
9856
891eb7fcc26c correctly handle @rpath
koda
parents: 9339
diff changeset
    60
    set(CMAKE_INSTALL_RPATH "@executable_path/../Frameworks")
9860
d419ff107e15 include paths before platform, move config code around
koda
parents: 9856
diff changeset
    61
    #install_name_tool for libraries
d419ff107e15 include paths before platform, move config code around
koda
parents: 9856
diff changeset
    62
    set(CMAKE_INSTALL_NAME_DIR "@executable_path/../Frameworks")
10911
5e3f42553ebc Do not set rpath when binaries are installed in the standard search path
vittorio.giovara@gmail.com
parents: 10069
diff changeset
    63
else(APPLE AND NOT (${CMAKE_INSTALL_PREFIX} MATCHES "/usr"))
9856
891eb7fcc26c correctly handle @rpath
koda
parents: 9339
diff changeset
    64
    #paths where to find libraries (final slash not optional):
891eb7fcc26c correctly handle @rpath
koda
parents: 9339
diff changeset
    65
    # - the first is relative to the executable
891eb7fcc26c correctly handle @rpath
koda
parents: 9339
diff changeset
    66
    # - the second is the same directory of the executable (so it runs in bin/)
891eb7fcc26c correctly handle @rpath
koda
parents: 9339
diff changeset
    67
    # - the third one is the full path of the system dir
891eb7fcc26c correctly handle @rpath
koda
parents: 9339
diff changeset
    68
    #source http://www.cmake.org/pipermail/cmake/2008-January/019290.html
10911
5e3f42553ebc Do not set rpath when binaries are installed in the standard search path
vittorio.giovara@gmail.com
parents: 10069
diff changeset
    69
    #skip this if the install prefix is the standard one
9856
891eb7fcc26c correctly handle @rpath
koda
parents: 9339
diff changeset
    70
    set(CMAKE_INSTALL_RPATH "$ORIGIN/../${target_library_install_dir}/:$ORIGIN/:${CMAKE_INSTALL_PREFIX}/${target_library_install_dir}/")
891eb7fcc26c correctly handle @rpath
koda
parents: 9339
diff changeset
    71
endif(APPLE)