diff --git a/CMakeLists.txt b/CMakeLists.txt index caef12b..5d5b689 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") message(FATAL_ERROR "Need at least gcc 4.9 to compile.") endif() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14") -elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") +elseif(MSVC) if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19) message(FATAL_ERROR "Visual Studio 2015 or newer is required.") endif() @@ -52,7 +52,7 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" ) elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") set(warning_options -Wall -Wpedantic -Wextra) -elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") +elseif(MSVC) set(warning_options /W4 /wd4503 /wd4512) endif() @@ -60,10 +60,17 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux") set(add_link_deps pthread) endif() +if(MSVC) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /utf-8") +endif() + enable_testing() -add_subdirectory(lint) add_subdirectory(test) add_subdirectory(example) + +if(NOT MSVC) +add_subdirectory(lint) add_subdirectory(language/pl0) add_subdirectory(language/culebra) +endif() \ No newline at end of file diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 0000000..b63b49e --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,16 @@ +clone_depth: 5 + +environment: + matrix: + - CMAKE_GENERATOR: "Visual Studio 14 2015" + CONFIGURATION: Release + - CMAKE_GENERATOR: "Visual Studio 14 2015 Win64" + CONFIGURATION: Release + +build_script: + - mkdir build && cd build + - cmake .. -Wno-dev -G"%CMAKE_GENERATOR%" + - cmake --build . --config %CONFIGURATION% + +test_script: + - ctest -C %CONFIGURATION% -V diff --git a/example/CMakeLists.txt b/example/CMakeLists.txt index 82c0a58..84aff73 100644 --- a/example/CMakeLists.txt +++ b/example/CMakeLists.txt @@ -1,6 +1,11 @@ cmake_minimum_required(VERSION 2.8) include_directories(..) -add_compile_options(${cxx11_options} ${warning_options}) + +if(MSVC) + add_compile_options(${cxx11_options} /W3) +else() + add_compile_options(${cxx11_options}) +endif() add_executable(calc calc.cc) target_link_libraries(calc ${add_link_deps}) diff --git a/language/culebra/CMakeLists.txt b/language/culebra/CMakeLists.txt index 2a19fbf..fc25488 100644 --- a/language/culebra/CMakeLists.txt +++ b/language/culebra/CMakeLists.txt @@ -1,4 +1,11 @@ cmake_minimum_required(VERSION 2.8) include_directories(../..) +if(MSVC) + add_compile_options(${cxx11_options} /W3) + add_definitions(-DUNICODE) +else() + add_compile_options(${cxx11_options}) +endif() + add_executable(culebra main.cc) diff --git a/language/pl0/CMakeLists.txt b/language/pl0/CMakeLists.txt index 0465843..91597ea 100644 --- a/language/pl0/CMakeLists.txt +++ b/language/pl0/CMakeLists.txt @@ -1,4 +1,10 @@ cmake_minimum_required(VERSION 2.8) include_directories(../..) +if(MSVC) + add_compile_options(${cxx11_options} /W0) +else() + add_compile_options(${cxx11_options}) +endif() + add_executable(pl0 pl0.cc) diff --git a/lint/CMakeLists.txt b/lint/CMakeLists.txt index d4e20ca..02bdca9 100644 --- a/lint/CMakeLists.txt +++ b/lint/CMakeLists.txt @@ -1,4 +1,10 @@ cmake_minimum_required(VERSION 2.8) include_directories(..) +if(MSVC) + add_compile_options(${cxx11_options} /W3) +else() + add_compile_options(${cxx11_options}) +endif() + add_executable(peglint peglint.cc server.cc)