/ CMakeLists.txt
CMakeLists.txt
1 project(Heimdal) 2 3 remove_sdk_framework(CommonAuth 4 PRIVATE 5 ) 6 remove_sdk_framework(Heimdal 7 PRIVATE 8 ) 9 10 add_compile_options( 11 -nostdinc 12 -includeconfig.h 13 -Wno-error=int-conversion 14 ) 15 16 add_compile_definitions( 17 __GSSAPI_APPLE_API_PRIVATE 18 BUILD_KRB5_LIB=1 19 CORECRYPTO_DONOT_USE_TRANSPARENT_UNION=1 20 ) 21 22 add_link_options( 23 -Wl,-dead_strip 24 ) 25 26 include_directories(BEFORE 27 ${CMAKE_CURRENT_SOURCE_DIR}/include 28 ${CMAKE_CURRENT_SOURCE_DIR}/base 29 ${CMAKE_CURRENT_SOURCE_DIR}/lib/roken 30 ${CMAKE_CURRENT_SOURCE_DIR}/lib/asn1 31 ${CMAKE_CURRENT_SOURCE_DIR}/lib/com_err 32 ${CMAKE_CURRENT_SOURCE_DIR}/lib/heimcred 33 ${CMAKE_CURRENT_SOURCE_DIR}/lib/krb5 34 ${CMAKE_CURRENT_SOURCE_DIR}/lib/gssapi/gssapi 35 ${CMAKE_CURRENT_SOURCE_DIR}/lib 36 ${CMAKE_CURRENT_SOURCE_DIR}/lib/gssapi/cf 37 ${CMAKE_CURRENT_SOURCE_DIR}/lib/hx509 38 ${CMAKE_CURRENT_SOURCE_DIR}/lib/ipc 39 ${CMAKE_CURRENT_SOURCE_DIR}/lib/hcrypto 40 ${CMAKE_CURRENT_SOURCE_DIR}/lib/wind 41 ${CMAKE_CURRENT_SOURCE_DIR}/lib/hx509/ref 42 ${CMAKE_CURRENT_BINARY_DIR}/lib/ipc 43 ${CMAKE_CURRENT_SOURCE_DIR}/packages/mac/SnowLeopard10A 44 ${CMAKE_CURRENT_SOURCE_DIR}/gen/asn1-generate-template/asn1-generate-template 45 ${CMAKE_CURRENT_SOURCE_DIR}/gen/error-tables 46 ${CMAKE_CURRENT_SOURCE_DIR}/gen/build-export-data 47 ) 48 49 mig(lib/ipc/heim_ipc.defs) 50 mig(lib/ipc/heim_ipc_async.defs) 51 52 set(DYLIB_COMPAT_VERSION "1.0.0") 53 set(DYLIB_CURRENT_VERSION "1.0.0") 54 55 set(DYLIB_INSTALL_NAME "/usr/lib/libheimdal-asn1.dylib") 56 add_darling_library(heimdal-asn1 SHARED 57 lib/asn1/der_cmp.c 58 lib/asn1/der_copy.c 59 lib/asn1/der_format.c 60 lib/asn1/der_free.c 61 lib/asn1/der_get.c 62 lib/asn1/der_length.c 63 lib/asn1/der_put.c 64 lib/asn1/der.c 65 lib/asn1/extra.c 66 lib/asn1/fuzzer.c 67 lib/asn1/template.c 68 lib/asn1/timegm.c 69 lib/roken/hex.c 70 lib/roken/strpool.c 71 ) 72 make_fat(heimdal-asn1) 73 target_link_libraries(heimdal-asn1 system) 74 75 target_link_options(heimdal-asn1 PRIVATE 76 -Wl,-exported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/gen/build-export-data/heimdal-asn1.exp 77 ) 78 79 add_darling_static_library(heim_heimcred FAT SOURCES 80 lib/heimcred/client.c 81 lib/heimcred/common.c 82 ) 83 84 add_darling_static_library(heim_krb5 FAT SOURCES 85 lib/krb5/add_et_list.c 86 lib/krb5/addr_families.c 87 lib/krb5/aname_to_localname.c 88 lib/krb5/appdefault.c 89 lib/krb5/asn1_glue.c 90 lib/krb5/auth_context.c 91 lib/krb5/build_ap_req.c 92 lib/krb5/build_auth.c 93 lib/krb5/cache.c 94 lib/krb5/changepw.c 95 lib/krb5/codec.c 96 lib/krb5/config_file.c 97 lib/krb5/constants.c 98 lib/krb5/context.c 99 lib/krb5/convert_creds.c 100 lib/krb5/copy_host_realm.c 101 lib/krb5/crc.c 102 lib/krb5/creds.c 103 lib/krb5/crypto-aes.c 104 lib/krb5/crypto-algs.c 105 lib/krb5/crypto-arcfour.c 106 lib/krb5/crypto-des-common.c 107 lib/krb5/crypto-des.c 108 lib/krb5/crypto-des3.c 109 lib/krb5/crypto-evp.c 110 lib/krb5/crypto-null.c 111 lib/krb5/crypto-pk.c 112 lib/krb5/crypto-rand.c 113 lib/krb5/crypto-stubs.c 114 lib/krb5/crypto.c 115 lib/krb5/data.c 116 lib/krb5/deprecated.c 117 lib/krb5/derived-key-test.c 118 lib/krb5/doxygen.c 119 lib/krb5/eai_to_heim_errno.c 120 lib/krb5/error_string.c 121 lib/krb5/expand_hostname.c 122 lib/krb5/expand_path.c 123 lib/krb5/fast.c 124 lib/krb5/fcache.c 125 lib/krb5/free_host_realm.c 126 lib/krb5/free.c 127 lib/krb5/generate_seq_number.c 128 lib/krb5/generate_subkey.c 129 lib/krb5/get_addrs.c 130 lib/krb5/get_cred.c 131 lib/krb5/get_default_principal.c 132 lib/krb5/get_default_realm.c 133 lib/krb5/get_for_creds.c 134 lib/krb5/get_host_realm.c 135 lib/krb5/get_in_tkt.c 136 lib/krb5/get_port.c 137 lib/krb5/init_creds_pw.c 138 lib/krb5/init_creds.c 139 lib/krb5/kcm.c 140 lib/krb5/keyblock.c 141 lib/krb5/keytab_any.c 142 lib/krb5/keytab_file.c 143 lib/krb5/keytab_keyfile.c 144 lib/krb5/keytab_memory.c 145 lib/krb5/keytab.c 146 lib/krb5/kkdcp.m 147 lib/krb5/krbhst-test.c 148 lib/krb5/krbhst.c 149 lib/krb5/kuserok.c 150 lib/krb5/log.c 151 lib/krb5/mcache.c 152 lib/krb5/misc.c 153 lib/krb5/mit_glue.c 154 lib/krb5/mk_error.c 155 lib/krb5/mk_priv.c 156 lib/krb5/mk_rep.c 157 lib/krb5/mk_req_ext.c 158 lib/krb5/mk_req.c 159 lib/krb5/mk_safe.c 160 lib/krb5/n-fold.c 161 lib/krb5/net_read.c 162 lib/krb5/net_write.c 163 lib/krb5/pac.c 164 lib/krb5/padata.c 165 lib/krb5/pcache.c 166 lib/krb5/pfs.c 167 lib/krb5/pkinit.c 168 lib/krb5/plugin.c 169 lib/krb5/principal.c 170 lib/krb5/prompter_posix.c 171 lib/krb5/rd_cred.c 172 lib/krb5/rd_error.c 173 lib/krb5/rd_priv.c 174 lib/krb5/rd_rep.c 175 lib/krb5/rd_req.c 176 lib/krb5/rd_safe.c 177 lib/krb5/read_message.c 178 lib/krb5/recvauth.c 179 lib/krb5/replay.c 180 lib/krb5/salt-aes.c 181 lib/krb5/salt-arcfour.c 182 lib/krb5/salt-des.c 183 lib/krb5/salt-des3.c 184 lib/krb5/salt.c 185 lib/krb5/send_to_kdc.c 186 lib/krb5/sendauth.c 187 lib/krb5/set_default_realm.c 188 lib/krb5/sock_principal.c 189 lib/krb5/stat-kerberos.m 190 lib/krb5/stat.m 191 lib/krb5/store_emem.c 192 lib/krb5/store_fd.c 193 lib/krb5/store_mem.c 194 lib/krb5/store-int.c 195 lib/krb5/store.c 196 lib/krb5/test_rfc3961.c 197 lib/krb5/ticket.c 198 lib/krb5/time.c 199 lib/krb5/tkt.c 200 lib/krb5/transited.c 201 lib/krb5/verify_init.c 202 lib/krb5/verify_user.c 203 lib/krb5/version.c 204 lib/krb5/warn.c 205 lib/krb5/write_message.c 206 lib/krb5/xcache.c 207 ) 208 209 add_darling_static_library(heim_wind FAT SOURCES 210 lib/wind/icu.c 211 lib/wind/utf8.c 212 ) 213 214 add_darling_static_library(heim_asn1-defs FAT SOURCES 215 gen/asn1-generate-template/asn1-generate-template/asn1_gssapi_asn1.c 216 gen/asn1-generate-template/asn1-generate-template/asn1_krb5_asn1.c 217 gen/asn1-generate-template/asn1-generate-template/asn1_pkcs12_asn1.c 218 gen/asn1-generate-template/asn1-generate-template/asn1_pkcs8_asn1.c 219 gen/asn1-generate-template/asn1-generate-template/asn1_pkcs9_asn1.c 220 gen/asn1-generate-template/asn1-generate-template/asn1_pkinit_asn1.c 221 gen/asn1-generate-template/asn1-generate-template/asn1_pku2u_asn1.c 222 gen/asn1-generate-template/asn1-generate-template/asn1_spnego_asn1.c 223 ) 224 225 add_darling_static_library(heim_com_err FAT SOURCES 226 lib/com_err/com_err.c 227 lib/com_err/error.c 228 ) 229 230 add_darling_static_library(heim_roken FAT SOURCES 231 lib/roken/base64.c 232 lib/roken/bswap.c 233 lib/roken/cloexec.c 234 lib/roken/closefrom.c 235 lib/roken/concat.c 236 lib/roken/ct.c 237 lib/roken/dumpdata.c 238 lib/roken/ecalloc.c 239 lib/roken/emalloc.c 240 lib/roken/environment.c 241 lib/roken/eread.c 242 lib/roken/erealloc.c 243 lib/roken/esetenv.c 244 lib/roken/estrdup.c 245 lib/roken/ewrite.c 246 lib/roken/get_default_username.c 247 lib/roken/getnameinfo_verified.c 248 lib/roken/hex.c 249 lib/roken/issuid.c 250 lib/roken/net_read.c 251 lib/roken/net_write.c 252 lib/roken/parse_bytes.c 253 lib/roken/parse_time.c 254 lib/roken/parse_units.c 255 lib/roken/rand.c 256 lib/roken/resolve.c 257 lib/roken/rkcf.c 258 lib/roken/roken_gethostby.c 259 lib/roken/rtbl.c 260 lib/roken/socket.c 261 lib/roken/strlwr.c 262 lib/roken/strpool.c 263 lib/roken/strsep_copy.c 264 lib/roken/strupr.c 265 lib/roken/xfree.c 266 ) 267 268 add_darling_static_library(heim_roken-application FAT SOURCES 269 lib/roken/closefrom.c 270 lib/roken/ct.c 271 lib/roken/ecalloc.c 272 lib/roken/emalloc.c 273 lib/roken/erealloc.c 274 lib/roken/get_default_username.c 275 lib/roken/get_window_size.c 276 lib/roken/getarg.c 277 lib/roken/k_getpwnam.c 278 lib/roken/k_getpwuid.c 279 lib/roken/mini_inetd.c 280 lib/roken/rand.c 281 lib/roken/simple_exec.c 282 lib/roken/strcollect.c 283 lib/roken/timeval.c 284 lib/roken/tm2time.c 285 lib/roken/write_pid.c 286 lib/roken/xfree.c 287 ) 288 289 add_darling_static_library(heim_vers FAT SOURCES 290 lib/vers/print_version.c 291 ) 292 293 add_darling_static_library(heim_error-tables FAT SOURCES 294 gen/error-tables/error-tables/asn1_err.c 295 gen/error-tables/error-tables/gkrb5_err.c 296 gen/error-tables/error-tables/hc_err.c 297 gen/error-tables/error-tables/hdb_err.c 298 gen/error-tables/error-tables/heim_err.c 299 gen/error-tables/error-tables/hx509_err.c 300 gen/error-tables/error-tables/k524_err.c 301 gen/error-tables/error-tables/kadm5_err.c 302 gen/error-tables/error-tables/krb_err.c 303 gen/error-tables/error-tables/krb5_err.c 304 gen/error-tables/error-tables/wind_err.c 305 ) 306 307 add_darling_static_library(heim_hx509 FAT SOURCES 308 lib/hx509/ca.c 309 lib/hx509/cert.c 310 lib/hx509/cms.c 311 lib/hx509/collector.c 312 lib/hx509/crypto.c 313 lib/hx509/doxygen.c 314 lib/hx509/env.c 315 lib/hx509/error.c 316 lib/hx509/file.c 317 lib/hx509/keyset.c 318 lib/hx509/ks_dir.c 319 lib/hx509/ks_file.c 320 lib/hx509/ks_keychain.c 321 lib/hx509/ks_mem.c 322 lib/hx509/ks_null.c 323 lib/hx509/ks_p11.c 324 lib/hx509/ks_p12.c 325 lib/hx509/lock.c 326 lib/hx509/name.c 327 lib/hx509/peer.c 328 lib/hx509/print.c 329 lib/hx509/req.c 330 lib/hx509/revoke.c 331 ) 332 333 add_darling_static_library(heim_ipc-client FAT SOURCES 334 lib/ipc/client.c 335 lib/ipc/common.c 336 337 ${CMAKE_CURRENT_BINARY_DIR}/lib/ipc/heim_ipc_asyncServer.c 338 ${CMAKE_CURRENT_BINARY_DIR}/lib/ipc/heim_ipcUser.c 339 ) 340 341 add_darling_static_library(heim_hcrypto FAT SOURCES 342 lib/hcrypto/bn.c 343 lib/hcrypto/common.c 344 lib/hcrypto/dh-cdsa.c 345 lib/hcrypto/dh-sf.c 346 lib/hcrypto/dh.c 347 lib/hcrypto/ecdsa.c 348 lib/hcrypto/engine.c 349 lib/hcrypto/evp-cc.c 350 lib/hcrypto/evp.c 351 lib/hcrypto/pkcs5.c 352 lib/hcrypto/pkcs12.c 353 lib/hcrypto/rsa-cdsa.c 354 lib/hcrypto/rsa-sf.c 355 lib/hcrypto/rsa.c 356 lib/hcrypto/ui.c 357 lib/hcrypto/validate.c 358 ) 359 360 add_darling_static_library(heim_heimbase FAT SOURCES 361 base/abort.c 362 base/cf.c 363 base/json.c 364 base/log.c 365 366 # These files aren't included in the build in Xcode 367 # but they contain functions needed by code in the project, 368 # so we will build them anyway 369 #base/bool.c 370 #base/null.c 371 ) 372 373 add_darling_static_library(heim_asn1-hx509 FAT SOURCES 374 gen/asn1-generate-template/asn1-generate-template/asn1_cms_asn1.c 375 gen/asn1-generate-template/asn1-generate-template/asn1_ocsp_asn1.c 376 gen/asn1-generate-template/asn1-generate-template/asn1_pkcs10_asn1.c 377 gen/asn1-generate-template/asn1-generate-template/asn1_rfc2459_asn1.c 378 ) 379 380 add_darling_static_library(heim_asn1-digest FAT SOURCES 381 gen/asn1-generate-template/asn1-generate-template/asn1_digest_asn1.c 382 ) 383 384 set(FRAMEWORK_HEIMDAL_VERSION "A") 385 386 generate_sdk_framework(Heimdal 387 VERSION ${FRAMEWORK_HEIMDAL_VERSION} 388 HEADER "darling/include/Heimdal" 389 PRIVATE 390 ) 391 392 # Same version as above 393 add_framework(Heimdal 394 FAT 395 CURRENT_VERSION 396 PRIVATE 397 VERSION ${FRAMEWORK_HEIMDAL_VERSION} 398 399 SOURCES 400 base/test_base.c 401 gen/build-export-data/sym_hcrypto.c 402 gen/build-export-data/sym_hx509.c 403 gen/build-export-data/sym_krb5.c 404 gen/build-export-data/sym_pkinit.c 405 gen/build-export-data/sym_roken.c 406 gen/build-export-data/sym_asn1.c 407 gen/build-export-data/sym_base.c 408 409 DEPENDENCIES 410 system 411 sqlite3 412 resolv-darwin 413 Security 414 Foundation 415 CoreFoundation 416 CFNetwork 417 icucore 418 heimdal-asn1 419 libnetwork 420 bsm.0 421 422 # Static libs 423 heim_heimcred 424 heim_krb5 425 heim_wind 426 heim_asn1-defs 427 heim_com_err 428 heim_roken 429 heim_vers 430 heim_error-tables 431 heim_hx509 432 heim_ipc-client 433 heim_hcrypto 434 heim_heimbase 435 heim_asn1-hx509 436 heim_asn1-digest 437 heim_roken-application 438 ) 439 make_fat(Heimdal) 440 441 target_link_options(Heimdal PRIVATE 442 -Wl,-exported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/gen/build-export-data/heimdal.exp 443 ) 444 445 install(TARGETS heimdal-asn1 DESTINATION libexec/darling/usr/lib) 446 447 set(FRAMEWORK_COMMONAUTH_VERSION "A") 448 449 generate_sdk_framework(CommonAuth 450 VERSION ${FRAMEWORK_COMMONAUTH_VERSION} 451 HEADER "darling/include/CommonAuth" 452 PRIVATE 453 ) 454 455 add_framework(CommonAuth 456 FAT 457 CURRENT_VERSION 458 PRIVATE 459 VERSION ${FRAMEWORK_COMMONAUTH_VERSION} 460 461 SOURCES 462 gen/error-tables/error-tables/ntlm_err.c 463 lib/krb5/data.c 464 lib/krb5/error_string.c 465 lib/krb5/store_emem.c 466 lib/krb5/store_mem.c 467 lib/krb5/store-int.c 468 lib/krb5/store.c 469 lib/ntlm/apop.c 470 lib/ntlm/digest.c 471 lib/ntlm/ntlm.c 472 lib/ntlm/scram.c 473 474 DEPENDENCIES 475 heimdal-asn1 476 icucore 477 system 478 479 # static libs 480 heim_com_err 481 heim_hcrypto 482 heim_asn1-defs 483 heim_roken 484 heim_wind 485 heim_heimbase 486 heim_asn1-hx509 487 ) 488 489 target_link_options(CommonAuth PRIVATE 490 -Wl,-exported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/gen/build-export-data/commonauth.exp 491 ) 492 493 target_include_directories(CommonAuth PRIVATE 494 lib/ntlm 495 ) 496 497 # added as a subdirectory to avoid polluting the include list here 498 # (not sure if any headers would conflict, but just in case) 499 add_subdirectory(lib/gssapi)