123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- # process only once
- if(HAIKU)
- return()
- endif()
- set(HAIKU 1)
- set(UNIX 1)
- set(CMAKE_DL_LIBS "")
- set(CMAKE_SHARED_LIBRARY_C_FLAGS "-fPIC")
- set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-shared")
- set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-Wl,-rpath,")
- set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP ":")
- set(CMAKE_SHARED_LIBRARY_RPATH_ORIGIN_TOKEN "\$ORIGIN")
- set(CMAKE_SHARED_LIBRARY_RPATH_LINK_C_FLAG "-Wl,-rpath-link,")
- set(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-Wl,-soname,")
- set(CMAKE_EXE_EXPORTS_C_FLAG "-Wl,--export-dynamic")
- # Determine, if the C or C++ compiler is configured for a secondary
- # architecture. If so, that will change the search paths we set below. We check
- # whether the compiler's library search paths contain a
- # "/boot/system/develop/lib/<subdir>/", which we assume to be the secondary
- # architecture specific subdirectory and extract the name of the architecture
- # accordingly.
- # First of all, find a C or C++ compiler we can run. The "arg1" is necessary
- # here for compilers such as "distcc gcc-x86" or "ccache gcc-x86"
- # TODO See CMakeDetermineCompilerId.cmake for some more things we may want to do.
- if(CMAKE_C_COMPILER)
- set(__HAIKU_COMPILER ${CMAKE_C_COMPILER})
- string (STRIP "${CMAKE_C_COMPILER_ARG1}" __HAIKU_COMPILER_FLAGS)
- else()
- set(__HAIKU_COMPILER ${CMAKE_CXX_COMPILER})
- string (STRIP "${CMAKE_CXX_COMPILER_ARG1}" __HAIKU_COMPILER_FLAGS)
- endif()
- execute_process(
- COMMAND ${__HAIKU_COMPILER} ${__HAIKU_COMPILER_FLAGS} -print-search-dirs
- OUTPUT_VARIABLE _HAIKU_SEARCH_DIRS
- RESULT_VARIABLE _HAIKU_SEARCH_DIRS_FOUND
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- string(REGEX MATCH "libraries: =?([^\n]*:)?/boot/system/develop/lib/([^/]*)/?(:?\n+)" _dummy "${_HAIKU_SEARCH_DIRS}\n")
- set(CMAKE_HAIKU_SECONDARY_ARCH "${CMAKE_MATCH_2}")
- if(NOT CMAKE_HAIKU_SECONDARY_ARCH)
- set(CMAKE_HAIKU_SECONDARY_ARCH_SUBDIR "")
- unset(CMAKE_HAIKU_SECONDARY_ARCH)
- else()
- set(CMAKE_HAIKU_SECONDARY_ARCH_SUBDIR "/${CMAKE_HAIKU_SECONDARY_ARCH}")
- # Override CMAKE_*LIBRARY_ARCHITECTURE. This will cause FIND_LIBRARY to search
- # the libraries in the correct subdirectory first. It still isn't completely
- # correct, since the parent directories shouldn't be searched at all. The
- # primary architecture library might still be found, if there isn't one
- # installed for the secondary architecture or it is installed in a less
- # specific location.
- set(CMAKE_LIBRARY_ARCHITECTURE ${CMAKE_HAIKU_SECONDARY_ARCH})
- set(CMAKE_C_LIBRARY_ARCHITECTURE ${CMAKE_HAIKU_SECONDARY_ARCH})
- set(CMAKE_CXX_LIBRARY_ARCHITECTURE ${CMAKE_HAIKU_SECONDARY_ARCH})
- endif()
- list(APPEND CMAKE_SYSTEM_PREFIX_PATH
- /boot/system/non-packaged
- /boot/system
- )
- LIST(APPEND CMAKE_HAIKU_COMMON_INCLUDE_DIRECTORIES
- /boot/system/non-packaged/develop/headers${CMAKE_HAIKU_SECONDARY_ARCH_SUBDIR}
- /boot/system/develop/headers/os
- /boot/system/develop/headers/os/app
- /boot/system/develop/headers/os/device
- /boot/system/develop/headers/os/drivers
- /boot/system/develop/headers/os/game
- /boot/system/develop/headers/os/interface
- /boot/system/develop/headers/os/kernel
- /boot/system/develop/headers/os/locale
- /boot/system/develop/headers/os/mail
- /boot/system/develop/headers/os/media
- /boot/system/develop/headers/os/midi
- /boot/system/develop/headers/os/midi2
- /boot/system/develop/headers/os/net
- /boot/system/develop/headers/os/opengl
- /boot/system/develop/headers/os/storage
- /boot/system/develop/headers/os/support
- /boot/system/develop/headers/os/translation
- /boot/system/develop/headers/os/add-ons/graphics
- /boot/system/develop/headers/os/add-ons/input_server
- /boot/system/develop/headers/os/add-ons/screen_saver
- /boot/system/develop/headers/os/add-ons/tracker
- /boot/system/develop/headers/os/be_apps/Deskbar
- /boot/system/develop/headers/os/be_apps/NetPositive
- /boot/system/develop/headers/os/be_apps/Tracker
- /boot/system/develop/headers/3rdparty
- /boot/system/develop/headers/bsd
- /boot/system/develop/headers/glibc
- /boot/system/develop/headers/gnu
- /boot/system/develop/headers/posix
- /boot/system/develop/headers${CMAKE_HAIKU_SECONDARY_ARCH_SUBDIR}
- )
- IF (CMAKE_HAIKU_SECONDARY_ARCH)
- LIST(APPEND CMAKE_HAIKU_COMMON_INCLUDE_DIRECTORIES
- /boot/system/develop/headers
- )
- ENDIF (CMAKE_HAIKU_SECONDARY_ARCH)
- LIST(APPEND CMAKE_HAIKU_C_INCLUDE_DIRECTORIES
- ${CMAKE_HAIKU_COMMON_INCLUDE_DIRECTORIES}
- )
- LIST(APPEND CMAKE_HAIKU_CXX_INCLUDE_DIRECTORIES
- ${CMAKE_HAIKU_COMMON_INCLUDE_DIRECTORIES})
- LIST(APPEND CMAKE_SYSTEM_INCLUDE_PATH ${CMAKE_HAIKU_C_INCLUDE_DIRECTORIES})
- LIST(APPEND CMAKE_HAIKU_DEVELOP_LIB_DIRECTORIES
- /boot/system/non-packaged/develop/lib${CMAKE_HAIKU_SECONDARY_ARCH_SUBDIR}
- /boot/system/develop/lib${CMAKE_HAIKU_SECONDARY_ARCH_SUBDIR}
- )
- LIST(APPEND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES
- ${CMAKE_HAIKU_DEVELOP_LIB_DIRECTORIES}
- )
- LIST(APPEND CMAKE_SYSTEM_LIBRARY_PATH ${CMAKE_HAIKU_DEVELOP_LIB_DIRECTORIES})
- if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
- set(CMAKE_INSTALL_PREFIX "/boot/system" CACHE PATH
- "Install path prefix, prepended onto install directories." FORCE)
- endif()
|