@@ -94,12 +94,17 @@ endif ()
9494# Dynamic linked library for OSX
9595set (DYLD_LIBRARY_PATH ${DYLD_LIBRARY_PATH} )
9696
97+ # Only header files
98+ file (GLOB_RECURSE HEADERS
99+ ./*.h
100+ library.hpp
101+ )
102+
97103# Include all C/C++ and Unix Assembly files
98- file (GLOB_RECURSE SOURCES
104+ file (GLOB_RECURSE SOURCES_C
99105 common/*
100106 crypto/*
101107 datetime/*
102- java/*
103108 math/*
104109 network/*
105110 server/*
@@ -111,17 +116,11 @@ file(GLOB_RECURSE SOURCES
111116 validator/*
112117)
113118
114- file (GLOB_RECURSE HEADERS
115- ./*.h
116- library.hpp
117- )
118-
119- # Include all unit test cases
120- file (GLOB_RECURSE TESTS
119+ # Include all C unit test cases
120+ file (GLOB_RECURSE TESTS_C
121121 common/*_test.c
122122 crypto/*_test.c
123123 datetime/*_test.c
124- java/**/*Test.cpp
125124 math/*_test.c
126125 network/*_test.c
127126 server/*_test.c
@@ -134,16 +133,32 @@ file(GLOB_RECURSE TESTS
134133)
135134
136135# Remove all test files within c files
137- foreach (test ${TESTS} )
138- list (REMOVE_ITEM SOURCES ${test} )
136+ foreach (test_c_file ${TESTS_C} )
137+ list (REMOVE_ITEM SOURCES_C ${test_c_file} )
138+ endforeach ()
139+
140+ # Only C++ unit test files
141+ file (GLOB_RECURSE SOURCES_CPP
142+ java/**/*.cpp
143+ )
144+
145+ # Only C++ unit test files
146+ file (GLOB_RECURSE TESTS_CPP
147+ java/**/*Test.cpp
148+ )
149+
150+ # Remove all test files within cpp files
151+ foreach (test_cpp_file ${TESTS_CPP} )
152+ list (REMOVE_ITEM SOURCES_CPP ${test_cpp_file} )
139153endforeach ()
140154
141155# Create test binary for testing
142- add_executable (${PROJECT_NAME } _test ${TESTS} ${SOURCES} misc/unit-test.c )
156+ add_executable (${PROJECT_NAME } _test_c ${TESTS_C} ${SOURCES_C} misc/unit-test.c )
157+ add_executable (${PROJECT_NAME } _test ${TESTS_C} ${SOURCES_C} ${TESTS_CPP} ${SOURCES_CPP} misc/unit-test.c )
143158
144159# Create native library for static linking
145- add_library (${PROJECT_NAME } _static ${SOURCES } )
146- add_library (${PROJECT_NAME } SHARED ${SOURCES} java/lang/Character/Character_Test.cpp )
160+ add_library (${PROJECT_NAME } _static ${SOURCES_C} ${SOURCES_CPP } )
161+ add_library (${PROJECT_NAME } SHARED ${SOURCES_C} ${SOURCES_CPP} )
147162
148163# Add make test
149164add_custom_target (
@@ -159,8 +174,26 @@ add_custom_target(
159174
160175# Check memory leak
161176add_custom_target (
162- leak
163- COMMAND valgrind --error-exitcode=42 --leak-check=full ./native_test
177+ leak
178+ COMMAND valgrind --track-origins=yes --error-exitcode=2 --show-leak-kinds=all --leak-check=full ./native_test
179+ )
180+
181+ # Check memory leak
182+ add_custom_target (
183+ leak-debug
184+ COMMAND valgrind --gen-suppressions=yes --track-origins=yes --error-exitcode=2 --show-leak-kinds=all --leak-check=full ./native_test
185+ )
186+
187+ # Check memory leak
188+ add_custom_target (
189+ leak-c
190+ COMMAND valgrind --track-origins=yes --error-exitcode=2 --show-leak-kinds=all --leak-check=full ./native_test_c
191+ )
192+
193+ # Check memory leak
194+ add_custom_target (
195+ leak-c-debug
196+ COMMAND valgrind --gen-suppressions=yes --track-origins=yes --error-exitcode=2 --show-leak-kinds=all --leak-check=full ./native_test_c
164197)
165198
166199# Add make installation - install to Unix system
@@ -173,11 +206,13 @@ install(FILES ${HEADERS} DESTINATION include/native)
173206# Link library for OSX and other platform
174207# Darwin platform no need to link realtime library (-lrt)
175208if (${CMAKE_SYSTEM_NAME } MATCHES "Darwin" )
176- target_link_libraries (${PROJECT_NAME } ${CMAKE_THREAD_LIBS_INIT} ${ZLIB_LIBRARIES} ${OPENSSL_LIBRARIES} -lcrypto )
177- target_link_libraries (${PROJECT_NAME } _static ${CMAKE_THREAD_LIBS_INIT} ${ZLIB_LIBRARIES} ${OPENSSL_LIBRARIES} -lcrypto )
178- target_link_libraries (${PROJECT_NAME } _test ${CMAKE_THREAD_LIBS_INIT} ${ZLIB_LIBRARIES} ${OPENSSL_LIBRARIES} -lcrypto )
209+ target_link_libraries (${PROJECT_NAME } ${CMAKE_THREAD_LIBS_INIT} ${ZLIB_LIBRARIES} ${OPENSSL_LIBRARIES} -lcrypto -lm )
210+ target_link_libraries (${PROJECT_NAME } _static ${CMAKE_THREAD_LIBS_INIT} ${ZLIB_LIBRARIES} ${OPENSSL_LIBRARIES} -lcrypto -lm )
211+ target_link_libraries (${PROJECT_NAME } _test ${CMAKE_THREAD_LIBS_INIT} ${ZLIB_LIBRARIES} ${OPENSSL_LIBRARIES} -lcrypto -lm )
212+ target_link_libraries (${PROJECT_NAME } _test_c ${CMAKE_THREAD_LIBS_INIT} ${ZLIB_LIBRARIES} ${OPENSSL_LIBRARIES} -lcrypto -lm )
179213else ()
180- target_link_libraries (${PROJECT_NAME } ${CMAKE_THREAD_LIBS_INIT} ${ZLIB_LIBRARIES} ${OPENSSL_LIBRARIES} -lcrypto -lrt )
181- target_link_libraries (${PROJECT_NAME } _static ${CMAKE_THREAD_LIBS_INIT} ${ZLIB_LIBRARIES} ${OPENSSL_LIBRARIES} -lcrypto -lrt )
182- target_link_libraries (${PROJECT_NAME } _test ${CMAKE_THREAD_LIBS_INIT} ${ZLIB_LIBRARIES} ${OPENSSL_LIBRARIES} -lcrypto -lrt )
214+ target_link_libraries (${PROJECT_NAME } ${CMAKE_THREAD_LIBS_INIT} ${ZLIB_LIBRARIES} ${OPENSSL_LIBRARIES} -lcrypto -lm -lrt )
215+ target_link_libraries (${PROJECT_NAME } _static ${CMAKE_THREAD_LIBS_INIT} ${ZLIB_LIBRARIES} ${OPENSSL_LIBRARIES} -lcrypto -lm -lrt )
216+ target_link_libraries (${PROJECT_NAME } _test ${CMAKE_THREAD_LIBS_INIT} ${ZLIB_LIBRARIES} ${OPENSSL_LIBRARIES} -lcrypto -lm -lrt )
217+ target_link_libraries (${PROJECT_NAME } _test_c ${CMAKE_THREAD_LIBS_INIT} ${ZLIB_LIBRARIES} ${OPENSSL_LIBRARIES} -lcrypto -lm -lrt )
183218endif ()
0 commit comments