darling-Heimdal/CMakeLists.txt
2023-03-05 10:00:02 -08:00

500 lines
11 KiB
CMake

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)