/ 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)