Эх сурвалжийг харах

Z991239-385 #comment 添加 spbase 和 libtoolkit 的版本号

gifur 5 жил өмнө
parent
commit
dda49d3e3b

+ 11 - 7
CMakeLists.txt

@@ -72,8 +72,7 @@ message("RVC_VERSION=${RVC_VERSION_FULL}")
 
 message("CMAKE_SYSTEM_NAME: ${CMAKE_SYSTEM_NAME}, CMAKE_GENERATOR: ${CMAKE_GENERATOR}")
 
-configure_file("${PROJECT_SOURCE_DIR}/version.h.in" "${PROJECT_BINARY_DIR}/version.h")
-include_directories(${PROJECT_BINARY_DIR})
+configure_file("${PROJECT_SOURCE_DIR}/version.h.in" "${PROJECT_BINARY_DIR}/spbase/version.h")
 
 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
@@ -151,8 +150,8 @@ elseif(${CMAKE_GENERATOR} MATCHES "Unix*")
 	endif()
 	set(BUILD_TYPE_NAME ${CMAKE_BUILD_TYPE})
 	if(NOT CMAKE_GENERATOR_PLATFORM)
-		message(STATUS "set unix platform default")
-		set(CMAKE_GENERATOR_PLATFORM "${CMAKE_SYSTEM_PROCESSOR}")
+		message(STATUS "set unix platform default: ${CMAKE_SYSTEM_PROCESSOR}")
+		# set(CMAKE_GENERATOR_PLATFORM "${CMAKE_SYSTEM_PROCESSOR}")
 	else()
 		message(STATUS ${CMAKE_GENERATOR_PLATFORM})
 	endif()
@@ -179,6 +178,11 @@ if(MSVC)
 	set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
 endif(MSVC)
 
+# Enable 64bit file support on linux and FreeBSD.
+if("${CMAKE_SYSTEM_NAME}" MATCHES "Linux" OR FREEBSD)
+	add_definitions("-D_FILE_OFFSET_BITS=64")
+endif()
+
 if(CMAKE_COMPILER_IS_GNUCC)
 	if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64" OR CMAKE_SYSTEM_PROCESSOR MATCHES "i686")
 		CHECK_SYMBOL_EXISTS(__x86_64__ "" IS_X86_64)
@@ -187,7 +191,7 @@ if(CMAKE_COMPILER_IS_GNUCC)
 			message(STATUS "set -fPIC")
 		else()
 			set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=i686")
-			message(STATUS "-march=i686")
+			message(STATUS "set -march=i686")
 		endif()
 	else()
 		if(CMAKE_POSITION_INDEPENDENT_CODE)
@@ -401,7 +405,7 @@ endif()
 
 # 
 install(DIRECTORY Common DESTINATION ${RVC_INCLUDE_PATH} COMPONENT headers FILES_MATCHING PATTERN "*.h")
-install(FILES "${PROJECT_BINARY_DIR}/version.h" DESTINATION "${RVC_INCLUDE_PATH}/Common" COMPONENT headers)
+install(FILES "${PROJECT_BINARY_DIR}/spbase/version.h" DESTINATION "${RVC_INCLUDE_PATH}/Common" COMPONENT headers)
 
 if(MSVC)
 	file(GLOB BIN_FILES "${CMAKE_SOURCE_DIR}/addin/din/win/*")
@@ -434,7 +438,7 @@ install(PROGRAMS ${BAT_SCRIPTS} DESTINATION "${PACK_INSTALL_PREFIX_VERSION}" COM
 #appoint the component to install , except header file here.
 GET_CMAKE_PROPERTY(PACK_COMPONENTS_ALL  COMPONENTS)
 FOREACH(item ${PACK_COMPONENTS_ALL})
-message(STATUS "compoent: ${item}")
+message(STATUS "component: ${item}")
 ENDFOREACH()
 list(REMOVE_ITEM PACK_COMPONENTS_ALL  "headers" "tools" "symbols")
 #个人推断:该功能对 Release 版本才有效?

+ 4 - 0
Common/SpBase.h

@@ -247,6 +247,10 @@ public:
 	inline bool IsValid(){return m_nVersion64 >0;}
 };
 
+SPBASE_API void GetLibVersion(CVersion& version);
+
+SPBASE_API LPCSTR GetLibBuildDate();
+
 class SPBASE_API CSmallDateTime
 {
 	DWORD m_nTimeTicks;

+ 25 - 7
libtoolkit/CMakeLists.txt

@@ -1,10 +1,6 @@
 set(MODULE_NAME "libtoolkit")
 set(MODULE_PREFIX "LIBTOOLKIT")
 
-if(MSVC)
-	# add_definitions(-DLIBTOOLKIT_EXPORTS)
-endif(MSVC)
-
 include(CheckLibraryExists)
 check_library_exists (dbghelp UnDecorateSymbolName "" HAVE_DBGHELP)
 
@@ -40,12 +36,32 @@ else()
         win/process_monitor.c)
 endif()
 
+set(RAW_VERSION_STRING "2.0.0-dev5")
+string(STRIP ${RAW_VERSION_STRING} TOOLKIT_VERSION_STRING)
+set(VERSION_REGEX "^.?([0-9]+)\\.([0-9]+)\\.([0-9]+)-?(.*)")
+string(REGEX REPLACE "${VERSION_REGEX}" "\\1" TOOLKIT_VERSION_MAJOR "${TOOLKIT_VERSION_STRING}")
+string(REGEX REPLACE "${VERSION_REGEX}" "\\2" TOOLKIT_VERSION_MINOR "${TOOLKIT_VERSION_STRING}")
+string(REGEX REPLACE "${VERSION_REGEX}" "\\3" TOOLKIT_VERSION_REVISION "${TOOLKIT_VERSION_STRING}")
+string(REGEX REPLACE "${VERSION_REGEX}" "\\4" TOOLKIT_VERSION_SUFFIX "${TOOLKIT_VERSION_STRING}")
+
+set(TOOLKIT_API_VERSION "${TOOLKIT_VERSION_MAJOR}")
+set(TOOLKIT_VERSION "${TOOLKIT_VERSION_MAJOR}.${TOOLKIT_VERSION_MINOR}.${TOOLKIT_VERSION_REVISION}")
+if (TOOLKIT_VERSION_SUFFIX)
+	set(TOOLKIT_VERSION_FULL "${TOOLKIT_VERSION}-${TOOLKIT_VERSION_SUFFIX}")
+else()
+	set(TOOLKIT_VERSION_FULL "${TOOLKIT_VERSION}")
+endif()
+message("TOOLKIT_VERSION=${TOOLKIT_VERSION_FULL}")
+
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/version.h.in ${CMAKE_BINARY_DIR}/toolkit/version.h)
+
+
 # On windows create dll version information.
 if (WIN32)
   set (RC_VERSION_MAJOR ${RVC_VERSION_MAJOR})
-  set (RC_VERSION_MINOR ${RVC_VERSION_MINOR})
-  set (RC_VERSION_BUILD ${RVC_VERSION_REVISION})
-
+  set (RC_VERSION_MINOR ${TOOLKIT_VERSION_MAJOR})
+  set (RC_VERSION_BUILD ${TOOLKIT_VERSION_MINOR})
+  set (RC_VERSION_PATCH ${TOOLKIT_VERSION_REVISION})
   configure_file(
     ${CMAKE_SOURCE_DIR}/Version.rc.in
     ${CMAKE_CURRENT_BINARY_DIR}/version.rc
@@ -57,6 +73,7 @@ endif()
 add_library(${MODULE_NAME} SHARED ${${MODULE_PREFIX}_SRCS})
 
 target_include_directories(${MODULE_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
+target_include_directories(${MODULE_NAME} PRIVATE ${CMAKE_BINARY_DIR}/toolkit)
 
 if(MSVC)
   target_compile_definitions(${MODULE_NAME} PRIVATE  "-DLIBTOOLKIT_EXPORTS")
@@ -76,6 +93,7 @@ if (BUILD_TESTING)
 	add_library(${MODULE_NAME}_a STATIC ${${MODULE_PREFIX}_SRCS})
 	target_link_libraries(${MODULE_NAME}_a ${${MODULE_PREFIX}_LIBS})
     target_include_directories(${MODULE_NAME}_a PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
+    target_include_directories(${MODULE_NAME}_a PRIVATE ${CMAKE_BINARY_DIR}/toolkit)
     target_compile_definitions(${MODULE_NAME}_a PRIVATE "-DTOOLKIT_LINKED_AS_STATIC_LIBRARY")
 	add_subdirectory(test)
 

+ 5 - 0
libtoolkit/toolkit.h

@@ -16,6 +16,8 @@
 extern "C" {
 #endif
 
+
+
     typedef struct tk_process_s tk_process_t;
     typedef struct tk_process_option_s tk_process_option_t;
     typedef void (*tk_exit_cb)(tk_process_t*, int64_t);
@@ -40,6 +42,9 @@ extern "C" {
     TOOLKIT_API void process_close(tk_process_t* proc);
     TOOLKIT_API bool process_exist_or_not(int pid);
 
+	TOOLKIT_API unsigned int toolkit_version(void);
+	TOOLKIT_API const char* toolkit_version_string(void);
+
 #ifdef __cplusplus
 } // extern "C" {
 #endif

+ 16 - 0
libtoolkit/version.c

@@ -0,0 +1,16 @@
+#include "config.h"
+#include "version.h"
+
+#define TOOLKIT_VERSION_HEX  ((TOOLKIT_VERSION_MAJOR << 16) | \
+                         (TOOLKIT_VERSION_MINOR <<  8) | \
+                         (TOOLKIT_VERSION_REVISION))
+
+TOOLKIT_API unsigned int toolkit_version(void)
+{
+	return TOOLKIT_VERSION_HEX;
+}
+
+TOOLKIT_API const char* toolkit_version_string(void)
+{
+	return TOOLKIT_VERSION_FULL;
+}

+ 12 - 0
libtoolkit/version.h.in

@@ -0,0 +1,12 @@
+#ifndef _TOOLKIT_VERSION_H__
+#define _TOOLKIT_VERSION_H__
+
+#define TOOLKIT_VERSION_MAJOR ${TOOLKIT_VERSION_MAJOR}
+#define TOOLKIT_VERSION_MINOR ${TOOLKIT_VERSION_MINOR}
+#define TOOLKIT_VERSION_REVISION ${TOOLKIT_VERSION_REVISION}
+#define TOOLKIT_VERSION_SUFFIX "${TOOLKIT_VERSION_SUFFIX}"
+#define TOOLKIT_API_VERSION "${TOOLKIT_API_VERSION}"
+#define TOOLKIT_VERSION "${TOOLKIT_VERSION}"
+#define TOOLKIT_VERSION_FULL "${TOOLKIT_VERSION_FULL}"
+
+#endif /* _TOOLKIT_VERSION_H__ */

+ 0 - 12
libtoolkit/win.h

@@ -1,12 +0,0 @@
-#ifndef TOOLKIT_WINDOWS_H
-#define TOOLKIT_WINDOWS_H
-
-#pragma once
-
-#include<Windows.h>
-
-typedef HANDLE toolkit_thread_t;
-
-typedef CRITICAL_SECTION toolkit_mutex_t;
-
-#endif //TOOLKIT_WINDOWS_H

+ 2 - 0
spbase/CMakeLists.txt

@@ -40,6 +40,8 @@ if(MSVC)
     )
 endif(MSVC)
 
+include_directories(${PROJECT_BINARY_DIR}/spbase)
+
 if (WIN32)
   set (RC_VERSION_MAJOR ${RVC_VERSION_MAJOR})
   set (RC_VERSION_MINOR ${RVC_VERSION_MINOR})

+ 13 - 0
spbase/SpBase.cpp

@@ -1,4 +1,5 @@
 #include "stdafx.h"
+#include "version.h"
 #include "SpBase.h"
 #include "SpTimer.h"
 #include "SpEntity.h"
@@ -115,6 +116,18 @@ static void DisableSetUnhandledExceptionFilter()
 
 #endif //_WIN32
 
+SPBASE_API void GetLibVersion(CVersion& version)
+{
+	CVersion ver(VER_Major, VER_Minor, VER_Revision, VER_Build);
+	version = ver;
+}
+
+SPBASE_API LPCSTR GetLibBuildDate()
+{
+	static char buildDate[] = __DATE__ " " __TIME__;
+	return buildDate;
+}
+
 SPBASE_API void LogEvent(const SeverityLevelEnum eLevel,DWORD dwUserEventCode,const char *pszMessage)
 {//MAX string len < 1024
 	SpModule *pModule = GetSpModule();

+ 1 - 1
spshell/CMakeLists.txt

@@ -47,7 +47,7 @@ if(MSVC)
 else()
     list(APPEND ${MODULE_PREFIX}_LIBS winpr)
 endif()
-target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})
+target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS} libtoolkit)
 
 # copy_output_on_build(${MODULE_NAME} bin)
 

+ 31 - 2
spshell/spshell.cpp

@@ -13,7 +13,9 @@
 #include "fileutil.h"
 #include "iniutil.h"
 #include "getopt.h"
+#include "toolkit.h"
 #include "SimpleString.h"
+#include "SpBase.h"
 
 #ifdef _WIN32
 #include <io.h>
@@ -754,6 +756,20 @@ void DisplayUsage()
 #endif //_WIN32
 }
 
+const char* GetVersionFullString()
+{
+	static char szVersion[128] = {'\0'};
+	if (strlen(szVersion) == 0) {
+		CVersion spbase_version;
+		GetLibVersion(spbase_version);
+		sprintf_s(szVersion, 128, "spbase version: %s(build date: %s)\n"
+			"libtoolkit version: %s\n", 
+			spbase_version.ToString().GetData(), GetLibBuildDate(),
+			toolkit_version_string());
+	}
+	return szVersion;
+}
+
 sp_cfg_start_args_t* DealWithArgs(int argc, char** argv)
 {
 	int allocedEntitiyLen = 0;
@@ -770,6 +786,7 @@ sp_cfg_start_args_t* DealWithArgs(int argc, char** argv)
 		{"shutdown", no_argument, 0, 'S'},
 		{"kill", no_argument, 0, 'K'},
 		{"help", no_argument, 0, 'H'},
+		{"version", no_argument, 0, 'V'},
 		{0, 0, 0, 0}
 	};
 
@@ -832,15 +849,27 @@ sp_cfg_start_args_t* DealWithArgs(int argc, char** argv)
 		case 'K':
 		{
 			sp_dbg_info("terminate spshell!");
+			char* relate_processes[] = {
 #ifdef _WIN32
-			char* relate_processes[] = { "spshell.exe", "sphost.exe", "guardian.exe" };
+			 "spshell.exe", "sphost.exe", "guardian.exe"
 #else
-			char* relate_processes[] = { "spshell", "sphost", "guardian" };
+			"spshell", "sphost", "guardian"
 #endif //_WIN32
+			};
 			osutil_terminate_related_process(relate_processes, sizeof(relate_processes) / sizeof(relate_processes[0]));
 			exit(0);
 		}
 		break;
+		case 'V':
+		{
+#ifdef _WIN32
+			MessageBoxA(NULL, GetVersionFullString(), "Spshell", MB_OK);
+#else
+			printf(GetVersionFullString());
+#endif //_WIN32
+			exit(0);
+		}
+		break;
 		case 'H':
 		case '?':
 		default:

+ 5 - 0
version.h.in

@@ -1,3 +1,6 @@
+#ifndef _RVC_SPBASE_VERSION_H__
+#define _RVC_SPBASE_VERSION_H__
+
 #pragma once
 
 #define VER_Major             @RVC_VERSION_MAJOR@
@@ -10,3 +13,5 @@
 #define STR_Product		    "${RVC_PRODUCT}"
 #define STR_Copyright		"${RVC_COPYRIGHT}"
 #define STR_Description	    "${RVC_VERSION_FULL}@${RVC_DESCRIPTION}"
+
+#endif //_RVC_SPBASE_VERSION_H__