aboutsummaryrefslogtreecommitdiff
path: root/ports/libidn2/CMakeLists.txt
blob: f8e0908f418f1a3b56a59b7a7a0c27e98321b1f1 (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
114
115
116
117
cmake_minimum_required(VERSION 3.8)

project(libidn2 C)

find_package(Iconv REQUIRED)

if(MSVC)
    add_definitions(-D_CRT_SECURE_NO_DEPRECATE)
    add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE)
endif()

add_definitions(-DIDN2_BUILDING)

if(NOT BUILD_SHARED_LIBS)
    add_definitions(-DIDN2_STATIC)
endif()

# List the source files
set(LIB_SRC lib/bidi.c
            lib/context.c
            lib/data.c
            lib/decode.c
            lib/error.c
            lib/free.c
            lib/idna.c
            lib/lookup.c
            lib/puny_decode.c
            lib/puny_encode.c
            lib/register.c
            lib/tables.c
            lib/tr46map.c
            lib/tr46map_data.c
            lib/version.c
)

# List the libunistring source files
set(UNISTR_SRC unistring/c-ctype.c
               unistring/c-strcasecmp.c
               unistring/c-strncasecmp.c
               unistring/malloca.c
               unistring/striconveh.c
               unistring/striconveha.c
               unistring/uniconv/u8-conv-from-enc.c
               unistring/uniconv/u8-strconv-from-enc.c
               unistring/uniconv/u8-strconv-from-locale.c
               unistring/uniconv/u8-strconv-to-enc.c
               unistring/uniconv/u8-strconv-to-locale.c
               unistring/unistr/u32-cpy.c
               unistring/unistr/u32-cpy-alloc.c
               unistring/unistr/u32-mbtouc-unsafe.c
               unistring/unistr/u32-strlen.c
               unistring/unistr/u32-to-u8.c
               unistring/unistr/u32-uctomb.c
               unistring/unistr/u8-check.c
               unistring/unistr/u8-mblen.c
               unistring/unistr/u8-mbtouc.c
               unistring/unistr/u8-mbtouc-aux.c
               unistring/unistr/u8-mbtouc-unsafe.c
               unistring/unistr/u8-mbtouc-unsafe-aux.c
               unistring/unistr/u8-mbtoucr.c
               unistring/unistr/u8-prev.c
               unistring/unistr/u8-strlen.c
               unistring/unistr/u8-to-u32.c
               unistring/unistr/u8-uctomb.c
               unistring/unistr/u8-uctomb-aux.c
               unistring/uninorm/canonical-decomposition.c
               unistring/uninorm/composition.c
               unistring/uninorm/decompose-internal.c
               unistring/uninorm/decomposition-table.c
               unistring/uninorm/nfc.c
               unistring/uninorm/nfd.c
               unistring/uninorm/u32-normalize.c
               unistring/unictype/bidi_of.c
               unistring/unictype/categ_M.c
               unistring/unictype/categ_none.c
               unistring/unictype/categ_of.c
               unistring/unictype/categ_test.c
               unistring/unictype/combiningclass.c
               unistring/unictype/joiningtype_of.c
               unistring/unictype/scripts.c
)

# List the gnulib source files
set(GL_SRC gl/rawmemchr.c
           gl/strchrnul.c
           gl/strverscmp.c
           gl/msvc-inval.c
           gl/msvc-nothrow.c
)

add_library(libidn2 ${LIB_SRC} ${UNISTR_SRC} ${GL_SRC})
set_target_properties(libidn2
    PROPERTIES
        OUTPUT_NAME idn2
        PREFIX lib
        IMPORT_PREFIX lib
)

target_include_directories(libidn2 PRIVATE . ./unistring ./gl)
target_link_libraries(libidn2 PRIVATE Iconv::Iconv)

install(TARGETS libidn2
        RUNTIME DESTINATION bin
        LIBRARY DESTINATION lib
        ARCHIVE DESTINATION lib)

install(FILES lib/idn2.h DESTINATION include)

# Install pc file
set(prefix      "\${pcfiledir}/../..")
set(exec_prefix "\${prefix}")
set(includedir  "\${prefix}/include")
set(libdir      "\${prefix}/lib")
set(LTLIBICONV  "")
set(LTLIBUNISTRING "")
configure_file("libidn2.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/libidn2.pc")
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libidn2.pc" DESTINATION "lib/pkgconfig")