From 91627403a29ca88e010ea93f209b0a649fac3215 Mon Sep 17 00:00:00 2001
From: ilor <kailoran@gmail.com>
Date: Tue, 2 Oct 2012 19:41:34 +0200
Subject: [PATCH] mingw fixes

---
 CMakeLists.txt                 | 18 +++++++++++++-----
 CMakeScripts/FindCorpus2.cmake |  8 ++++----
 libmwereader/CMakeLists.txt    | 20 +++++++++++++++-----
 libwccl/CMakeLists.txt         | 10 ++++++----
 wccl-apps/CMakeLists.txt       |  4 ++--
 wccl-apps/wccl-rules.cpp       |  4 ++++
 6 files changed, 44 insertions(+), 20 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index f32663e..b2fa6f0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -19,6 +19,12 @@ ENDIF(NOT CMAKE_BUILD_TYPE)
 
 set(WCCL_BUILD_SWIG True CACHE BOOL "Build SWIG Python wrappers" FORCE)
 
+if(UNIX)
+	set(CFLAG_ANSI "-ansi")
+else()
+	set(CFLAG_ANSI "")
+endif(UNIX)
+
 if(CMAKE_COMPILER_IS_GNUCXX)
 	# Set our own default flags at first run.
 	if(NOT CONFIGURED)
@@ -28,17 +34,17 @@ if(CMAKE_COMPILER_IS_GNUCXX)
 			set(STRICT_FLAGS "")
 		endif(ENABLE_STRICT_COMPILATION)
 
-		set(CMAKE_C_FLAGS "-W -Wall -ansi $ENV{CFLAGS}" 
+		set(CMAKE_C_FLAGS "-W -Wall ${CFLAG_ANSI} $ENV{CFLAGS}" 
 			CACHE STRING "Flags used by the C compiler during normal builds."
 			FORCE)
-		set(CMAKE_C_FLAGS_DEBUG "-O0 -DDEBUG -ggdb3 -W -Wall -ansi $ENV{CFLAGS}"
+		set(CMAKE_C_FLAGS_DEBUG "-O0 -DDEBUG -ggdb3 -W -Wall ${CFLAG_ANSI} $ENV{CFLAGS}"
 			CACHE STRING "Flags used by the C compiler during debug builds."
 			FORCE)
 
-		set(CMAKE_CXX_FLAGS "-W -Wall -ansi ${STRICT_FLAGS} $ENV{CXXFLAGS}"
+		set(CMAKE_CXX_FLAGS "-W -Wall ${CFLAG_ANSI} ${STRICT_FLAGS} $ENV{CXXFLAGS}"
 			CACHE STRING "Flags used by the CXX compiler during normal builds."
 			FORCE)
-		set(CMAKE_CXX_FLAGS_DEBUG "-O0 -DDEBUG -ggdb3 -W -Wall -ansi ${STRICT_FLAGS} $ENV{CXXFLAGS}"
+		set(CMAKE_CXX_FLAGS_DEBUG "-O0 -DDEBUG -ggdb3 -W -Wall ${CFLAG_ANSI} ${STRICT_FLAGS} $ENV{CXXFLAGS}"
 			CACHE STRING "Flags used by the CXX compiler during debug builds."
 			FORCE)
                 set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g -fno-omit-frame-pointer" 
@@ -62,7 +68,9 @@ endif(MSVC OR BORLAND)
 
 add_subdirectory(libwccl)
 add_subdirectory(wccl-apps)
-add_subdirectory(tests)
+if(UNIX)
+	add_subdirectory(tests)
+endif(UNIX)
 add_subdirectory(libmwereader)
 
 if(WCCL_BUILD_SWIG)
diff --git a/CMakeScripts/FindCorpus2.cmake b/CMakeScripts/FindCorpus2.cmake
index 0ea7485..8d4b711 100644
--- a/CMakeScripts/FindCorpus2.cmake
+++ b/CMakeScripts/FindCorpus2.cmake
@@ -1,9 +1,11 @@
-FIND_PATH(Corpus2_INCLUDE_DIR token.h /usr/include/libcorpus2 /usr/local/include/libcorpus2 )
+FIND_PATH(Corpus2_INCLUDE_DIR libcorpus2/token.h /usr/include /usr/local/include )
 
 FIND_LIBRARY(Corpus2_LIBRARY NAMES corpus2 PATH /usr/lib /usr/local/lib) 
+
 MARK_AS_ADVANCED(Corpus2_LIBRARY)
 MARK_AS_ADVANCED(Corpus2_INCLUDE_DIR)
 
+
 IF (Corpus2_INCLUDE_DIR AND Corpus2_LIBRARY)
    SET(Corpus2_FOUND TRUE)
 ENDIF (Corpus2_INCLUDE_DIR AND Corpus2_LIBRARY)
@@ -11,8 +13,7 @@ ENDIF (Corpus2_INCLUDE_DIR AND Corpus2_LIBRARY)
 
 IF (Corpus2_FOUND)
    set(Corpus2_VERSION 0.0.0)
-   set(Corpus2_LIBRARIES ${Corpus2_LIBRARY})
-   FIND_FILE(_Corpus2_VERSION_FILE version.h ${Corpus2_INCLUDE_DIR})
+   FIND_FILE(_Corpus2_VERSION_FILE libcorpus2/version.h ${Corpus2_INCLUDE_DIR})
    MARK_AS_ADVANCED(_Corpus2_VERSION_FILE)
    IF (_Corpus2_VERSION_FILE)
       FILE(READ ${_Corpus2_VERSION_FILE} _Corpus2_VERSION_CONENTS)
@@ -21,7 +22,6 @@ IF (Corpus2_FOUND)
    IF (Corpus2_FIND_VERSION)
       IF (Corpus2_VERSION VERSION_LESS Corpus2_FIND_VERSION)
          IF (Corpus2_FIND_REQUIRED)
-            MESSAGE(${_Corpus2_VERSION_FILE})
             MESSAGE(FATAL_ERROR "Corpus2 version too old: ${Corpus2_VERSION}, requested >= ${Corpus2_FIND_VERSION}")
          ELSE (Corpus2_FIND_REQUIRED)
             IF (NOT Corpus2_FIND_QUIETLY)
diff --git a/libmwereader/CMakeLists.txt b/libmwereader/CMakeLists.txt
index da835e2..093b88c 100644
--- a/libmwereader/CMakeLists.txt
+++ b/libmwereader/CMakeLists.txt
@@ -5,12 +5,16 @@ set(libmwereader_minor 1)
 
 
 find_package(Corpus2 1.0.9 REQUIRED)
-set(LIBS ${LIBS} ${Corpus2_LIBRARIES})
+include_directories(${Corpus2_INCLUDE_DIR})
+link_directories(${Corpus2_LIBRARY_DIR})
+set(LIBS ${LIBS} ${Corpus2_LIBRARY})
 
 find_package(PwrUtils 1.0.1 REQUIRED)
+include_directories(${PwrUtils_INCLUDE_DIR})
 set(LIBS ${LIBS} ${PwrUtils_LIBRARY})
 
 link_directories(${Boost_LIBRARY_DIRS})
+include_directories(${Boost_INCLUDE_DIR})
 set(LIBS ${LIBS} ${Boost_LIBRARIES})
 
 find_package(ICU REQUIRED)
@@ -25,7 +29,11 @@ include_directories(${LibXML++_INCLUDE_DIRS})
 link_directories(${LibXML++_LIBRARY_DIRS})
 set(LIBS ${LIBS} ${LibXML++_LIBRARIES})
 
-set(LIBS ${LIBS} corpus2 wccl antlr-pic)
+if(UNIX)
+	set(LIBS ${LIBS} wccl antlr-pic)
+else()
+	set(LIBS ${LIBS} wccl antlr)
+endif()
 
 add_library(corpus2_mwereader SHARED mwereader.cpp mwe.cpp mweparser.cpp)
 
@@ -35,15 +43,17 @@ set_target_properties(corpus2_mwereader PROPERTIES
 	VERSION "${libmwereader_major}.${libmwereader_minor}"
 	SOVERSION ${libmwereader_major})
 
-if(UNIX)
 
-	install(TARGETS corpus2_mwereader LIBRARY DESTINATION lib)
+	install(TARGETS corpus2_mwereader
+		LIBRARY DESTINATION lib
+		ARCHIVE DESTINATION lib
+		RUNTIME DESTINATION bin
+	)
 	#install(TARGETS c2pqtest RUNTIME DESTINATION bin)
     install(
 		DIRECTORY ./
 		DESTINATION include/libmwereader
 		FILES_MATCHING PATTERN "*.h"
 	)
-endif(UNIX)
 
 add_subdirectory(tests)
diff --git a/libwccl/CMakeLists.txt b/libwccl/CMakeLists.txt
index 6c6a9fe..4160351 100644
--- a/libwccl/CMakeLists.txt
+++ b/libwccl/CMakeLists.txt
@@ -7,11 +7,13 @@ include_directories( ${CMAKE_CURRENT_BINARY_DIR}/include/ )
 add_definitions(-DHAVE_VERSION_H)
 
 find_package(Corpus2 1.0.12 REQUIRED)
-set(LIBS ${LIBS} ${Corpus2_LIBRARIES})
+include_directories(${Corpus2_INCLUDE_DIR})
+set(LIBS ${LIBS} ${Corpus2_LIBRARY})
 
 find_package(PwrUtils 1.0.1 REQUIRED)
 set(LIBS ${LIBS} ${PwrUtils_LIBRARY})
 
+include_directories(${Boost_INCLUDE_DIR})
 link_directories(${Boost_LIBRARY_DIRS})
 set(LIBS ${LIBS} ${Boost_LIBRARIES})
 
@@ -157,7 +159,7 @@ file(GLOB_RECURSE INCS "*.h")
 if(WIN32)
 #need to explicitly specify exports/external API for win DLL
 #until that's done, build STATIC for WIN32
-	add_library(wccl STATIC ${libwccl_STAT_SRC} ${INCS})
+	add_library(wccl SHARED ${libwccl_STAT_SRC} ${INCS})
 else(WIN32)
 	add_library(wccl SHARED ${libwccl_STAT_SRC} ${INCS})
 endif(WIN32)
@@ -169,9 +171,10 @@ set_target_properties(wccl PROPERTIES
 	SOVERSION ${wccl_ver_major})
 
 
-if(UNIX)
 	install(TARGETS wccl
 		LIBRARY DESTINATION lib
+		ARCHIVE DESTINATION lib
+		RUNTIME DESTINATION bin
 	)
 	install(
 		DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
@@ -182,5 +185,4 @@ if(UNIX)
 		PATTERN "build" EXCLUDE
 		PATTERN "CMake*" EXCLUDE
 	)
-endif(UNIX)
 
diff --git a/wccl-apps/CMakeLists.txt b/wccl-apps/CMakeLists.txt
index 85550bf..14f84f3 100644
--- a/wccl-apps/CMakeLists.txt
+++ b/wccl-apps/CMakeLists.txt
@@ -18,6 +18,8 @@ set(LIBS ${LIBS} loki)
 include_directories(${CMAKE_SOURCE_DIR})
 include_directories(${wccl_BINARY_DIR}/include)
 include_directories(${Boost_INCLUDE_DIR})
+include_directories(${ICU_INCLUDE_DIR})
+include_directories(${Corpus2_INCLUDE_DIR})
 link_directories(${Boost_LIBRARY_DIRS})
 
 add_executable(wccl-features wccl-features.cpp)
@@ -29,8 +31,6 @@ target_link_libraries (wccl-rules wccl ${Boost_LIBRARIES} antlr ${LIBS})
 add_executable(wccl-parser wccl-parser.cpp)
 target_link_libraries (wccl-parser wccl ${Boost_LIBRARIES} antlr ${LIBS})
 
-if(UNIX)
 	install(TARGETS wccl-features wccl-run wccl-rules wccl-parser
 		RUNTIME DESTINATION bin
 	)
-endif(UNIX)
diff --git a/wccl-apps/wccl-rules.cpp b/wccl-apps/wccl-rules.cpp
index 0f73b64..f732dab 100644
--- a/wccl-apps/wccl-rules.cpp
+++ b/wccl-apps/wccl-rules.cpp
@@ -92,7 +92,11 @@ public:
 private:
 	const Corpus2::Tagset& tagset_;
 	Wccl::Parser parser_;
+#ifdef __unix__
 	std::vector<std::string> file_names_;
+#else
+	std::vector<std::wstring> file_names_;
+#endif
 	std::vector<boost::shared_ptr<Wccl::WcclFile> > parsed_files_;
 	bool progress_;
 	std::string search_path_;
-- 
GitLab