aboutsummaryrefslogtreecommitdiff
path: root/scripts/ports.cmake
diff options
context:
space:
mode:
authorJan HrubĂ˝ <jhruby.web@gmail.com>2017-03-13 08:56:05 +0100
committerGitHub <noreply@github.com>2017-03-13 08:56:05 +0100
commit665f4118f603c5858217ed7a2f2f824b18ff4fc5 (patch)
treef0167041edf71e90f2331b5025f603392a8de67a /scripts/ports.cmake
parent1bec0fcb73073b5b1719f454c368a63f1bff625e (diff)
parent1c9873a0daf625f67474aaf3e163c592c27ecb65 (diff)
downloadvcpkg-665f4118f603c5858217ed7a2f2f824b18ff4fc5.tar.gz
vcpkg-665f4118f603c5858217ed7a2f2f824b18ff4fc5.zip
Merge pull request #1 from Microsoft/master
pull
Diffstat (limited to 'scripts/ports.cmake')
-rw-r--r--scripts/ports.cmake93
1 files changed, 57 insertions, 36 deletions
diff --git a/scripts/ports.cmake b/scripts/ports.cmake
index eeb7b254c..e83b83d88 100644
--- a/scripts/ports.cmake
+++ b/scripts/ports.cmake
@@ -1,5 +1,11 @@
cmake_minimum_required(VERSION 3.5)
+macro(debug_message)
+ if(DEFINED PORT_DEBUG AND PORT_DEBUG)
+ message(STATUS "[DEBUG] ${ARGN}")
+ endif()
+endmacro()
+
#Detect .vcpkg-root to figure VCPKG_ROOT_DIR
SET(VCPKG_ROOT_DIR_CANDIDATE ${CMAKE_CURRENT_LIST_DIR})
while(IS_DIRECTORY ${VCPKG_ROOT_DIR_CANDIDATE} AND NOT EXISTS "${VCPKG_ROOT_DIR_CANDIDATE}/.vcpkg-root")
@@ -13,14 +19,6 @@ endwhile()
set(VCPKG_ROOT_DIR ${VCPKG_ROOT_DIR_CANDIDATE})
-string(REGEX REPLACE "([^-]*)-([^-]*)" "\\1" TRIPLET_SYSTEM_ARCH ${TARGET_TRIPLET})
-string(REGEX REPLACE "([^-]*)-([^-]*)" "\\2" TRIPLET_SYSTEM_NAME ${TARGET_TRIPLET})
-
-if(NOT EXISTS ${VCPKG_ROOT_DIR}/triplets/${TARGET_TRIPLET}.cmake)
- message(FATAL_ERROR "Unsupported target triplet. Toolchain file does not exist: ${VCPKG_ROOT_DIR}/triplets/${TARGET_TRIPLET}.cmake")
-endif()
-
-set(CMAKE_TOOLCHAIN_FILE ${VCPKG_ROOT_DIR}/triplets/${TARGET_TRIPLET}.cmake)
list(APPEND CMAKE_MODULE_PATH ${VCPKG_ROOT_DIR}/scripts/cmake)
set(CURRENT_INSTALLED_DIR ${VCPKG_ROOT_DIR}/installed/${TARGET_TRIPLET} CACHE PATH "Location to install final packages")
set(DOWNLOADS ${VCPKG_ROOT_DIR}/downloads CACHE PATH "Location to download sources and tools")
@@ -32,37 +30,15 @@ if(PORT)
set(CURRENT_PACKAGES_DIR ${PACKAGES_DIR}/${PORT}_${TARGET_TRIPLET})
endif()
-macro(debug_message)
- if(DEFINED PORT_DEBUG AND PORT_DEBUG)
- message(STATUS "[DEBUG] ${ARGN}")
- endif()
-endmacro()
-if(CMD MATCHES "^SCAFFOLD$")
- if(EXISTS ports/${PORT}/portfile.cmake)
- message(FATAL_ERROR "Portfile already exists: '${VCPKG_ROOT_DIR}/ports/${PORT}/portfile.cmake'")
- endif()
- if(NOT FILENAME)
- get_filename_component(FILENAME "${URL}" NAME)
- endif()
- string(REGEX REPLACE "(\\.(zip|gz|tar|tgz|bz2))+\$" "" ROOT_NAME ${FILENAME})
- if(EXISTS ${DOWNLOADS}/${FILENAME})
- message(STATUS "Using pre-downloaded: ${DOWNLOADS}/${FILENAME}")
- message(STATUS "If this is not desired, delete the file and ${VCPKG_ROOT_DIR}/ports/${PORT}/portfile.cmake")
- else()
- include(vcpkg_download_distfile)
- file(DOWNLOAD ${URL} ${DOWNLOADS}/${FILENAME} STATUS error_code)
- if(NOT error_code MATCHES "0;")
- message(FATAL_ERROR "Error downloading file: ${error_code}")
- endif()
- endif()
- file(SHA512 ${DOWNLOADS}/${FILENAME} SHA512)
+if(CMD MATCHES "^BUILD$")
+ string(REGEX REPLACE "([^-]*)-([^-]*)" "\\1" TRIPLET_SYSTEM_ARCH ${TARGET_TRIPLET})
- file(MAKE_DIRECTORY ports/${PORT})
- configure_file(scripts/templates/portfile.in.cmake ports/${PORT}/portfile.cmake @ONLY)
+ set(CMAKE_TRIPLET_FILE ${VCPKG_ROOT_DIR}/triplets/${TARGET_TRIPLET}.cmake)
+ if(NOT EXISTS ${CMAKE_TRIPLET_FILE})
+ message(FATAL_ERROR "Unsupported target triplet. Triplet file does not exist: ${CMAKE_TRIPLET_FILE}")
+ endif()
- message(STATUS "Generated portfile: ${VCPKG_ROOT_DIR}/ports/${PORT}/portfile.cmake")
-elseif(CMD MATCHES "^BUILD$")
if(NOT DEFINED CURRENT_PORT_DIR)
message(FATAL_ERROR "CURRENT_PORT_DIR was not defined")
endif()
@@ -93,5 +69,50 @@ elseif(CMD MATCHES "^BUILD$")
endif()
file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR} ${CURRENT_PACKAGES_DIR})
+ include(${CMAKE_TRIPLET_FILE})
include(${CURRENT_PORT_DIR}/portfile.cmake)
+
+ set(BUILD_INFO_FILE_PATH ${CURRENT_PACKAGES_DIR}/BUILD_INFO)
+ file(WRITE ${BUILD_INFO_FILE_PATH} "CRTLinkage: ${VCPKG_CRT_LINKAGE}\n")
+ file(APPEND ${BUILD_INFO_FILE_PATH} "LibraryLinkage: ${VCPKG_LIBRARY_LINKAGE}\n")
+
+ if (DEFINED VCPKG_POLICY_DLLS_WITHOUT_LIBS)
+ file(APPEND ${BUILD_INFO_FILE_PATH} "PolicyDLLsWithoutLIBs: ${VCPKG_POLICY_DLLS_WITHOUT_LIBS}\n")
+ endif()
+ if (DEFINED VCPKG_POLICY_EMPTY_PACKAGE)
+ file(APPEND ${BUILD_INFO_FILE_PATH} "PolicyEmptyPackage: ${VCPKG_POLICY_EMPTY_PACKAGE}\n")
+ endif()
+ if (DEFINED VCPKG_POLICY_ONLY_RELEASE_CRT)
+ file(APPEND ${BUILD_INFO_FILE_PATH} "PolicyOnlyReleaseCRT: ${VCPKG_POLICY_ONLY_RELEASE_CRT}\n")
+ endif()
+elseif(CMD MATCHES "^CREATE$")
+ file(TO_NATIVE_PATH ${VCPKG_ROOT_DIR} NATIVE_VCPKG_ROOT_DIR)
+ file(TO_NATIVE_PATH ${DOWNLOADS} NATIVE_DOWNLOADS)
+ if(EXISTS ports/${PORT}/portfile.cmake)
+ message(FATAL_ERROR "Portfile already exists: '${NATIVE_VCPKG_ROOT_DIR}\\ports\\${PORT}\\portfile.cmake'")
+ endif()
+ if(NOT FILENAME)
+ get_filename_component(FILENAME "${URL}" NAME)
+ endif()
+ string(REGEX REPLACE "(\\.(zip|gz|tar|tgz|bz2))+\$" "" ROOT_NAME ${FILENAME})
+ if(EXISTS ${DOWNLOADS}/${FILENAME})
+ message(STATUS "Using pre-downloaded: ${NATIVE_DOWNLOADS}\\${FILENAME}")
+ message(STATUS "If this is not desired, delete the file and ${NATIVE_VCPKG_ROOT_DIR}\\ports\\${PORT}")
+ else()
+ include(vcpkg_download_distfile)
+ file(DOWNLOAD ${URL} ${DOWNLOADS}/${FILENAME} STATUS error_code)
+ if(NOT error_code MATCHES "0;")
+ message(FATAL_ERROR "Error downloading file: ${error_code}")
+ endif()
+ endif()
+ file(SHA512 ${DOWNLOADS}/${FILENAME} SHA512)
+
+ file(MAKE_DIRECTORY ports/${PORT})
+ configure_file(scripts/templates/portfile.in.cmake ports/${PORT}/portfile.cmake @ONLY)
+ configure_file(scripts/templates/CONTROL.in ports/${PORT}/CONTROL @ONLY)
+
+ message(STATUS "Generated portfile: ${NATIVE_VCPKG_ROOT_DIR}\\ports\\${PORT}\\portfile.cmake")
+ message(STATUS "Generated CONTROL: ${NATIVE_VCPKG_ROOT_DIR}\\ports\\${PORT}\\CONTROL")
+ message(STATUS "To launch an editor for these new files, run")
+ message(STATUS " vcpkg edit ${PORT}")
endif()