|
@@ -4,28 +4,14 @@ SET(CMAKE_C_STANDARD 11)
|
|
|
|
|
|
SET(VMCORE_INCLUDE_DICT
|
|
|
${vmcore_SOURCE_DIR}/include
|
|
|
- ${vmcore_SOURCE_DIR}/parser/include
|
|
|
${vmcore_SOURCE_DIR}/src/include
|
|
|
${vmcore_SOURCE_DIR}/ofunc/include
|
|
|
- ${vmcore_SOURCE_DIR}/md5/include
|
|
|
- ${vmcore_SOURCE_DIR}/ofunc/clib/include
|
|
|
)
|
|
|
|
|
|
SET(VMCORE_SRC_DIR
|
|
|
- ${vmcore_SOURCE_DIR}/memory
|
|
|
${vmcore_SOURCE_DIR}/src
|
|
|
- ${vmcore_SOURCE_DIR}/gc
|
|
|
- ${vmcore_SOURCE_DIR}/file
|
|
|
- ${vmcore_SOURCE_DIR}/parser
|
|
|
- ${vmcore_SOURCE_DIR}/ofunc/src
|
|
|
- ${vmcore_SOURCE_DIR}/ofunc/clib
|
|
|
- ${vmcore_SOURCE_DIR}/signalhandler
|
|
|
- ${vmcore_SOURCE_DIR}/md5
|
|
|
)
|
|
|
|
|
|
-# 添加头文件
|
|
|
-INCLUDE_DIRECTORIES(${VMCORE_INCLUDE_DICT} BEFORE)
|
|
|
-
|
|
|
# 搜索源文件
|
|
|
FOREACH(DIR ${VMCORE_SRC_DIR})
|
|
|
SET(TMP) # 清空
|
|
@@ -34,38 +20,27 @@ FOREACH(DIR ${VMCORE_SRC_DIR})
|
|
|
ENDFOREACH()
|
|
|
MESSAGE(STATUS "vmcore src list = ${SRC}")
|
|
|
|
|
|
-# 处理依赖库
|
|
|
-FIND_PATH(ffih ffi.h REQUIRED)
|
|
|
-INCLUDE_DIRECTORIES(${ffih})
|
|
|
-
|
|
|
-FIND_LIBRARY(libffi NAMES ffi REQUIRED)
|
|
|
-FIND_LIBRARY(libdl NAMES dl REQUIRED)
|
|
|
-
|
|
|
-IF (libffi AND ffih)
|
|
|
- MESSAGE(STATUS "libffi = ${libffi} ffi.h in ${ffih}")
|
|
|
-ELSE()
|
|
|
- MESSAGE(FATAL_ERROR "not found libffi or ffi.h")
|
|
|
-ENDIF()
|
|
|
+# 处理内部依赖库
|
|
|
+ADD_SUBDIRECTORY(${vmcore_SOURCE_DIR}/signalhandler)
|
|
|
+ADD_SUBDIRECTORY(${vmcore_SOURCE_DIR}/parser)
|
|
|
+ADD_SUBDIRECTORY(${vmcore_SOURCE_DIR}/memory)
|
|
|
+ADD_SUBDIRECTORY(${vmcore_SOURCE_DIR}/md5)
|
|
|
+ADD_SUBDIRECTORY(${vmcore_SOURCE_DIR}/gc)
|
|
|
+ADD_SUBDIRECTORY(${vmcore_SOURCE_DIR}/file)
|
|
|
+ADD_SUBDIRECTORY(${vmcore_SOURCE_DIR}/ofunc)
|
|
|
|
|
|
-IF (libdl)
|
|
|
- MESSAGE(STATUS "libdl = ${libdl}")
|
|
|
-ELSE()
|
|
|
- MESSAGE(FATAL_ERROR "not found libdl")
|
|
|
-ENDIF()
|
|
|
-
|
|
|
-IF (PG)
|
|
|
- ADD_COMPILE_OPTIONS(-pg)
|
|
|
- ADD_LINK_OPTIONS(-pg)
|
|
|
- ADD_LIBRARY(vmcore STATIC ${SRC}) ## debug模式下, 以静态库形式链接
|
|
|
-ELSE()
|
|
|
- ADD_LIBRARY(vmcore SHARED ${SRC})
|
|
|
-ENDIF()
|
|
|
-
|
|
|
-TARGET_LINK_LIBRARIES(vmcore ${libffi} ${libdl} m)
|
|
|
-TARGET_INCLUDE_DIRECTORIES(vmcore PRIVATE VMCORE_INCLUDE_DICT)
|
|
|
-SET_TARGET_PROPERTIES(vmcore PROPERTIES
|
|
|
- PUBLIC_HEADER ${vmcore_SOURCE_DIR}/include/virtualmath.h # 设置public的头文件
|
|
|
- OUTPUT_NAME "vmcore" # 设置输出名
|
|
|
- VERSION 3.1 # 设置版本号
|
|
|
- )
|
|
|
-INSTALL(TARGETS vmcore)
|
|
|
+# 添加头文件
|
|
|
+INCLUDE_DIRECTORIES(${VMCORE_INCLUDE_DICT} BEFORE)
|
|
|
+INCLUDE_DIRECTORIES(${OFUNC_INCLUDE_DICT} BEFORE)
|
|
|
+MESSAGE(STATUS "VMCORE_INCLUDE_DICT = ${VMCORE_INCLUDE_DICT}")
|
|
|
+
|
|
|
+# 编译和链接vmcore
|
|
|
+ADD_SUBDIRECTORY(${vmcore_SOURCE_DIR}/src)
|
|
|
+TARGET_LINK_LIBRARIES(vmcore_src vm_signal vm_parser vm_memory vm_md5 vm_gc vm_clib vm_obj vm_file)
|
|
|
+
|
|
|
+# 安装vmlib
|
|
|
+SET(VMLIB_PATH ${CMAKE_INSTALL_PREFIX}/vmlib)
|
|
|
+SET(CLIB_PATH ${CMAKE_INSTALL_PREFIX}/lib)
|
|
|
+INSTALL(DIRECTORY ${vmcore_SOURCE_DIR}/vmlib/ DESTINATION ${VMLIB_PATH})
|
|
|
+INSTALL(CODE "SET(ENV{VIRTUALMATHPATH} \"${VMLIB_PATH},${CLIB_PATH}\")") # 设置系统环境变量(安装时候执行)
|
|
|
+INSTALL(CODE "MESSAGE(STATUS \"Now Install\")") # 安装时运行
|