cmake: add support for static build

This commit is contained in:
2024-12-06 19:48:20 +00:00
parent 1f7319458e
commit ec05379e33
7 changed files with 39 additions and 10 deletions

View File

@@ -10,7 +10,14 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib)
set(Bluelib_STATIC TRUE)
if (NOT IVY_STATIC)
set(IVY_STATIC 0)
endif ()
if (IVY_STATIC)
set(Bluelib_STATIC TRUE)
endif ()
find_package(Bluelib REQUIRED)
add_subdirectory(common)

View File

@@ -1,6 +1,11 @@
file(GLOB_RECURSE asm_sources *.c *.h include/ivy/asm/*.h)
add_library(ivy-asm SHARED ${asm_sources})
if (IVY_STATIC)
add_library(ivy-asm STATIC ${asm_sources})
else ()
add_library(ivy-asm SHARED ${asm_sources})
endif ()
target_include_directories(ivy-asm PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include/)
target_link_libraries(ivy-asm ivy-common Bluelib::Core Bluelib::Object)
target_compile_definitions(ivy-asm PRIVATE IVY_EXPORT=1)
target_compile_definitions(ivy-asm PRIVATE IVY_EXPORT=1 IVY_STATIC=${IVY_STATIC})

View File

@@ -1,5 +1,10 @@
file(GLOB_RECURSE common_sources *.c *.h include/ivy/*.h)
add_library(ivy-common SHARED ${common_sources})
if (IVY_STATIC)
add_library(ivy-common STATIC ${common_sources})
else ()
add_library(ivy-common SHARED ${common_sources})
endif ()
target_include_directories(ivy-common PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include/)
target_compile_definitions(ivy-common PRIVATE IVY_EXPORT=1)
target_compile_definitions(ivy-common PRIVATE IVY_EXPORT=1 IVY_STATIC=${IVY_STATIC})

View File

@@ -1,7 +1,7 @@
#ifndef IVY_COMMON_MISC_H_
#define IVY_COMMON_MISC_H_
#ifdef _MSC_VER
#if defined(_MSC_VER) && IVY_STATIC==0
#ifdef IVY_EXPORT
#define IVY_API extern __declspec(dllexport)
#else

View File

@@ -19,3 +19,5 @@ target_link_libraries(
Bluelib::Core
Bluelib::Object
Bluelib::Cmd)
target_compile_definitions(ivy PRIVATE IVY_STATIC=${IVY_STATIC})

View File

@@ -1,6 +1,11 @@
file(GLOB_RECURSE lang_sources *.c *.h include/ivy/lang/*.h)
add_library(ivy-lang SHARED ${lang_sources})
if (IVY_STATIC)
add_library(ivy-lang STATIC ${lang_sources})
else ()
add_library(ivy-lang SHARED ${lang_sources})
endif ()
target_include_directories(ivy-lang PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include/)
target_link_libraries(ivy-lang ivy-common Bluelib::Core Bluelib::Object Bluelib::Term)
target_compile_definitions(ivy-lang PRIVATE IVY_EXPORT=1)
target_compile_definitions(ivy-lang PRIVATE IVY_EXPORT=1 IVY_STATIC=${IVY_STATIC})

View File

@@ -1,6 +1,11 @@
file(GLOB_RECURSE rt_sources *.c *.h include/ivy/rt/*.h)
add_library(ivy-rt SHARED ${rt_sources})
if (IVY_STATIC)
add_library(ivy-rt STATIC ${rt_sources})
else ()
add_library(ivy-rt SHARED ${rt_sources})
endif ()
target_include_directories(ivy-rt PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include/)
target_link_libraries(ivy-rt ivy-common)
target_compile_definitions(ivy-rt PRIVATE IVY_EXPORT=1)
target_compile_definitions(ivy-rt PRIVATE IVY_EXPORT=1 IVY_STATIC=${IVY_STATIC})