Skip to content

Commit d50d5e3

Browse files
add obj to cmake
1 parent 9f5a225 commit d50d5e3

File tree

2 files changed

+34
-57
lines changed

2 files changed

+34
-57
lines changed

cmake/ta_core_config.cmake

Lines changed: 19 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -24,55 +24,39 @@ endif()
2424
if(CMAKE_CUDA_COMPILER)
2525
enable_language(CUDA)
2626
find_package(CUDAToolkit REQUIRED)
27-
add_library(tensorarray_core SHARED ${TensorArray_Core_cc} ${TensorArray_Core_cu})
28-
add_library(tensorarray_core_static STATIC ${TensorArray_Core_cc} ${TensorArray_Core_cu})
29-
30-
set_property(TARGET tensorarray_core PROPERTY CUDA_STANDARD 17)
31-
set_property(TARGET tensorarray_core PROPERTY CUDA_STANDARD_REQUIRED ON)
32-
set_property(TARGET tensorarray_core PROPERTY CUDA_EXTENSIONS OFF)
33-
set_property(TARGET tensorarray_core PROPERTY CUDA_SEPARABLE_COMPILATION ON)
34-
target_include_directories(tensorarray_core PRIVATE $<$<COMPILE_LANGUAGE:C,CXX>:${CUDAToolkit_INCLUDE_DIRS}>)
35-
target_link_libraries(tensorarray_core PRIVATE $<$<LINK_LANGUAGE:C,CXX>:CUDA::cublas>)
36-
37-
set_property(TARGET tensorarray_core_static PROPERTY CUDA_STANDARD 17)
38-
set_property(TARGET tensorarray_core_static PROPERTY CUDA_STANDARD_REQUIRED ON)
39-
set_property(TARGET tensorarray_core_static PROPERTY CUDA_EXTENSIONS OFF)
40-
set_property(TARGET tensorarray_core_static PROPERTY CUDA_SEPARABLE_COMPILATION ON)
41-
target_include_directories(tensorarray_core_static PRIVATE $<$<COMPILE_LANGUAGE:C,CXX>:${CUDAToolkit_INCLUDE_DIRS}>)
42-
target_link_libraries(tensorarray_core_static PRIVATE $<$<LINK_LANGUAGE:C,CXX>:CUDA::cublas>)
43-
27+
add_library(tensorarray_core_object OBJECT ${TensorArray_Core_cc} ${TensorArray_Core_cu})
28+
set_property(TARGET tensorarray_core_object PROPERTY CUDA_STANDARD 17)
29+
set_property(TARGET tensorarray_core_object PROPERTY CUDA_STANDARD_REQUIRED ON)
30+
set_property(TARGET tensorarray_core_object PROPERTY CUDA_EXTENSIONS OFF)
31+
set_property(TARGET tensorarray_core_object PROPERTY CUDA_SEPARABLE_COMPILATION ON)
32+
target_include_directories(tensorarray_core_object PRIVATE $<$<COMPILE_LANGUAGE:C,CXX>:${CUDAToolkit_INCLUDE_DIRS}>)
33+
target_link_libraries(tensorarray_core_object PRIVATE $<$<LINK_LANGUAGE:C,CXX>:CUDA::cublas>)
4434
if(MSVC)
45-
target_compile_definitions(tensorarray_core PRIVATE TENSOR_ARRAY_CORE_EXPORTS)
35+
target_compile_definitions(tensorarray_core_object PRIVATE TENSOR_ARRAY_CORE_EXPORTS)
4636
endif()
4737

4838
# find_package(CUDAToolkit REQUIRED)
4939
# set(CMAKE_CUDA_ARCHITECTURES 52 75 89)
5040
# set(CMAKE_CUDA_SEPARABLE_COMPILATION ON)
5141
# list(APPEND CMAKE_CUDA_FLAGS "--default-stream per-thread")
5242
else()
53-
add_library(tensorarray_core SHARED ${TensorArray_Core_cc})
54-
add_library(tensorarray_core_static STATIC ${TensorArray_Core_cc})
43+
add_library(tensorarray_core_object OBJECT ${TensorArray_Core_cc})
5544
endif()
5645

5746

5847
# file(MAKE_DIRECTORY "include/tensor_array/core")
5948

60-
set_property(TARGET tensorarray_core PROPERTY C_STANDARD 11)
61-
set_property(TARGET tensorarray_core PROPERTY C_STANDARD_REQUIRED ON)
62-
set_property(TARGET tensorarray_core PROPERTY C_EXTENSIONS OFF)
63-
64-
set_property(TARGET tensorarray_core PROPERTY CXX_STANDARD 17)
65-
set_property(TARGET tensorarray_core PROPERTY CXX_STANDARD_REQUIRED ON)
66-
set_property(TARGET tensorarray_core PROPERTY CXX_EXTENSIONS OFF)
67-
49+
set_property(TARGET tensorarray_core_object PROPERTY C_STANDARD 11)
50+
set_property(TARGET tensorarray_core_object PROPERTY C_STANDARD_REQUIRED ON)
51+
set_property(TARGET tensorarray_core_object PROPERTY C_EXTENSIONS OFF)
6852

69-
set_property(TARGET tensorarray_core_static PROPERTY C_STANDARD 11)
70-
set_property(TARGET tensorarray_core_static PROPERTY C_STANDARD_REQUIRED ON)
71-
set_property(TARGET tensorarray_core_static PROPERTY C_EXTENSIONS OFF)
53+
set_property(TARGET tensorarray_core_object PROPERTY CXX_STANDARD 17)
54+
set_property(TARGET tensorarray_core_object PROPERTY CXX_STANDARD_REQUIRED ON)
55+
set_property(TARGET tensorarray_core_object PROPERTY CXX_EXTENSIONS OFF)
7256

73-
set_property(TARGET tensorarray_core_static PROPERTY CXX_STANDARD 17)
74-
set_property(TARGET tensorarray_core_static PROPERTY CXX_STANDARD_REQUIRED ON)
75-
set_property(TARGET tensorarray_core_static PROPERTY CXX_EXTENSIONS OFF)
57+
# shared and static libraries built from the same object files
58+
add_library(tensorarray_core SHARED $<TARGET_OBJECTS:tensorarray_core_object>)
59+
add_library(tensorarray_core_static STATIC $<TARGET_OBJECTS:tensorarray_core_object>)
7660

7761
install(
7862
TARGETS tensorarray_core
@@ -98,3 +82,4 @@ install(
9882

9983
add_library(TensorArray::core ALIAS tensorarray_core)
10084
add_library(TensorArray::core_static ALIAS tensorarray_core_static)
85+
add_library(TensorArray::core_object ALIAS tensorarray_core_object)

cmake/ta_layers_config.cmake

Lines changed: 15 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -14,36 +14,27 @@ install(
1414

1515
file(GLOB TensorArray_Layers_src "${PROJECT_SOURCE_DIR}/src/${TensorArray_Layers_Dir}/*.cc")
1616

17-
add_library(tensorarray_layers SHARED ${TensorArray_Layers_src})
18-
add_library(tensorarray_layers_static STATIC ${TensorArray_Layers_src})
17+
add_library(tensorarray_layers_object OBJECT ${TensorArray_Layers_src})
1918

20-
target_include_directories(tensorarray_layers PRIVATE ${PROJECT_SOURCE_DIR}/src)
21-
target_include_directories(tensorarray_layers_static PRIVATE ${PROJECT_SOURCE_DIR}/src)
19+
target_include_directories(tensorarray_layers_object PRIVATE ${PROJECT_SOURCE_DIR}/src)
20+
target_link_libraries(tensorarray_layers_object TensorArray::core_object)
2221

23-
target_link_libraries(tensorarray_layers TensorArray::core)
24-
target_link_libraries(tensorarray_layers_static TensorArray::core_static)
22+
set_property(TARGET tensorarray_layers_object PROPERTY C_STANDARD 11)
23+
set_property(TARGET tensorarray_layers_object PROPERTY C_STANDARD_REQUIRED ON)
24+
set_property(TARGET tensorarray_layers_object PROPERTY C_EXTENSIONS OFF)
2525

26-
set_property(TARGET tensorarray_layers PROPERTY C_STANDARD 11)
27-
set_property(TARGET tensorarray_layers PROPERTY C_STANDARD_REQUIRED ON)
28-
set_property(TARGET tensorarray_layers PROPERTY C_EXTENSIONS OFF)
29-
30-
set_property(TARGET tensorarray_layers PROPERTY CXX_STANDARD 17)
31-
set_property(TARGET tensorarray_layers PROPERTY CXX_STANDARD_REQUIRED ON)
32-
set_property(TARGET tensorarray_layers PROPERTY CXX_EXTENSIONS OFF)
33-
34-
35-
set_property(TARGET tensorarray_layers_static PROPERTY C_STANDARD 11)
36-
set_property(TARGET tensorarray_layers_static PROPERTY C_STANDARD_REQUIRED ON)
37-
set_property(TARGET tensorarray_layers_static PROPERTY C_EXTENSIONS OFF)
38-
39-
set_property(TARGET tensorarray_layers_static PROPERTY CXX_STANDARD 17)
40-
set_property(TARGET tensorarray_layers_static PROPERTY CXX_STANDARD_REQUIRED ON)
41-
set_property(TARGET tensorarray_layers_static PROPERTY CXX_EXTENSIONS OFF)
26+
set_property(TARGET tensorarray_layers_object PROPERTY CXX_STANDARD 17)
27+
set_property(TARGET tensorarray_layers_object PROPERTY CXX_STANDARD_REQUIRED ON)
28+
set_property(TARGET tensorarray_layers_object PROPERTY CXX_EXTENSIONS OFF)
4229

4330
if(MSVC)
44-
target_compile_definitions(tensorarray_layers PRIVATE TENSOR_ARRAY_LAYERS_EXPORTS)
31+
target_compile_definitions(tensorarray_layers_object PRIVATE TENSOR_ARRAY_LAYERS_EXPORTS)
4532
endif()
4633

34+
# shared and static libraries built from the same object files
35+
add_library(tensorarray_layers SHARED $<TARGET_OBJECTS:tensorarray_layers_object>)
36+
add_library(tensorarray_layers_static STATIC $<TARGET_OBJECTS:tensorarray_layers_object>)
37+
4738
install(
4839
TARGETS tensorarray_layers
4940
EXPORT TensorArrayTargets
@@ -68,3 +59,4 @@ install(
6859

6960
add_library(TensorArray::layers ALIAS tensorarray_layers)
7061
add_library(TensorArray::layers_static ALIAS tensorarray_layers_static)
62+
add_library(TensorArray::layers_object ALIAS tensorarray_layers_object)

0 commit comments

Comments
 (0)