cmake_modules/paths.cmake
author raptor <buckyballreaction@gmail.com>
Tue, 13 Aug 2019 13:20:28 -0600
branch0.9.25
changeset 15332 9a545985360b
parent 14280 3342358bc2c3
child 15481 58ce582ae87d
permissions -rw-r--r--
Remove usage of macdeployqt in favor of CMake BundleUtilities. BundleUtilities properly finds all dependencies and adds them to the .app automatically. It also fixes rpath and install_name issues for any of the binaries or dependencies
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
15332
9a545985360b Remove usage of macdeployqt in favor of CMake BundleUtilities. BundleUtilities properly finds all dependencies and adds them to the .app automatically. It also fixes rpath and install_name issues for any of the binaries or dependencies
raptor <buckyballreaction@gmail.com>
parents: 14280
diff changeset
    62
    set(CMAKE_BUILD_WITH_INSTALL_NAME_DIR TRUE)
9860
d419ff107e15 include paths before platform, move config code around
koda
parents: 9856
diff changeset
    63
    set(CMAKE_INSTALL_NAME_DIR "@executable_path/../Frameworks")
14280
3342358bc2c3 Backed out changeset 084af6d2685f
Wuzzy <Wuzzy2@mail.ru>
parents: 14253
diff changeset
    64
else(APPLE AND NOT (${CMAKE_INSTALL_PREFIX} MATCHES "/usr"))
9856
891eb7fcc26c correctly handle @rpath
koda
parents: 9339
diff changeset
    65
    #paths where to find libraries (final slash not optional):
891eb7fcc26c correctly handle @rpath
koda
parents: 9339
diff changeset
    66
    # - the first is relative to the executable
891eb7fcc26c correctly handle @rpath
koda
parents: 9339
diff changeset
    67
    # - the second is the same directory of the executable (so it runs in bin/)
891eb7fcc26c correctly handle @rpath
koda
parents: 9339
diff changeset
    68
    # - the third one is the full path of the system dir
891eb7fcc26c correctly handle @rpath
koda
parents: 9339
diff changeset
    69
    #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
    70
    #skip this if the install prefix is the standard one
9856
891eb7fcc26c correctly handle @rpath
koda
parents: 9339
diff changeset
    71
    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
    72
endif(APPLE)