aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/nspr/portfile.cmake
blob: e450ba0e8a08c26cce31af731a93792291327ce6 (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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
if(VCPKG_TARGET_IS_WINDOWS)
    vcpkg_check_linkage(ONLY_DYNAMIC_LIBRARY)
endif()

vcpkg_download_distfile(ARCHIVE
    URLS "https://releases.mozilla.org/pub/nspr/releases/v${VERSION}/src/nspr-${VERSION}.tar.gz"
    FILENAME "nspr-${VERSION}.tar.gz"
    SHA512 55d21e196508ad29a179639fc8006f44b04dc2c0b5a85895e727f0a4f0ea37aeeceb936e37ac6b271b882a18e9f06d96133a60f19cee6345f8424c1c66e270ee
)

vcpkg_extract_source_archive(
    SOURCE_PATH
    ARCHIVE "${ARCHIVE}"
    SOURCE_BASE "${VERSION}"
    PATCHES
        android.diff
        library-linkage.diff
        nsinstall-windows.diff
        parallel.diff
        unexport-ldflags.diff
)

set(OPTIONS "")
if(VCPKG_TARGET_IS_WINDOWS)
    # https://firefox-source-docs.mozilla.org/nspr/nspr_build_instructions.html#enable-win32-target-win95
    list(APPEND OPTIONS "--enable-win32-target=WIN95")
    if(VCPKG_CRT_LINKAGE STREQUAL "static")
        list(APPEND OPTIONS "--enable-static-rtl")
    else()
        list(APPEND OPTIONS "--disable-static-rtl")
    endif()
endif()

if(VCPKG_TARGET_ARCHITECTURE MATCHES "64")
    list(APPEND OPTIONS "--enable-64bit")
else()
    list(APPEND OPTIONS "--disable-64bit")
endif()

set(MAKE_OPTIONS "")
if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
    list(APPEND MAKE_OPTIONS BUILD_SHARED_LIBS=1)
endif()

if(VCPKG_CROSSCOMPILING)
    list(APPEND MAKE_OPTIONS "NOW=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/${PORT}/now${VCPKG_HOST_EXECUTABLE_SUFFIX}")
    if(NOT CMAKE_HOST_WIN32)
        list(APPEND MAKE_OPTIONS "NSINSTALL=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/${PORT}/nsinstall${VCPKG_HOST_EXECUTABLE_SUFFIX}")
    endif()
endif()
if(CMAKE_HOST_WIN32)
    vcpkg_acquire_msys(MSYS_NSINSTALL
        NO_DEFAULT_PACKAGES
        DIRECT_PACKAGES
            "https://mirror.msys2.org/msys/x86_64/nsinstall-4.36-1-x86_64.pkg.tar.zst"
            36ceaf44db4368ef6319397cef1d82a752c68f3f7a16ca00e753ee7ae825058f22c38ccd750b53ea773212dffae838700be0d09288353db33d2f5197df9091df
    )
    list(APPEND MAKE_OPTIONS "NSINSTALL=${MSYS_NSINSTALL}/usr/bin/nsinstall${VCPKG_HOST_EXECUTABLE_SUFFIX}")
endif()

vcpkg_make_configure(
    SOURCE_PATH "${SOURCE_PATH}/nspr"
    AUTORECONF
    OPTIONS
        ${OPTIONS}
    OPTIONS_DEBUG
        --enable-debug-rtl
    OPTIONS_RELEASE
        --disable-debug-rtl
)
vcpkg_make_install(OPTIONS ${MAKE_OPTIONS})
vcpkg_copy_pdbs()
vcpkg_fixup_pkgconfig()

set(install_dir_pattern "${CURRENT_INSTALLED_DIR}")
if(CMAKE_HOST_WIN32)
    string(REGEX REPLACE [[^([a-zA-Z]):/]] [[/\1/]] install_dir_pattern "${install_dir_pattern}")
endif()
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/tools/${PORT}/bin/nspr-config" "${install_dir_pattern}" "`dirname $0`/../../..")
file(GLOB BIN_RELEASE "${CURRENT_PACKAGES_DIR}/lib/*.dll" "${CURRENT_PACKAGES_DIR}/lib/*.pdb")
if(NOT BIN_RELEASE STREQUAL "")
    file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/bin")
    foreach(path ${BIN_RELEASE})
        get_filename_component(name "${path}" NAME)
        file(RENAME "${CURRENT_PACKAGES_DIR}/lib/${name}" "${CURRENT_PACKAGES_DIR}/bin/${name}")
    endforeach()
endif()
if(NOT VCPKG_BUILD_TYPE)
    vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/tools/${PORT}/debug/bin/nspr-config" "${install_dir_pattern}/debug" "`dirname $0`/../../../..")
    file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")
    file(GLOB BIN_DEBUG "${CURRENT_PACKAGES_DIR}/debug/lib/*.dll" "${CURRENT_PACKAGES_DIR}/debug/lib/*.pdb")
    if(NOT BIN_DEBUG STREQUAL "")
        file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/debug/bin")
        foreach(path IN LISTS BIN_DEBUG)
            get_filename_component(name "${path}" NAME)
            file(RENAME "${CURRENT_PACKAGES_DIR}/debug/lib/${name}" "${CURRENT_PACKAGES_DIR}/debug/bin/${name}")
        endforeach()
    endif()
endif()

if(NOT VCPKG_CROSSCOMPILING)
    set(tool_names now nsinstall)
    if(CMAKE_HOST_WIN32)
        list(REMOVE_ITEM tool_names nsinstall)
    endif()
    vcpkg_copy_tools(
        TOOL_NAMES ${tool_names}
        SEARCH_DIR "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/config"
        DESTINATION "${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}"
    )
endif()

vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/nspr/LICENSE")