|
@@ -1,3 +1,11 @@
|
|
|
+####################################################################################################################
|
|
|
+####################################################################################################################
|
|
|
+####################################################################################################################
|
|
|
+# General
|
|
|
+####################################################################################################################
|
|
|
+####################################################################################################################
|
|
|
+####################################################################################################################
|
|
|
+
|
|
|
##########################################################
|
|
|
# Basic
|
|
|
##########################################################
|
|
@@ -17,11 +25,33 @@ set(MODULE_NAME_TIME ls_std_time)
|
|
|
# Options
|
|
|
##########################################################
|
|
|
|
|
|
-option(LS_STD_BUILD_WITH_TESTS "Build project with tests..." OFF)
|
|
|
+option(LS_STD_BUILD_WITH_TESTS "Build project with tests..." ON)
|
|
|
option(LS_STD_BUILD_STATIC "Build ls_std static library..." ON)
|
|
|
option(LS_STD_BUILD_SHARED "Build ls_std shared library..." OFF)
|
|
|
option(LS_STD_BUILD_MODULE "Build ls_std module library..." OFF)
|
|
|
|
|
|
+set(TARGET_COUNTER 0)
|
|
|
+
|
|
|
+if (${LS_STD_BUILD_STATIC})
|
|
|
+ math(EXPR TARGET_COUNTER "${TARGET_COUNTER} + 1")
|
|
|
+ message("${PROJECT_NAME}: [Goal] static library")
|
|
|
+endif ()
|
|
|
+
|
|
|
+if (${LS_STD_BUILD_SHARED})
|
|
|
+ math(EXPR TARGET_COUNTER "${TARGET_COUNTER} + 1")
|
|
|
+ message("${PROJECT_NAME}: [Goal] shared library")
|
|
|
+endif ()
|
|
|
+
|
|
|
+if (${LS_STD_BUILD_MODULE})
|
|
|
+ math(EXPR TARGET_COUNTER "${TARGET_COUNTER} + 1")
|
|
|
+ message("${PROJECT_NAME}: [Goal] module library")
|
|
|
+endif ()
|
|
|
+
|
|
|
+if (TARGET_COUNTER GREATER 1)
|
|
|
+ message("${PROJECT_NAME}: [Error] only one goal supported at the same time!")
|
|
|
+ return()
|
|
|
+endif ()
|
|
|
+
|
|
|
##########################################################
|
|
|
# Compiler Settings
|
|
|
##########################################################
|
|
@@ -55,9 +85,13 @@ if (${LS_STD_BUILD_WITH_TESTS})
|
|
|
add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/test/lib/googletest-1.8.1)
|
|
|
endif ()
|
|
|
|
|
|
-##########################################################
|
|
|
-# Source Files
|
|
|
-##########################################################
|
|
|
+####################################################################################################################
|
|
|
+####################################################################################################################
|
|
|
+####################################################################################################################
|
|
|
+# Source Files Modularization
|
|
|
+####################################################################################################################
|
|
|
+####################################################################################################################
|
|
|
+####################################################################################################################
|
|
|
|
|
|
set(SOURCE_FILES_BOXING
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/source/ls_std/boxing/Boolean.cpp
|
|
@@ -112,6 +146,14 @@ set(SOURCE_FILES_LOGIC
|
|
|
set(SOURCE_FILES_TIME
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/source/ls_std/time/Date.cpp)
|
|
|
|
|
|
+####################################################################################################################
|
|
|
+####################################################################################################################
|
|
|
+####################################################################################################################
|
|
|
+# Test Files Modularization
|
|
|
+####################################################################################################################
|
|
|
+####################################################################################################################
|
|
|
+####################################################################################################################
|
|
|
+
|
|
|
if (${LS_STD_BUILD_WITH_TESTS})
|
|
|
set(TEST_FILES_BOXING
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/test/cases/boxing/BooleanTest.cpp
|
|
@@ -193,6 +235,14 @@ if (${LS_STD_BUILD_WITH_TESTS})
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/test/cases/time/DateTest.cpp)
|
|
|
endif ()
|
|
|
|
|
|
+####################################################################################################################
|
|
|
+####################################################################################################################
|
|
|
+####################################################################################################################
|
|
|
+# Test Suite Builds
|
|
|
+####################################################################################################################
|
|
|
+####################################################################################################################
|
|
|
+####################################################################################################################
|
|
|
+
|
|
|
##########################################################
|
|
|
# Build Tests (boxing)
|
|
|
##########################################################
|
|
@@ -257,7 +307,7 @@ if (${LS_STD_BUILD_WITH_TESTS})
|
|
|
endif ()
|
|
|
|
|
|
##########################################################
|
|
|
-# Build Tests
|
|
|
+# Build Tests (all)
|
|
|
##########################################################
|
|
|
|
|
|
if (${LS_STD_BUILD_WITH_TESTS})
|
|
@@ -273,6 +323,14 @@ if (${LS_STD_BUILD_WITH_TESTS})
|
|
|
${TEST_FILES_TIME})
|
|
|
endif ()
|
|
|
|
|
|
+####################################################################################################################
|
|
|
+####################################################################################################################
|
|
|
+####################################################################################################################
|
|
|
+# Build Library Binaries
|
|
|
+####################################################################################################################
|
|
|
+####################################################################################################################
|
|
|
+####################################################################################################################
|
|
|
+
|
|
|
##########################################################
|
|
|
# Build Library (boxing)
|
|
|
##########################################################
|
|
@@ -305,6 +363,16 @@ if (${LS_STD_BUILD_STATIC})
|
|
|
set_target_properties("${MODULE_NAME_CORE}" PROPERTIES DEBUG_POSTFIX "_d")
|
|
|
endif ()
|
|
|
|
|
|
+if (${LS_STD_BUILD_SHARED})
|
|
|
+ add_library("${MODULE_NAME_CORE}" SHARED ${SOURCE_FILES_CORE})
|
|
|
+ set_target_properties("${MODULE_NAME_CORE}" PROPERTIES DEBUG_POSTFIX "_d")
|
|
|
+endif ()
|
|
|
+
|
|
|
+if (${LS_STD_BUILD_MODULE})
|
|
|
+ add_library("${MODULE_NAME_CORE}" MODULE ${SOURCE_FILES_CORE})
|
|
|
+ set_target_properties("${MODULE_NAME_CORE}" PROPERTIES DEBUG_POSTFIX "_d")
|
|
|
+endif ()
|
|
|
+
|
|
|
##########################################################
|
|
|
# Build Library (encoding)
|
|
|
##########################################################
|
|
@@ -316,6 +384,16 @@ if (${LS_STD_BUILD_STATIC})
|
|
|
set_target_properties("${MODULE_NAME_ENCODING}" PROPERTIES DEBUG_POSTFIX "_d")
|
|
|
endif ()
|
|
|
|
|
|
+if (${LS_STD_BUILD_SHARED})
|
|
|
+ add_library("${MODULE_NAME_ENCODING}" SHARED ${SOURCE_FILES_ENCODING})
|
|
|
+ set_target_properties("${MODULE_NAME_ENCODING}" PROPERTIES DEBUG_POSTFIX "_d")
|
|
|
+endif ()
|
|
|
+
|
|
|
+if (${LS_STD_BUILD_MODULE})
|
|
|
+ add_library("${MODULE_NAME_ENCODING}" MODULE ${SOURCE_FILES_ENCODING})
|
|
|
+ set_target_properties("${MODULE_NAME_ENCODING}" PROPERTIES DEBUG_POSTFIX "_d")
|
|
|
+endif ()
|
|
|
+
|
|
|
##########################################################
|
|
|
# Build Library (event)
|
|
|
##########################################################
|
|
@@ -327,6 +405,16 @@ if (${LS_STD_BUILD_STATIC})
|
|
|
set_target_properties("${MODULE_NAME_EVENT}" PROPERTIES DEBUG_POSTFIX "_d")
|
|
|
endif ()
|
|
|
|
|
|
+if (${LS_STD_BUILD_SHARED})
|
|
|
+ add_library("${MODULE_NAME_EVENT}" SHARED ${SOURCE_FILES_EVENT})
|
|
|
+ set_target_properties("${MODULE_NAME_EVENT}" PROPERTIES DEBUG_POSTFIX "_d")
|
|
|
+endif ()
|
|
|
+
|
|
|
+if (${LS_STD_BUILD_MODULE})
|
|
|
+ add_library("${MODULE_NAME_EVENT}" MODULE ${SOURCE_FILES_EVENT})
|
|
|
+ set_target_properties("${MODULE_NAME_EVENT}" PROPERTIES DEBUG_POSTFIX "_d")
|
|
|
+endif ()
|
|
|
+
|
|
|
##########################################################
|
|
|
# Build Library (io)
|
|
|
##########################################################
|
|
@@ -338,6 +426,16 @@ if (${LS_STD_BUILD_STATIC})
|
|
|
set_target_properties("${MODULE_NAME_IO}" PROPERTIES DEBUG_POSTFIX "_d")
|
|
|
endif ()
|
|
|
|
|
|
+if (${LS_STD_BUILD_SHARED})
|
|
|
+ add_library("${MODULE_NAME_IO}" SHARED ${SOURCE_FILES_IO})
|
|
|
+ set_target_properties("${MODULE_NAME_IO}" PROPERTIES DEBUG_POSTFIX "_d")
|
|
|
+endif ()
|
|
|
+
|
|
|
+if (${LS_STD_BUILD_MODULE})
|
|
|
+ add_library("${MODULE_NAME_IO}" MODULE ${SOURCE_FILES_IO})
|
|
|
+ set_target_properties("${MODULE_NAME_IO}" PROPERTIES DEBUG_POSTFIX "_d")
|
|
|
+endif ()
|
|
|
+
|
|
|
##########################################################
|
|
|
# Build Library (logic)
|
|
|
##########################################################
|
|
@@ -349,6 +447,16 @@ if (${LS_STD_BUILD_STATIC})
|
|
|
set_target_properties("${MODULE_NAME_LOGIC}" PROPERTIES DEBUG_POSTFIX "_d")
|
|
|
endif ()
|
|
|
|
|
|
+if (${LS_STD_BUILD_SHARED})
|
|
|
+ add_library("${MODULE_NAME_LOGIC}" SHARED ${SOURCE_FILES_LOGIC})
|
|
|
+ set_target_properties("${MODULE_NAME_LOGIC}" PROPERTIES DEBUG_POSTFIX "_d")
|
|
|
+endif ()
|
|
|
+
|
|
|
+if (${LS_STD_BUILD_MODULE})
|
|
|
+ add_library("${MODULE_NAME_LOGIC}" MODULE ${SOURCE_FILES_LOGIC})
|
|
|
+ set_target_properties("${MODULE_NAME_LOGIC}" PROPERTIES DEBUG_POSTFIX "_d")
|
|
|
+endif ()
|
|
|
+
|
|
|
##########################################################
|
|
|
# Build Library (time)
|
|
|
##########################################################
|
|
@@ -360,11 +468,29 @@ if (${LS_STD_BUILD_STATIC})
|
|
|
set_target_properties("${MODULE_NAME_TIME}" PROPERTIES DEBUG_POSTFIX "_d")
|
|
|
endif ()
|
|
|
|
|
|
+if (${LS_STD_BUILD_SHARED})
|
|
|
+ add_library("${MODULE_NAME_TIME}" SHARED ${SOURCE_FILES_TIME})
|
|
|
+ set_target_properties("${MODULE_NAME_TIME}" PROPERTIES DEBUG_POSTFIX "_d")
|
|
|
+endif ()
|
|
|
+
|
|
|
+if (${LS_STD_BUILD_MODULE})
|
|
|
+ add_library("${MODULE_NAME_TIME}" MODULE ${SOURCE_FILES_TIME})
|
|
|
+ set_target_properties("${MODULE_NAME_TIME}" PROPERTIES DEBUG_POSTFIX "_d")
|
|
|
+endif ()
|
|
|
+
|
|
|
+####################################################################################################################
|
|
|
+####################################################################################################################
|
|
|
+####################################################################################################################
|
|
|
+# Test Suite: Static Linking
|
|
|
+####################################################################################################################
|
|
|
+####################################################################################################################
|
|
|
+####################################################################################################################
|
|
|
+
|
|
|
##########################################################
|
|
|
-# Linking (boxing)
|
|
|
+# Static Linking (boxing)
|
|
|
##########################################################
|
|
|
|
|
|
-if (${LS_STD_BUILD_WITH_TESTS})
|
|
|
+if (${LS_STD_BUILD_WITH_TESTS} AND ${LS_STD_BUILD_STATIC})
|
|
|
message("${MODULE_NAME_BOXING}: Linking libraries for test application...")
|
|
|
target_link_libraries(${MODULE_NAME_BOXING}_test
|
|
|
gtest
|
|
@@ -375,10 +501,10 @@ if (${LS_STD_BUILD_WITH_TESTS})
|
|
|
endif ()
|
|
|
|
|
|
##########################################################
|
|
|
-# Linking (core)
|
|
|
+# Static Linking (core)
|
|
|
##########################################################
|
|
|
|
|
|
-if (${LS_STD_BUILD_WITH_TESTS})
|
|
|
+if (${LS_STD_BUILD_WITH_TESTS} AND ${LS_STD_BUILD_STATIC})
|
|
|
message("${MODULE_NAME_CORE}: Linking libraries for test application...")
|
|
|
target_link_libraries(${MODULE_NAME_CORE}_test
|
|
|
gtest
|
|
@@ -388,10 +514,10 @@ if (${LS_STD_BUILD_WITH_TESTS})
|
|
|
endif ()
|
|
|
|
|
|
##########################################################
|
|
|
-# Linking (encoding)
|
|
|
+# Static Linking (encoding)
|
|
|
##########################################################
|
|
|
|
|
|
-if (${LS_STD_BUILD_WITH_TESTS})
|
|
|
+if (${LS_STD_BUILD_WITH_TESTS} AND ${LS_STD_BUILD_STATIC})
|
|
|
message("${MODULE_NAME_ENCODING}: Linking libraries for test application...")
|
|
|
target_link_libraries(${MODULE_NAME_ENCODING}_test
|
|
|
gtest
|
|
@@ -402,10 +528,10 @@ if (${LS_STD_BUILD_WITH_TESTS})
|
|
|
endif ()
|
|
|
|
|
|
##########################################################
|
|
|
-# Linking (event)
|
|
|
+# Static Linking (event)
|
|
|
##########################################################
|
|
|
|
|
|
-if (${LS_STD_BUILD_WITH_TESTS})
|
|
|
+if (${LS_STD_BUILD_WITH_TESTS} AND ${LS_STD_BUILD_STATIC})
|
|
|
message("${MODULE_NAME_EVENT}: Linking libraries for test application...")
|
|
|
target_link_libraries(${MODULE_NAME_EVENT}_test
|
|
|
gtest
|
|
@@ -416,10 +542,10 @@ if (${LS_STD_BUILD_WITH_TESTS})
|
|
|
endif ()
|
|
|
|
|
|
##########################################################
|
|
|
-# Linking (io)
|
|
|
+# Static Linking (io)
|
|
|
##########################################################
|
|
|
|
|
|
-if (${LS_STD_BUILD_WITH_TESTS})
|
|
|
+if (${LS_STD_BUILD_WITH_TESTS} AND ${LS_STD_BUILD_STATIC})
|
|
|
message("${MODULE_NAME_IO}: Linking libraries for test application...")
|
|
|
target_link_libraries(${MODULE_NAME_IO}_test
|
|
|
gtest
|
|
@@ -430,10 +556,10 @@ if (${LS_STD_BUILD_WITH_TESTS})
|
|
|
endif ()
|
|
|
|
|
|
##########################################################
|
|
|
-# Linking (logic)
|
|
|
+# Static Linking (logic)
|
|
|
##########################################################
|
|
|
|
|
|
-if (${LS_STD_BUILD_WITH_TESTS})
|
|
|
+if (${LS_STD_BUILD_WITH_TESTS} AND ${LS_STD_BUILD_STATIC})
|
|
|
message("${MODULE_NAME_LOGIC}: Linking libraries for test application...")
|
|
|
target_link_libraries(${MODULE_NAME_LOGIC}_test
|
|
|
gtest
|
|
@@ -444,10 +570,10 @@ if (${LS_STD_BUILD_WITH_TESTS})
|
|
|
endif ()
|
|
|
|
|
|
##########################################################
|
|
|
-# Linking (time)
|
|
|
+# Static Linking (time)
|
|
|
##########################################################
|
|
|
|
|
|
-if (${LS_STD_BUILD_WITH_TESTS})
|
|
|
+if (${LS_STD_BUILD_WITH_TESTS} AND ${LS_STD_BUILD_STATIC})
|
|
|
message("${MODULE_NAME_TIME}: Linking libraries for test application...")
|
|
|
target_link_libraries(${MODULE_NAME_TIME}_test
|
|
|
gtest
|
|
@@ -458,10 +584,134 @@ if (${LS_STD_BUILD_WITH_TESTS})
|
|
|
endif ()
|
|
|
|
|
|
##########################################################
|
|
|
-# Linking
|
|
|
+# Static Linking (all)
|
|
|
##########################################################
|
|
|
|
|
|
-if (${LS_STD_BUILD_WITH_TESTS})
|
|
|
+if (${LS_STD_BUILD_WITH_TESTS} AND ${LS_STD_BUILD_STATIC})
|
|
|
+ message("${PROJECT_NAME}: Linking libraries for test application...")
|
|
|
+ target_link_libraries(${PROJECT_NAME}_test
|
|
|
+ gtest
|
|
|
+ gmock
|
|
|
+ gtest_main
|
|
|
+ "${MODULE_NAME_CORE}"
|
|
|
+ "${MODULE_NAME_BOXING}"
|
|
|
+ "${MODULE_NAME_ENCODING}"
|
|
|
+ "${MODULE_NAME_EVENT}"
|
|
|
+ "${MODULE_NAME_IO}"
|
|
|
+ "${MODULE_NAME_LOGIC}"
|
|
|
+ "${MODULE_NAME_TIME}")
|
|
|
+endif ()
|
|
|
+
|
|
|
+####################################################################################################################
|
|
|
+####################################################################################################################
|
|
|
+####################################################################################################################
|
|
|
+# Test Suite: Dynamic Linking
|
|
|
+####################################################################################################################
|
|
|
+####################################################################################################################
|
|
|
+####################################################################################################################
|
|
|
+
|
|
|
+##########################################################
|
|
|
+# Dynamic Linking (boxing)
|
|
|
+##########################################################
|
|
|
+
|
|
|
+if (${LS_STD_BUILD_WITH_TESTS} AND ${LS_STD_BUILD_SHARED})
|
|
|
+ message("${MODULE_NAME_BOXING}: Linking libraries for test application...")
|
|
|
+ target_link_libraries(${MODULE_NAME_BOXING}_test
|
|
|
+ gtest
|
|
|
+ gmock
|
|
|
+ gtest_main
|
|
|
+ "${MODULE_NAME_BOXING}"
|
|
|
+ "${MODULE_NAME_CORE}")
|
|
|
+endif ()
|
|
|
+
|
|
|
+##########################################################
|
|
|
+# Dynamic Linking (core)
|
|
|
+##########################################################
|
|
|
+
|
|
|
+if (${LS_STD_BUILD_WITH_TESTS} AND ${LS_STD_BUILD_SHARED})
|
|
|
+ message("${MODULE_NAME_CORE}: Linking libraries for test application...")
|
|
|
+ target_link_libraries(${MODULE_NAME_CORE}_test
|
|
|
+ gtest
|
|
|
+ gmock
|
|
|
+ gtest_main
|
|
|
+ "${MODULE_NAME_CORE}")
|
|
|
+endif ()
|
|
|
+
|
|
|
+##########################################################
|
|
|
+# Dynamic Linking (encoding)
|
|
|
+##########################################################
|
|
|
+
|
|
|
+if (${LS_STD_BUILD_WITH_TESTS} AND ${LS_STD_BUILD_SHARED})
|
|
|
+ message("${MODULE_NAME_ENCODING}: Linking libraries for test application...")
|
|
|
+ target_link_libraries(${MODULE_NAME_ENCODING}_test
|
|
|
+ gtest
|
|
|
+ gmock
|
|
|
+ gtest_main
|
|
|
+ "${MODULE_NAME_ENCODING}"
|
|
|
+ "${MODULE_NAME_CORE}")
|
|
|
+endif ()
|
|
|
+
|
|
|
+##########################################################
|
|
|
+# Dynamic Linking (event)
|
|
|
+##########################################################
|
|
|
+
|
|
|
+if (${LS_STD_BUILD_WITH_TESTS} AND ${LS_STD_BUILD_SHARED})
|
|
|
+ message("${MODULE_NAME_EVENT}: Linking libraries for test application...")
|
|
|
+ target_link_libraries(${MODULE_NAME_EVENT}_test
|
|
|
+ gtest
|
|
|
+ gmock
|
|
|
+ gtest_main
|
|
|
+ "${MODULE_NAME_EVENT}"
|
|
|
+ "${MODULE_NAME_CORE}")
|
|
|
+endif ()
|
|
|
+
|
|
|
+##########################################################
|
|
|
+# Dynamic Linking (io)
|
|
|
+##########################################################
|
|
|
+
|
|
|
+if (${LS_STD_BUILD_WITH_TESTS} AND ${LS_STD_BUILD_SHARED})
|
|
|
+ message("${MODULE_NAME_IO}: Linking libraries for test application...")
|
|
|
+ target_link_libraries(${MODULE_NAME_IO}_test
|
|
|
+ gtest
|
|
|
+ gmock
|
|
|
+ gtest_main
|
|
|
+ "${MODULE_NAME_IO}"
|
|
|
+ "${MODULE_NAME_CORE}")
|
|
|
+endif ()
|
|
|
+
|
|
|
+##########################################################
|
|
|
+# Dynamic Linking (logic)
|
|
|
+##########################################################
|
|
|
+
|
|
|
+if (${LS_STD_BUILD_WITH_TESTS} AND ${LS_STD_BUILD_SHARED})
|
|
|
+ message("${MODULE_NAME_LOGIC}: Linking libraries for test application...")
|
|
|
+ target_link_libraries(${MODULE_NAME_LOGIC}_test
|
|
|
+ gtest
|
|
|
+ gmock
|
|
|
+ gtest_main
|
|
|
+ "${MODULE_NAME_LOGIC}"
|
|
|
+ "${MODULE_NAME_CORE}")
|
|
|
+endif ()
|
|
|
+
|
|
|
+##########################################################
|
|
|
+# Dynamic Linking (time)
|
|
|
+##########################################################
|
|
|
+
|
|
|
+if (${LS_STD_BUILD_WITH_TESTS} AND ${LS_STD_BUILD_SHARED})
|
|
|
+ message("${MODULE_NAME_TIME}: Linking libraries for test application...")
|
|
|
+ target_link_libraries(${MODULE_NAME_TIME}_test
|
|
|
+ gtest
|
|
|
+ gmock
|
|
|
+ gtest_main
|
|
|
+ "${MODULE_NAME_TIME}"
|
|
|
+ "${MODULE_NAME_CORE}")
|
|
|
+endif ()
|
|
|
+
|
|
|
+##########################################################
|
|
|
+# Dynamic Linking (all)
|
|
|
+##########################################################
|
|
|
+
|
|
|
+if (${LS_STD_BUILD_WITH_TESTS} AND ${LS_STD_BUILD_SHARED})
|
|
|
message("${PROJECT_NAME}: Linking libraries for test application...")
|
|
|
target_link_libraries(${PROJECT_NAME}_test
|
|
|
gtest
|