Update to support building with MinGW #78
We cannot call MinGW a fully supported platform for C++11 yet: - Concurrency is not yet supported by MinGW, so it is disabled by default - A problem in the memory model / library loader is preventing derived type casts from working. This may be able to be worked around, but has not been yet.
This commit is contained in:
parent
47ab27fd11
commit
691e002f90
@ -2,7 +2,13 @@ cmake_minimum_required(VERSION 2.8)
|
|||||||
|
|
||||||
project(chaiscript)
|
project(chaiscript)
|
||||||
|
|
||||||
option(MULTITHREAD_SUPPORT_ENABLED "Multithreaded Support Enabled" TRUE)
|
# MINGW does not yet support C++11's concurrency features
|
||||||
|
if (MINGW)
|
||||||
|
option(MULTITHREAD_SUPPORT_ENABLED "Multithreaded Support Enabled" FALSE)
|
||||||
|
else()
|
||||||
|
option(MULTITHREAD_SUPPORT_ENABLED "Multithreaded Support Enabled" TRUE)
|
||||||
|
endif()
|
||||||
|
|
||||||
option(BUILD_MODULES "Build Extra Modules (stl, reflection)" TRUE)
|
option(BUILD_MODULES "Build Extra Modules (stl, reflection)" TRUE)
|
||||||
option(BUILD_SAMPLES "Build Samples Folder" FALSE)
|
option(BUILD_SAMPLES "Build Samples Folder" FALSE)
|
||||||
|
|
||||||
@ -39,7 +45,9 @@ include(CPack)
|
|||||||
|
|
||||||
include(cmake/CheckCXX11Features.cmake)
|
include(cmake/CheckCXX11Features.cmake)
|
||||||
|
|
||||||
find_library(READLINE_LIBRARY NAMES readline PATH /usr/lib /usr/local/lib /opt/local/lib)
|
if(NOT MINGW)
|
||||||
|
find_library(READLINE_LIBRARY NAMES readline PATH /usr/lib /usr/local/lib /opt/local/lib)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(HAS_CXX11_VARIADIC_TEMPLATES)
|
if(HAS_CXX11_VARIADIC_TEMPLATES)
|
||||||
message(STATUS "Variadic Template support detected")
|
message(STATUS "Variadic Template support detected")
|
||||||
@ -68,7 +76,7 @@ if(MSVC)
|
|||||||
endif()
|
endif()
|
||||||
else()
|
else()
|
||||||
add_definitions(-Wall -Wextra -Wshadow -pedantic -std=c++0x)
|
add_definitions(-Wall -Wextra -Wshadow -pedantic -std=c++0x)
|
||||||
|
|
||||||
if (APPLE)
|
if (APPLE)
|
||||||
add_definitions(-Wno-sign-compare)
|
add_definitions(-Wno-sign-compare)
|
||||||
endif()
|
endif()
|
||||||
@ -88,6 +96,12 @@ else()
|
|||||||
set (EXTRA_LINKER_FLAGS )
|
set (EXTRA_LINKER_FLAGS )
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# limitations in MinGW require us to make an optimized build
|
||||||
|
# for the sake of object sizes or something
|
||||||
|
if (MINGW)
|
||||||
|
add_definitions(-O3)
|
||||||
|
endif()
|
||||||
|
|
||||||
include_directories(include)
|
include_directories(include)
|
||||||
|
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
// http://www.chaiscript.com
|
// http://www.chaiscript.com
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <ctime>
|
||||||
|
|
||||||
#include <chaiscript/chaiscript.hpp>
|
#include <chaiscript/chaiscript.hpp>
|
||||||
#include <chaiscript/dispatchkit/bootstrap_stl.hpp>
|
#include <chaiscript/dispatchkit/bootstrap_stl.hpp>
|
||||||
|
14
src/main.cpp
14
src/main.cpp
@ -15,16 +15,20 @@
|
|||||||
#include <readline/readline.h>
|
#include <readline/readline.h>
|
||||||
#include <readline/history.h>
|
#include <readline/history.h>
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
char *mystrdup (const char *s) {
|
||||||
|
char *d = static_cast<char*>(malloc (strlen (s) + 1)); // Space for length plus nul
|
||||||
|
if (d == nullptr) return nullptr; // No memory
|
||||||
|
strcpy (d,s); // Copy the characters
|
||||||
|
return d; // Return the new string
|
||||||
|
}
|
||||||
|
|
||||||
char* readline(const char* p)
|
char* readline(const char* p)
|
||||||
{
|
{
|
||||||
std::string retval;
|
std::string retval;
|
||||||
std::cout << p ;
|
std::cout << p ;
|
||||||
std::getline(std::cin, retval);
|
std::getline(std::cin, retval);
|
||||||
#ifdef CHAISCRIPT_MSVC
|
return std::cin.eof() ? NULL : mystrdup(retval.c_str());
|
||||||
return std::cin.eof() ? NULL : _strdup(retval.c_str());
|
|
||||||
#else
|
|
||||||
return std::cin.eof() ? NULL : strdup(retval.c_str());
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
void add_history(const char*){}
|
void add_history(const char*){}
|
||||||
void using_history(){}
|
void using_history(){}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
// Tests to make sure that the order in which function dispatches occur is correct
|
// Tests to make sure that the order in which function dispatches occur is correct
|
||||||
|
|
||||||
#include <chaiscript/dispatchkit/type_info.hpp>
|
#include <chaiscript/dispatchkit/type_info.hpp>
|
||||||
|
#include <cstdlib>
|
||||||
|
|
||||||
void test_type(const chaiscript::Type_Info &ti, bool t_is_const, bool t_is_pointer, bool t_is_reference, bool t_is_void,
|
void test_type(const chaiscript::Type_Info &ti, bool t_is_const, bool t_is_pointer, bool t_is_reference, bool t_is_void,
|
||||||
bool t_is_undef)
|
bool t_is_undef)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user