cmake: add support for static build
This commit is contained in:
@@ -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)
|
||||
|
||||
if (NOT IVY_STATIC)
|
||||
set(IVY_STATIC 0)
|
||||
endif ()
|
||||
|
||||
if (IVY_STATIC)
|
||||
set(Bluelib_STATIC TRUE)
|
||||
endif ()
|
||||
|
||||
find_package(Bluelib REQUIRED)
|
||||
|
||||
add_subdirectory(common)
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
file(GLOB_RECURSE asm_sources *.c *.h include/ivy/asm/*.h)
|
||||
|
||||
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})
|
||||
@@ -1,5 +1,10 @@
|
||||
file(GLOB_RECURSE common_sources *.c *.h include/ivy/*.h)
|
||||
|
||||
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})
|
||||
@@ -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
|
||||
|
||||
@@ -19,3 +19,5 @@ target_link_libraries(
|
||||
Bluelib::Core
|
||||
Bluelib::Object
|
||||
Bluelib::Cmd)
|
||||
|
||||
target_compile_definitions(ivy PRIVATE IVY_STATIC=${IVY_STATIC})
|
||||
@@ -1,6 +1,11 @@
|
||||
file(GLOB_RECURSE lang_sources *.c *.h include/ivy/lang/*.h)
|
||||
|
||||
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})
|
||||
@@ -1,6 +1,11 @@
|
||||
file(GLOB_RECURSE rt_sources *.c *.h include/ivy/rt/*.h)
|
||||
|
||||
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})
|
||||
Reference in New Issue
Block a user