project(Heimdal) remove_sdk_framework(CommonAuth PRIVATE ) remove_sdk_framework(Heimdal PRIVATE ) add_compile_options( -nostdinc -includeconfig.h -Wno-error=int-conversion ) add_compile_definitions( __GSSAPI_APPLE_API_PRIVATE BUILD_KRB5_LIB=1 CORECRYPTO_DONOT_USE_TRANSPARENT_UNION=1 ) add_link_options( -Wl,-dead_strip ) include_directories(BEFORE ${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR}/base ${CMAKE_CURRENT_SOURCE_DIR}/lib/roken ${CMAKE_CURRENT_SOURCE_DIR}/lib/asn1 ${CMAKE_CURRENT_SOURCE_DIR}/lib/com_err ${CMAKE_CURRENT_SOURCE_DIR}/lib/heimcred ${CMAKE_CURRENT_SOURCE_DIR}/lib/krb5 ${CMAKE_CURRENT_SOURCE_DIR}/lib/gssapi/gssapi ${CMAKE_CURRENT_SOURCE_DIR}/lib ${CMAKE_CURRENT_SOURCE_DIR}/lib/gssapi/cf ${CMAKE_CURRENT_SOURCE_DIR}/lib/hx509 ${CMAKE_CURRENT_SOURCE_DIR}/lib/ipc ${CMAKE_CURRENT_SOURCE_DIR}/lib/hcrypto ${CMAKE_CURRENT_SOURCE_DIR}/lib/wind ${CMAKE_CURRENT_SOURCE_DIR}/lib/hx509/ref ${CMAKE_CURRENT_BINARY_DIR}/lib/ipc ${CMAKE_CURRENT_SOURCE_DIR}/packages/mac/SnowLeopard10A ${CMAKE_CURRENT_SOURCE_DIR}/gen/asn1-generate-template/asn1-generate-template ${CMAKE_CURRENT_SOURCE_DIR}/gen/error-tables ${CMAKE_CURRENT_SOURCE_DIR}/gen/build-export-data ) mig(lib/ipc/heim_ipc.defs) mig(lib/ipc/heim_ipc_async.defs) set(DYLIB_COMPAT_VERSION "1.0.0") set(DYLIB_CURRENT_VERSION "1.0.0") set(DYLIB_INSTALL_NAME "/usr/lib/libheimdal-asn1.dylib") add_darling_library(heimdal-asn1 SHARED lib/asn1/der_cmp.c lib/asn1/der_copy.c lib/asn1/der_format.c lib/asn1/der_free.c lib/asn1/der_get.c lib/asn1/der_length.c lib/asn1/der_put.c lib/asn1/der.c lib/asn1/extra.c lib/asn1/fuzzer.c lib/asn1/template.c lib/asn1/timegm.c lib/roken/hex.c lib/roken/strpool.c ) make_fat(heimdal-asn1) target_link_libraries(heimdal-asn1 system) target_link_options(heimdal-asn1 PRIVATE -Wl,-exported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/gen/build-export-data/heimdal-asn1.exp ) add_darling_static_library(heim_heimcred FAT SOURCES lib/heimcred/client.c lib/heimcred/common.c ) add_darling_static_library(heim_krb5 FAT SOURCES lib/krb5/add_et_list.c lib/krb5/addr_families.c lib/krb5/aname_to_localname.c lib/krb5/appdefault.c lib/krb5/asn1_glue.c lib/krb5/auth_context.c lib/krb5/build_ap_req.c lib/krb5/build_auth.c lib/krb5/cache.c lib/krb5/changepw.c lib/krb5/codec.c lib/krb5/config_file.c lib/krb5/constants.c lib/krb5/context.c lib/krb5/convert_creds.c lib/krb5/copy_host_realm.c lib/krb5/crc.c lib/krb5/creds.c lib/krb5/crypto-aes.c lib/krb5/crypto-algs.c lib/krb5/crypto-arcfour.c lib/krb5/crypto-des-common.c lib/krb5/crypto-des.c lib/krb5/crypto-des3.c lib/krb5/crypto-evp.c lib/krb5/crypto-null.c lib/krb5/crypto-pk.c lib/krb5/crypto-rand.c lib/krb5/crypto-stubs.c lib/krb5/crypto.c lib/krb5/data.c lib/krb5/deprecated.c lib/krb5/derived-key-test.c lib/krb5/doxygen.c lib/krb5/eai_to_heim_errno.c lib/krb5/error_string.c lib/krb5/expand_hostname.c lib/krb5/expand_path.c lib/krb5/fast.c lib/krb5/fcache.c lib/krb5/free_host_realm.c lib/krb5/free.c lib/krb5/generate_seq_number.c lib/krb5/generate_subkey.c lib/krb5/get_addrs.c lib/krb5/get_cred.c lib/krb5/get_default_principal.c lib/krb5/get_default_realm.c lib/krb5/get_for_creds.c lib/krb5/get_host_realm.c lib/krb5/get_in_tkt.c lib/krb5/get_port.c lib/krb5/init_creds_pw.c lib/krb5/init_creds.c lib/krb5/kcm.c lib/krb5/keyblock.c lib/krb5/keytab_any.c lib/krb5/keytab_file.c lib/krb5/keytab_keyfile.c lib/krb5/keytab_memory.c lib/krb5/keytab.c lib/krb5/kkdcp.m lib/krb5/krbhst-test.c lib/krb5/krbhst.c lib/krb5/kuserok.c lib/krb5/log.c lib/krb5/mcache.c lib/krb5/misc.c lib/krb5/mit_glue.c lib/krb5/mk_error.c lib/krb5/mk_priv.c lib/krb5/mk_rep.c lib/krb5/mk_req_ext.c lib/krb5/mk_req.c lib/krb5/mk_safe.c lib/krb5/n-fold.c lib/krb5/net_read.c lib/krb5/net_write.c lib/krb5/pac.c lib/krb5/padata.c lib/krb5/pcache.c lib/krb5/pfs.c lib/krb5/pkinit.c lib/krb5/plugin.c lib/krb5/principal.c lib/krb5/prompter_posix.c lib/krb5/rd_cred.c lib/krb5/rd_error.c lib/krb5/rd_priv.c lib/krb5/rd_rep.c lib/krb5/rd_req.c lib/krb5/rd_safe.c lib/krb5/read_message.c lib/krb5/recvauth.c lib/krb5/replay.c lib/krb5/salt-aes.c lib/krb5/salt-arcfour.c lib/krb5/salt-des.c lib/krb5/salt-des3.c lib/krb5/salt.c lib/krb5/send_to_kdc.c lib/krb5/sendauth.c lib/krb5/set_default_realm.c lib/krb5/sock_principal.c lib/krb5/stat-kerberos.m lib/krb5/stat.m lib/krb5/store_emem.c lib/krb5/store_fd.c lib/krb5/store_mem.c lib/krb5/store-int.c lib/krb5/store.c lib/krb5/test_rfc3961.c lib/krb5/ticket.c lib/krb5/time.c lib/krb5/tkt.c lib/krb5/transited.c lib/krb5/verify_init.c lib/krb5/verify_user.c lib/krb5/version.c lib/krb5/warn.c lib/krb5/write_message.c lib/krb5/xcache.c ) add_darling_static_library(heim_wind FAT SOURCES lib/wind/icu.c lib/wind/utf8.c ) add_darling_static_library(heim_asn1-defs FAT SOURCES gen/asn1-generate-template/asn1-generate-template/asn1_gssapi_asn1.c gen/asn1-generate-template/asn1-generate-template/asn1_krb5_asn1.c gen/asn1-generate-template/asn1-generate-template/asn1_pkcs12_asn1.c gen/asn1-generate-template/asn1-generate-template/asn1_pkcs8_asn1.c gen/asn1-generate-template/asn1-generate-template/asn1_pkcs9_asn1.c gen/asn1-generate-template/asn1-generate-template/asn1_pkinit_asn1.c gen/asn1-generate-template/asn1-generate-template/asn1_pku2u_asn1.c gen/asn1-generate-template/asn1-generate-template/asn1_spnego_asn1.c ) add_darling_static_library(heim_com_err FAT SOURCES lib/com_err/com_err.c lib/com_err/error.c ) add_darling_static_library(heim_roken FAT SOURCES lib/roken/base64.c lib/roken/bswap.c lib/roken/cloexec.c lib/roken/closefrom.c lib/roken/concat.c lib/roken/ct.c lib/roken/dumpdata.c lib/roken/ecalloc.c lib/roken/emalloc.c lib/roken/environment.c lib/roken/eread.c lib/roken/erealloc.c lib/roken/esetenv.c lib/roken/estrdup.c lib/roken/ewrite.c lib/roken/get_default_username.c lib/roken/getnameinfo_verified.c lib/roken/hex.c lib/roken/issuid.c lib/roken/net_read.c lib/roken/net_write.c lib/roken/parse_bytes.c lib/roken/parse_time.c lib/roken/parse_units.c lib/roken/rand.c lib/roken/resolve.c lib/roken/rkcf.c lib/roken/roken_gethostby.c lib/roken/rtbl.c lib/roken/socket.c lib/roken/strlwr.c lib/roken/strpool.c lib/roken/strsep_copy.c lib/roken/strupr.c lib/roken/xfree.c ) add_darling_static_library(heim_roken-application FAT SOURCES lib/roken/closefrom.c lib/roken/ct.c lib/roken/ecalloc.c lib/roken/emalloc.c lib/roken/erealloc.c lib/roken/get_default_username.c lib/roken/get_window_size.c lib/roken/getarg.c lib/roken/k_getpwnam.c lib/roken/k_getpwuid.c lib/roken/mini_inetd.c lib/roken/rand.c lib/roken/simple_exec.c lib/roken/strcollect.c lib/roken/timeval.c lib/roken/tm2time.c lib/roken/write_pid.c lib/roken/xfree.c ) add_darling_static_library(heim_vers FAT SOURCES lib/vers/print_version.c ) add_darling_static_library(heim_error-tables FAT SOURCES gen/error-tables/error-tables/asn1_err.c gen/error-tables/error-tables/gkrb5_err.c gen/error-tables/error-tables/hc_err.c gen/error-tables/error-tables/hdb_err.c gen/error-tables/error-tables/heim_err.c gen/error-tables/error-tables/hx509_err.c gen/error-tables/error-tables/k524_err.c gen/error-tables/error-tables/kadm5_err.c gen/error-tables/error-tables/krb_err.c gen/error-tables/error-tables/krb5_err.c gen/error-tables/error-tables/wind_err.c ) add_darling_static_library(heim_hx509 FAT SOURCES lib/hx509/ca.c lib/hx509/cert.c lib/hx509/cms.c lib/hx509/collector.c lib/hx509/crypto.c lib/hx509/doxygen.c lib/hx509/env.c lib/hx509/error.c lib/hx509/file.c lib/hx509/keyset.c lib/hx509/ks_dir.c lib/hx509/ks_file.c lib/hx509/ks_keychain.c lib/hx509/ks_mem.c lib/hx509/ks_null.c lib/hx509/ks_p11.c lib/hx509/ks_p12.c lib/hx509/lock.c lib/hx509/name.c lib/hx509/peer.c lib/hx509/print.c lib/hx509/req.c lib/hx509/revoke.c ) add_darling_static_library(heim_ipc-client FAT SOURCES lib/ipc/client.c lib/ipc/common.c ${CMAKE_CURRENT_BINARY_DIR}/lib/ipc/heim_ipc_asyncServer.c ${CMAKE_CURRENT_BINARY_DIR}/lib/ipc/heim_ipcUser.c ) add_darling_static_library(heim_hcrypto FAT SOURCES lib/hcrypto/bn.c lib/hcrypto/common.c lib/hcrypto/dh-cdsa.c lib/hcrypto/dh-sf.c lib/hcrypto/dh.c lib/hcrypto/ecdsa.c lib/hcrypto/engine.c lib/hcrypto/evp-cc.c lib/hcrypto/evp.c lib/hcrypto/pkcs5.c lib/hcrypto/pkcs12.c lib/hcrypto/rsa-cdsa.c lib/hcrypto/rsa-sf.c lib/hcrypto/rsa.c lib/hcrypto/ui.c lib/hcrypto/validate.c ) add_darling_static_library(heim_heimbase FAT SOURCES base/abort.c base/cf.c base/json.c base/log.c # These files aren't included in the build in Xcode # but they contain functions needed by code in the project, # so we will build them anyway #base/bool.c #base/null.c ) add_darling_static_library(heim_asn1-hx509 FAT SOURCES gen/asn1-generate-template/asn1-generate-template/asn1_cms_asn1.c gen/asn1-generate-template/asn1-generate-template/asn1_ocsp_asn1.c gen/asn1-generate-template/asn1-generate-template/asn1_pkcs10_asn1.c gen/asn1-generate-template/asn1-generate-template/asn1_rfc2459_asn1.c ) add_darling_static_library(heim_asn1-digest FAT SOURCES gen/asn1-generate-template/asn1-generate-template/asn1_digest_asn1.c ) set(FRAMEWORK_HEIMDAL_VERSION "A") generate_sdk_framework(Heimdal VERSION ${FRAMEWORK_HEIMDAL_VERSION} HEADER "darling/include/Heimdal" PRIVATE ) # Same version as above add_framework(Heimdal FAT CURRENT_VERSION PRIVATE VERSION ${FRAMEWORK_HEIMDAL_VERSION} SOURCES base/test_base.c gen/build-export-data/sym_hcrypto.c gen/build-export-data/sym_hx509.c gen/build-export-data/sym_krb5.c gen/build-export-data/sym_pkinit.c gen/build-export-data/sym_roken.c gen/build-export-data/sym_asn1.c gen/build-export-data/sym_base.c DEPENDENCIES system sqlite3 resolv-darwin Security Foundation CoreFoundation CFNetwork icucore heimdal-asn1 libnetwork bsm.0 # Static libs heim_heimcred heim_krb5 heim_wind heim_asn1-defs heim_com_err heim_roken heim_vers heim_error-tables heim_hx509 heim_ipc-client heim_hcrypto heim_heimbase heim_asn1-hx509 heim_asn1-digest heim_roken-application ) make_fat(Heimdal) target_link_options(Heimdal PRIVATE -Wl,-exported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/gen/build-export-data/heimdal.exp ) install(TARGETS heimdal-asn1 DESTINATION libexec/darling/usr/lib) set(FRAMEWORK_COMMONAUTH_VERSION "A") generate_sdk_framework(CommonAuth VERSION ${FRAMEWORK_COMMONAUTH_VERSION} HEADER "darling/include/CommonAuth" PRIVATE ) add_framework(CommonAuth FAT CURRENT_VERSION PRIVATE VERSION ${FRAMEWORK_COMMONAUTH_VERSION} SOURCES gen/error-tables/error-tables/ntlm_err.c lib/krb5/data.c lib/krb5/error_string.c lib/krb5/store_emem.c lib/krb5/store_mem.c lib/krb5/store-int.c lib/krb5/store.c lib/ntlm/apop.c lib/ntlm/digest.c lib/ntlm/ntlm.c lib/ntlm/scram.c DEPENDENCIES heimdal-asn1 icucore system # static libs heim_com_err heim_hcrypto heim_asn1-defs heim_roken heim_wind heim_heimbase heim_asn1-hx509 ) target_link_options(CommonAuth PRIVATE -Wl,-exported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/gen/build-export-data/commonauth.exp ) target_include_directories(CommonAuth PRIVATE lib/ntlm ) # added as a subdirectory to avoid polluting the include list here # (not sure if any headers would conflict, but just in case) add_subdirectory(lib/gssapi)