mirror of
https://github.com/ChaiScript/ChaiScript.git
synced 2026-02-09 11:16:48 +08:00
Merge 8a6d76c7dbfdb0c936e477741947dece4712e9af into 00c8bf49737082e934a41d36a65743ca7b53cacd
This commit is contained in:
commit
368ca72372
@ -39,6 +39,38 @@ set(CPACK_RPM_PACKAGE_GROUP "Programming")
|
|||||||
|
|
||||||
set(CHAI_VERSION ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH})
|
set(CHAI_VERSION ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH})
|
||||||
|
|
||||||
|
|
||||||
|
if (${CMAKE_CL_64})
|
||||||
|
set(PLATFORM_NAME "x64")
|
||||||
|
else()
|
||||||
|
if(MSVC)
|
||||||
|
set(PLATFORM_NAME "Win32")
|
||||||
|
else()
|
||||||
|
set(PLATFORM_NAME "x86")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(MSVC)
|
||||||
|
set(CHAI_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/output/${PLATFORM_NAME}")
|
||||||
|
else()
|
||||||
|
set(CHAI_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/output")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CHAI_OUTPUT_DIRECTORY}")
|
||||||
|
set(CMAKE_PDB_OUTPUT_DIRECTORY "${CHAI_OUTPUT_DIRECTORY}")
|
||||||
|
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CHAI_OUTPUT_DIRECTORY}")
|
||||||
|
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CHAI_OUTPUT_DIRECTORY}")
|
||||||
|
|
||||||
|
if(MSVC)
|
||||||
|
set(CHAI_INSTALL_BIN "bin/${PLATFORM_NAME}/${CMAKE_BUILD_TYPE}")
|
||||||
|
set(CHAI_INSTALL_LIB "lib/${PLATFORM_NAME}/${CMAKE_BUILD_TYPE}")
|
||||||
|
set(CHAI_INSTALL_PKGCONFIG "lib/${PLATFORM_NAME}/${CMAKE_BUILD_TYPE}/pkgconfig")
|
||||||
|
else()
|
||||||
|
set(CHAI_INSTALL_BIN "bin")
|
||||||
|
set(CHAI_INSTALL_LIB "lib/chaiscript")
|
||||||
|
set(CHAI_INSTALL_PKGCONFIG "lib/pkgconfig")
|
||||||
|
endif()
|
||||||
|
|
||||||
configure_file(Doxyfile.in ${CMAKE_BINARY_DIR}/Doxyfile)
|
configure_file(Doxyfile.in ${CMAKE_BINARY_DIR}/Doxyfile)
|
||||||
|
|
||||||
include(CTest)
|
include(CTest)
|
||||||
@ -85,8 +117,22 @@ else()
|
|||||||
SET(CPP11_FLAG "-std=c++11")
|
SET(CPP11_FLAG "-std=c++11")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
IF(MSVC)
|
||||||
|
# force warning level 4
|
||||||
|
#
|
||||||
|
FOREACH(lang C CXX)
|
||||||
|
IF("${CMAKE_${lang}_FLAGS}" MATCHES "/W[1-3]")
|
||||||
|
STRING(REGEX REPLACE "/W[1-3]" "/W4" CMAKE_${lang}_FLAGS
|
||||||
|
"${CMAKE_${lang}_FLAGS}")
|
||||||
|
ELSE("${CMAKE_${lang}_FLAGS}" MATCHES "/W[1-3]")
|
||||||
|
SET(CMAKE_${lang}_FLAGS "${CMAKE_${lang}_FLAGS} /W4")
|
||||||
|
ENDIF("${CMAKE_${lang}_FLAGS}" MATCHES "/W[1-3]")
|
||||||
|
ENDFOREACH(lang)
|
||||||
|
ENDIF(MSVC)
|
||||||
|
|
||||||
|
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
add_definitions(/W4)
|
|
||||||
add_definitions(/bigobj)
|
add_definitions(/bigobj)
|
||||||
# Note on MSVC compiler flags.
|
# Note on MSVC compiler flags.
|
||||||
# The code base selective disables warnings as necessary when the compiler is complaining too much
|
# The code base selective disables warnings as necessary when the compiler is complaining too much
|
||||||
@ -164,6 +210,7 @@ list(APPEND LIBS ${READLINE_LIB})
|
|||||||
|
|
||||||
add_library(chaiscript_stdlib MODULE src/chaiscript_stdlib.cpp)
|
add_library(chaiscript_stdlib MODULE src/chaiscript_stdlib.cpp)
|
||||||
target_link_libraries(chaiscript_stdlib ${LIBS} ${EXTRA_LINKER_FLAGS} ${CMAKE_THREAD_LIBS_INIT})
|
target_link_libraries(chaiscript_stdlib ${LIBS} ${EXTRA_LINKER_FLAGS} ${CMAKE_THREAD_LIBS_INIT})
|
||||||
|
set(MODULES ${MODULES} chaiscript_stdlib)
|
||||||
|
|
||||||
add_executable(chai src/main.cpp ${Chai_INCLUDES})
|
add_executable(chai src/main.cpp ${Chai_INCLUDES})
|
||||||
target_link_libraries(chai ${LIBS} ${EXTRA_LINKER_FLAGS})
|
target_link_libraries(chai ${LIBS} ${EXTRA_LINKER_FLAGS})
|
||||||
@ -180,10 +227,11 @@ endif()
|
|||||||
if (BUILD_MODULES)
|
if (BUILD_MODULES)
|
||||||
add_library(stl_extra MODULE src/stl_extra.cpp)
|
add_library(stl_extra MODULE src/stl_extra.cpp)
|
||||||
target_link_libraries(stl_extra ${LIBS} ${EXTRA_LINKER_FLAGS})
|
target_link_libraries(stl_extra ${LIBS} ${EXTRA_LINKER_FLAGS})
|
||||||
|
set(MODULES ${MODULES} stl_extra)
|
||||||
|
|
||||||
add_library(reflection MODULE src/reflection.cpp)
|
add_library(reflection MODULE src/reflection.cpp)
|
||||||
target_link_libraries(reflection ${LIBS} ${EXTRA_LINKER_FLAGS})
|
target_link_libraries(reflection ${LIBS} ${EXTRA_LINKER_FLAGS})
|
||||||
set(MODULES stl_extra reflection)
|
set(MODULES ${MODULES} reflection)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
file(GLOB UNIT_TESTS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/unittests/ ${CMAKE_CURRENT_SOURCE_DIR}/unittests/*.chai ${CMAKE_CURRENT_SOURCE_DIR}/unittests/3.x/*.chai)
|
file(GLOB UNIT_TESTS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/unittests/ ${CMAKE_CURRENT_SOURCE_DIR}/unittests/*.chai ${CMAKE_CURRENT_SOURCE_DIR}/unittests/3.x/*.chai)
|
||||||
@ -195,13 +243,13 @@ if(BUILD_TESTING)
|
|||||||
|
|
||||||
foreach(filename ${UNIT_TESTS})
|
foreach(filename ${UNIT_TESTS})
|
||||||
message(STATUS "Adding test ${filename}")
|
message(STATUS "Adding test ${filename}")
|
||||||
add_test(${filename} chai ${CMAKE_CURRENT_SOURCE_DIR}/unittests/unit_test.inc ${CMAKE_CURRENT_SOURCE_DIR}/unittests/${filename})
|
add_test(${filename} ${CHAI_OUTPUT_DIRECTORY}/chai ${CMAKE_CURRENT_SOURCE_DIR}/unittests/unit_test.inc ${CMAKE_CURRENT_SOURCE_DIR}/unittests/${filename})
|
||||||
endforeach(filename)
|
endforeach(filename)
|
||||||
|
|
||||||
set_property(TEST ${UNIT_TESTS}
|
set_property(TEST ${UNIT_TESTS}
|
||||||
PROPERTY ENVIRONMENT
|
PROPERTY ENVIRONMENT
|
||||||
"CHAI_USE_PATH=${CMAKE_CURRENT_SOURCE_DIR}/unittests/"
|
"CHAI_USE_PATH=${CMAKE_CURRENT_SOURCE_DIR}/unittests/"
|
||||||
"CHAI_MODULE_PATH=${CMAKE_CURRENT_BINARY_DIR}/"
|
"CHAI_MODULE_PATH=${CHAI_OUTPUT_DIRECTORY}/"
|
||||||
)
|
)
|
||||||
|
|
||||||
if (NOT UNIT_TEST_LIGHT)
|
if (NOT UNIT_TEST_LIGHT)
|
||||||
@ -285,7 +333,7 @@ if(BUILD_TESTING)
|
|||||||
set_property(TEST Multithreaded_Test
|
set_property(TEST Multithreaded_Test
|
||||||
PROPERTY ENVIRONMENT
|
PROPERTY ENVIRONMENT
|
||||||
"CHAI_USE_PATH=${CMAKE_CURRENT_SOURCE_DIR}/unittests/"
|
"CHAI_USE_PATH=${CMAKE_CURRENT_SOURCE_DIR}/unittests/"
|
||||||
"CHAI_MODULE_PATH=${CMAKE_CURRENT_BINARY_DIR}/"
|
"CHAI_MODULE_PATH=${CHAI_OUTPUT_DIRECTORY}/"
|
||||||
)
|
)
|
||||||
|
|
||||||
endif()
|
endif()
|
||||||
@ -298,12 +346,30 @@ if(BUILD_TESTING)
|
|||||||
|
|
||||||
add_library(test_module MODULE src/test_module.cpp)
|
add_library(test_module MODULE src/test_module.cpp)
|
||||||
target_link_libraries(test_module ${LIBS} ${EXTRA_LINKER_FLAGS})
|
target_link_libraries(test_module ${LIBS} ${EXTRA_LINKER_FLAGS})
|
||||||
|
set(MODULES ${MODULES} test_module)
|
||||||
|
|
||||||
install(TARGETS test_module RUNTIME DESTINATION bin LIBRARY DESTINATION lib/chaiscript)
|
install(TARGETS test_module RUNTIME DESTINATION ${CHAI_INSTALL_BIN} LIBRARY DESTINATION ${CHAI_INSTALL_LIB})
|
||||||
endif()
|
endif()
|
||||||
endif(BUILD_TESTING)
|
endif(BUILD_TESTING)
|
||||||
|
|
||||||
install(TARGETS chai chaiscript_stdlib ${MODULES} RUNTIME DESTINATION bin LIBRARY DESTINATION lib/chaiscript )
|
install(TARGETS chai ${MODULES} RUNTIME DESTINATION ${CHAI_INSTALL_BIN} LIBRARY DESTINATION ${CHAI_INSTALL_LIB})
|
||||||
|
|
||||||
|
IF(MSVC)
|
||||||
|
FOREACH (MODULE ${MODULES})
|
||||||
|
|
||||||
|
INSTALL(
|
||||||
|
FILES ${CHAI_OUTPUT_DIRECTORY}/${MODULE}.exp ${CHAI_OUTPUT_DIRECTORY}/${MODULE}.lib
|
||||||
|
DESTINATION ${CHAI_INSTALL_LIB}
|
||||||
|
)
|
||||||
|
|
||||||
|
INSTALL(
|
||||||
|
FILES ${CHAI_OUTPUT_DIRECTORY}/${MODULE}.ilk ${CHAI_OUTPUT_DIRECTORY}/${MODULE}.pdb
|
||||||
|
DESTINATION ${CHAI_INSTALL_LIB}
|
||||||
|
CONFIGURATIONS Debug
|
||||||
|
)
|
||||||
|
|
||||||
|
ENDFOREACH(MODULE)
|
||||||
|
ENDIF(MSVC)
|
||||||
|
|
||||||
install(DIRECTORY include/chaiscript DESTINATION include
|
install(DIRECTORY include/chaiscript DESTINATION include
|
||||||
PATTERN "*.hpp"
|
PATTERN "*.hpp"
|
||||||
@ -323,6 +389,6 @@ install(DIRECTORY samples DESTINATION share/chaiscript
|
|||||||
PATTERN "*~" EXCLUDE)
|
PATTERN "*~" EXCLUDE)
|
||||||
|
|
||||||
configure_file(contrib/pkgconfig/chaiscript.pc.in lib/pkgconfig/chaiscript.pc @ONLY)
|
configure_file(contrib/pkgconfig/chaiscript.pc.in lib/pkgconfig/chaiscript.pc @ONLY)
|
||||||
install(FILES "${chaiscript_BINARY_DIR}/lib/pkgconfig/chaiscript.pc"
|
install(FILES "${chaiscript_BINARY_DIR}/lib/pkgconfig/chaiscript.pc" DESTINATION ${CHAI_INSTALL_PKGCONFIG})
|
||||||
DESTINATION lib/pkgconfig)
|
|
||||||
|
|
||||||
|
|||||||
123
build_chaiscript_windows.bat
Normal file
123
build_chaiscript_windows.bat
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
@ECHO OFF
|
||||||
|
:: Make Chaiscript for Windows.
|
||||||
|
ECHO.
|
||||||
|
|
||||||
|
:start
|
||||||
|
SET START_DIR="%cd%"
|
||||||
|
cd /D %~dp0
|
||||||
|
cd
|
||||||
|
goto :welcome
|
||||||
|
|
||||||
|
:welcome
|
||||||
|
echo:
|
||||||
|
echo ** Chaiscript Build Script **
|
||||||
|
echo:
|
||||||
|
echo this script was written by da2ce7
|
||||||
|
echo please feel free to report bugs on github.
|
||||||
|
echo:
|
||||||
|
goto :define
|
||||||
|
|
||||||
|
:define
|
||||||
|
|
||||||
|
set "ifErr=set foundErr=1&(if errorlevel 0 if not errorlevel 1 set foundErr=)&if defined foundErr"
|
||||||
|
|
||||||
|
SET MSVC_BAT="C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"
|
||||||
|
SET CMAKE_EXE=cmake.exe
|
||||||
|
SET NMAKE_EXE=nmake.exe
|
||||||
|
SET BUILD_DIR=build
|
||||||
|
SET INSTALL_DIR=install
|
||||||
|
|
||||||
|
|
||||||
|
SET C_GEN=-G "NMake Makefiles"
|
||||||
|
SET C_INSTALL_PATH=-DCMAKE_INSTALL_PREFIX:PATH="../%INSTALL_DIR%"
|
||||||
|
SET C_TYPE_DEF=-DCMAKE_BUILD_TYPE:STRING
|
||||||
|
|
||||||
|
goto :print_defines
|
||||||
|
|
||||||
|
:print_defines
|
||||||
|
echo:
|
||||||
|
echo **************** SET ****************
|
||||||
|
echo MSVC_BAT = %MSVC_BAT%
|
||||||
|
echo CMAKE_EXE = %CMAKE_EXE%
|
||||||
|
echo NMAKE_EXE = %NMAKE_EXE%
|
||||||
|
echo C_GEN = %C_GEN%
|
||||||
|
echo C_INSTALL_PATH = %C_INSTALL_PATH%
|
||||||
|
echo C_TYPE_DEF = %C_TYPE_DEF%
|
||||||
|
echo **************** END ****************
|
||||||
|
pause
|
||||||
|
goto :check_cmake
|
||||||
|
|
||||||
|
:check_cmake
|
||||||
|
echo:
|
||||||
|
echo: checking For cmake:
|
||||||
|
%CMAKE_EXE% --version >nul 2>&1 && (
|
||||||
|
echo: found: %CMAKE_EXE%
|
||||||
|
) || (
|
||||||
|
echo: cannot find: %CMAKE_EXE%
|
||||||
|
echo: please install: %CMAKE_EXE%
|
||||||
|
goto :finish
|
||||||
|
)
|
||||||
|
goto :clean
|
||||||
|
|
||||||
|
:clean
|
||||||
|
echo:
|
||||||
|
echo: cleanup old install files...
|
||||||
|
cd /D %~dp0
|
||||||
|
IF EXIST "%INSTALL_DIR%" RMDIR /S/Q "%INSTALL_DIR%"
|
||||||
|
goto :core
|
||||||
|
|
||||||
|
:core
|
||||||
|
echo:
|
||||||
|
echo: Build Chaiscript
|
||||||
|
echo:
|
||||||
|
for %%a IN (x86_amd64 x86) DO (
|
||||||
|
for %%b IN (debug release) DO (
|
||||||
|
echo:
|
||||||
|
echo: Building Chaiscript for: %%a in %%b mode.
|
||||||
|
echo:
|
||||||
|
|
||||||
|
echo: running %MSVC_BAT% %%a
|
||||||
|
%MSVC_BAT% %%a
|
||||||
|
|
||||||
|
IF EXIST "%BUILD_DIR%" RMDIR /S/Q "%BUILD_DIR%"
|
||||||
|
|
||||||
|
echo: "mkdir build && cd build"
|
||||||
|
mkdir build && cd build
|
||||||
|
|
||||||
|
echo: %CMAKE_EXE% %C_GEN% %C_INSTALL_PATH% %C_TYPE_DEF%="%%b" ..
|
||||||
|
%CMAKE_EXE% %C_GEN% %C_INSTALL_PATH% %C_TYPE_DEF%="%%b" ..
|
||||||
|
@ECHO OFF
|
||||||
|
|
||||||
|
for %%c IN (ALL TEST INSTALL PACKAGE CLEAN) DO (
|
||||||
|
|
||||||
|
IF NOT %%c == PACKAGE (
|
||||||
|
%NMAKE_EXE% %%c
|
||||||
|
)
|
||||||
|
IF %%c == PACKAGE IF %%b == release IF %%a == x86 (
|
||||||
|
%NMAKE_EXE% %%c
|
||||||
|
echo:
|
||||||
|
echo: Package file Created! Please copy from build folder.
|
||||||
|
echo: Build Folder deleted in next step!
|
||||||
|
echo:
|
||||||
|
pause
|
||||||
|
)
|
||||||
|
)
|
||||||
|
cd /D %~dp0
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
IF EXIST "%BUILD_DIR%" RMDIR /S/Q "%BUILD_DIR%"
|
||||||
|
|
||||||
|
goto :done
|
||||||
|
|
||||||
|
|
||||||
|
:done
|
||||||
|
ECHO:
|
||||||
|
ECHO DONE!
|
||||||
|
ECHO:
|
||||||
|
goto :finish
|
||||||
|
|
||||||
|
:finish
|
||||||
|
cd /D %START_DIR%
|
||||||
|
pause
|
||||||
|
goto :eof
|
||||||
Loading…
x
Reference in New Issue
Block a user