aboutsummaryrefslogtreecommitdiff
path: root/ports/activemq-cpp/portfile.cmake
blob: 6afa95b7914c74cfb48e9092221aefc4badc017c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
vcpkg_fail_port_install( ON_TARGET "uwp" "linux" "osx")

set(VERSION 3.9.5)

vcpkg_download_distfile(ARCHIVE
    URLS "https://www.apache.org/dist/activemq/activemq-cpp/${VERSION}/activemq-cpp-library-${VERSION}-src.tar.bz2"
    FILENAME "activemq-cpp-library-${VERSION}-src.tar.bz2"
    SHA512 83692d3dfd5ecf557fc88d204a03bf169ce6180bcff27be41b09409b8f7793368ffbeed42d98ef6374c6b6b477d9beb8a4a9ac584df9e56725ec59ceceaa6ae2
)

vcpkg_extract_source_archive_ex(
    OUT_SOURCE_PATH SOURCE_PATH
    ARCHIVE ${ARCHIVE}
    PATCHES
        FunctionLevelLinkingOn.diff
        fix-crt-linkage.patch
)

set(ACTIVEMQCPP_MSVC_PROJ ${SOURCE_PATH}/vs2010-build/activemq-cpp.vcxproj)

string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" ACTIVEMQCPP_SHARED_LIB)

if (ACTIVEMQCPP_SHARED_LIB)
    set(RELEASE_CONF "ReleaseDLL")
    set(DEBUG_CONF   "DebugDLL")
    
    set(ACTIVEMQCPP_LIB_PREFFIX )
    set(ACTIVEMQCPP_LIB_SUFFIX d)
    vcpkg_replace_string(${ACTIVEMQCPP_MSVC_PROJ} ";apr-1.lib" ";libapr-1.lib")
else()
    set(RELEASE_CONF "Release")
    set(DEBUG_CONF   "Debug")
    
    set(ACTIVEMQCPP_LIB_PREFFIX lib)
    set(ACTIVEMQCPP_LIB_SUFFIX )
    vcpkg_replace_string(${ACTIVEMQCPP_MSVC_PROJ} ";libapr-1.lib" ";apr-1.lib")
endif()

if (VCPKG_TARGET_ARCHITECTURE MATCHES "x86")
    set(BUILD_ARCH "Win32")
    set(OUTPUT_DIR "Win32")
elseif (VCPKG_TARGET_ARCHITECTURE MATCHES "x64")
    set(BUILD_ARCH "x64")
    set(OUTPUT_DIR "Win64")
else()
    message(FATAL_ERROR "Unsupported architecture: ${VCPKG_TARGET_ARCHITECTURE}")
endif()

vcpkg_build_msbuild(
     PROJECT_PATH ${ACTIVEMQCPP_MSVC_PROJ}
     RELEASE_CONFIGURATION ${RELEASE_CONF}
     DEBUG_CONFIGURATION   ${DEBUG_CONF}
     PLATFORM ${BUILD_ARCH}
     USE_VCPKG_INTEGRATION
)

vcpkg_copy_pdbs()

if (NOT VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
    file(COPY
        ${SOURCE_PATH}/vs2010-build/${BUILD_ARCH}/${RELEASE_CONF}/${ACTIVEMQCPP_LIB_PREFFIX}activemq-cpp.lib
        DESTINATION ${CURRENT_PACKAGES_DIR}/lib
    )
    
    if (ACTIVEMQCPP_SHARED_LIB)
        file(COPY
            ${SOURCE_PATH}/vs2010-build/${BUILD_ARCH}/${RELEASE_CONF}/activemq-cpp.dll
            DESTINATION ${CURRENT_PACKAGES_DIR}/bin
        )
        file(COPY
            ${SOURCE_PATH}/vs2010-build/${BUILD_ARCH}/${RELEASE_CONF}/activemq-cpp.pdb
            DESTINATION ${CURRENT_PACKAGES_DIR}/bin
        )
    endif()
endif()

if (NOT VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
    file(COPY
        ${SOURCE_PATH}/vs2010-build/${BUILD_ARCH}/${DEBUG_CONF}/${ACTIVEMQCPP_LIB_PREFFIX}activemq-cpp${ACTIVEMQCPP_LIB_SUFFIX}.lib
        DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib
    )
    
    if (ACTIVEMQCPP_SHARED_LIB)
        file(COPY
            ${SOURCE_PATH}/vs2010-build/${BUILD_ARCH}/${DEBUG_CONF}/activemq-cpp${ACTIVEMQCPP_LIB_SUFFIX}.dll
            DESTINATION ${CURRENT_PACKAGES_DIR}/debug/bin
        )
        file(COPY
            ${SOURCE_PATH}/vs2010-build/${BUILD_ARCH}/${DEBUG_CONF}/activemq-cpp${ACTIVEMQCPP_LIB_SUFFIX}.pdb
            DESTINATION ${CURRENT_PACKAGES_DIR}/debug/bin
        )
    endif()
endif()

file(COPY ${SOURCE_PATH}/src/main/activemq DESTINATION ${CURRENT_PACKAGES_DIR}/include FILES_MATCHING PATTERN *.h)
file(COPY ${SOURCE_PATH}/src/main/cms      DESTINATION ${CURRENT_PACKAGES_DIR}/include FILES_MATCHING PATTERN *.h)
file(COPY ${SOURCE_PATH}/src/main/decaf    DESTINATION ${CURRENT_PACKAGES_DIR}/include FILES_MATCHING PATTERN *.h)

file(INSTALL ${SOURCE_PATH}/LICENSE.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)