|
3 | 3 | # Copyright © 2025–2026 Varga Labs, Toronto, ON, Canada 🇨🇦 |
4 | 4 | # Contact: info@vargalabs.com |
5 | 5 |
|
6 | | - |
7 | 6 | set(name bid) |
8 | 7 | set(libname lib${name}_static) |
9 | 8 |
|
10 | | -project(${libname} LANGUAGES C CXX) |
| 9 | +project(${libname} LANGUAGES C) |
11 | 10 |
|
12 | | -set(current_version "v2.2.0") |
13 | | -set(current_version_dir "${CMAKE_CURRENT_SOURCE_DIR}/${current_version}") |
14 | | -set(build_version_dir "${CMAKE_CURRENT_BINARY_DIR}/${current_version}") |
15 | | -set(makefile_output "${build_version_dir}/libbid.a") |
16 | | -set(libbid_include_dir "${build_version_dir}/src") |
| 11 | +set(bid_root "${CMAKE_CURRENT_SOURCE_DIR}/v2.2.0") |
| 12 | +set(src_dir "${bid_root}/src") |
| 13 | +set(f128_dir "${bid_root}/float128") |
17 | 14 |
|
18 | | -file(COPY ${current_version_dir} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) |
| 15 | +file(GLOB bid_core_sources CONFIGURE_DEPENDS |
| 16 | + "${src_dir}/*.c" |
| 17 | +) |
19 | 18 |
|
20 | | -add_custom_command( |
21 | | - OUTPUT ${makefile_output} |
22 | | - COMMAND make -C ${build_version_dir} |
23 | | - CC=${CMAKE_C_COMPILER} |
24 | | - CALL_BY_REF=0 |
25 | | - GLOBAL_RND=0 |
26 | | - GLOBAL_FLAGS=0 |
27 | | - UNCHANGED_BINARY_FLAGS=0 |
28 | | - WORKING_DIRECTORY ${build_version_dir} |
29 | | - COMMENT "Building Intel LIBBID static library" |
30 | | - VERBATIM |
| 19 | +set(bid_f128_sources |
| 20 | + "${f128_dir}/dpml_ux_bid.c" |
| 21 | + "${f128_dir}/dpml_ux_bessel.c" |
| 22 | + "${f128_dir}/dpml_ux_cbrt.c" |
| 23 | + "${f128_dir}/dpml_ux_erf.c" |
| 24 | + "${f128_dir}/dpml_ux_exp.c" |
| 25 | + "${f128_dir}/dpml_ux_int.c" |
| 26 | + "${f128_dir}/dpml_ux_inv_hyper.c" |
| 27 | + "${f128_dir}/dpml_ux_inv_trig.c" |
| 28 | + "${f128_dir}/dpml_ux_lgamma.c" |
| 29 | + "${f128_dir}/dpml_ux_log.c" |
| 30 | + "${f128_dir}/dpml_ux_mod.c" |
| 31 | + "${f128_dir}/dpml_ux_powi.c" |
| 32 | + "${f128_dir}/dpml_ux_pow.c" |
| 33 | + "${f128_dir}/dpml_ux_sqrt.c" |
| 34 | + "${f128_dir}/dpml_ux_trig.c" |
| 35 | + "${f128_dir}/dpml_ux_ops.c" |
| 36 | + "${f128_dir}/dpml_ux_ops_64.c" |
| 37 | + "${f128_dir}/dpml_four_over_pi.c" |
| 38 | + "${f128_dir}/dpml_exception.c" |
| 39 | + "${f128_dir}/sqrt_tab_t.c" |
31 | 40 | ) |
32 | 41 |
|
33 | | -add_custom_target(${libname}_build ALL DEPENDS ${makefile_output} ) |
34 | | -add_library(${libname} INTERFACE) |
| 42 | +add_library(libbid_core_obj OBJECT ${bid_core_sources}) |
| 43 | +target_include_directories(libbid_core_obj PRIVATE |
| 44 | + "${src_dir}" |
| 45 | +) |
| 46 | +target_compile_definitions(libbid_core_obj PRIVATE |
| 47 | + USE_COMPILER_F128_TYPE=0 |
| 48 | + USE_COMPILER_F80_TYPE=0 |
| 49 | + LINUX |
| 50 | + efi2 |
| 51 | + DECIMAL_CALL_BY_REFERENCE=0 |
| 52 | + DECIMAL_GLOBAL_ROUNDING=0 |
| 53 | + DECIMAL_GLOBAL_EXCEPTION_FLAGS=0 |
| 54 | +) |
| 55 | +target_compile_options(libbid_core_obj PRIVATE -w) |
| 56 | +set_target_properties(libbid_core_obj PROPERTIES |
| 57 | + C_STANDARD 99 |
| 58 | + C_STANDARD_REQUIRED ON |
| 59 | +) |
| 60 | + |
| 61 | +add_library(libbid_f128_obj OBJECT ${bid_f128_sources}) |
| 62 | +target_include_directories(libbid_f128_obj PRIVATE |
| 63 | + "${src_dir}" |
| 64 | + "${f128_dir}" |
| 65 | +) |
| 66 | +target_compile_definitions(libbid_f128_obj PRIVATE |
| 67 | + USE_NATIVE_QUAD_TYPE=0 |
| 68 | + efi2 |
| 69 | + linux |
| 70 | + gcc |
| 71 | +) |
| 72 | +target_compile_options(libbid_f128_obj PRIVATE -w) |
| 73 | +set_target_properties(libbid_f128_obj PROPERTIES |
| 74 | + C_STANDARD 99 |
| 75 | + C_STANDARD_REQUIRED ON |
| 76 | +) |
| 77 | + |
| 78 | +add_library(${libname} STATIC |
| 79 | + $<TARGET_OBJECTS:libbid_core_obj> |
| 80 | + $<TARGET_OBJECTS:libbid_f128_obj> |
| 81 | +) |
35 | 82 | add_library(libdecimal::${libname} ALIAS ${libname}) |
36 | | -add_dependencies(${libname} ${libname}_build) |
37 | | -target_include_directories(${libname} INTERFACE $<BUILD_INTERFACE:${libbid_include_dir}> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/libbid> ) |
38 | | -target_link_libraries(${libname} INTERFACE $<BUILD_INTERFACE:${makefile_output}> $<INSTALL_INTERFACE:${CMAKE_INSTALL_LIBDIR}/libbid.a>) |
39 | 83 |
|
40 | | -# Export build artifacts to parent scope for installation |
41 | | -set(libbid_static_archive "${makefile_output}" PARENT_SCOPE) |
42 | | -set(libbid_static_include_dir "${libbid_include_dir}" PARENT_SCOPE) |
| 84 | +target_include_directories(${libname} |
| 85 | + PUBLIC |
| 86 | + $<BUILD_INTERFACE:${src_dir}> |
| 87 | + $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/libbid> |
| 88 | +) |
| 89 | + |
| 90 | +set(libbid_static_archive $<TARGET_FILE:${libname}> PARENT_SCOPE) |
| 91 | +set(libbid_static_include_dir "${src_dir}" PARENT_SCOPE) |
0 commit comments