Skip to content
Snippets Groups Projects
Commit 98544ede authored by Ramin Yaghoubzadeh Torky's avatar Ramin Yaghoubzadeh Torky
Browse files

C++: experimental Windows compatibility changes

State: "experimental - work required".

Special build file conditions and conditionally compiled
source code sections were implemented to make ipaaca compile
under Windows. For now, the required libraries from the
prepackaged "rsx" ZIP provided by CoRLab have been hard-coded
in the Windows resolution / linking sections. The unpacked
archive is expected to reside in the common repo dir as "rsx".
parent 9b6c739e
No related branches found
No related tags found
No related merge requests found
......@@ -7,56 +7,87 @@ project (ipaaca_cpp)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DIPAACA_DEBUG_MESSAGES")
# expose the full RSB api in the headers (set only in ipaaca itself)
# !! NOTE: at the moment required in any ipaaca cpp project in Windows !!
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DIPAACA_EXPOSE_FULL_RSB_API")
# find cmake modules locally too
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/CMakeModules)
find_package(Boost COMPONENTS system filesystem thread regex REQUIRED)
link_directories(${Boost_LIBRARY_DIRS})
include_directories(${Boost_INCLUDE_DIRS})
#set(BOOSTLIBS boost_regex-mt boost_date_time-mt boost_program_options-mt boost_thread-mt boost_filesystem-mt boost_signals-mt boost_system-mt)
find_package(Protobuf REQUIRED)
link_directories(${PROTOBUF_LIBRARY_DIRS})
include_directories(${PROTOBUF_INCLUDE_DIRS})
##set(PROTOLIBS protobuf)
#set(RSBLIBS rsc rsbcore)
# add for for each new rsb version
include_directories( ${PROJECT_SOURCE_DIR}/../../deps/include/rsc0.10 )
include_directories( ${PROJECT_SOURCE_DIR}/../../deps/include/rsb0.10 )
# change for each new rsb version
if (DEFINED APPLE)
set(RSBLIBS rsc0.10 rsb.0.10)
else(DEFINED APPLE)
set(RSBLIBS ${PROJECT_SOURCE_DIR}/../../deps/lib/librsc0.10.so ${PROJECT_SOURCE_DIR}/../../deps/lib/librsb.so.0.10 )
endif(DEFINED APPLE)
#set(LIBS ${LIBS} ${BOOSTLIBS} ${PROTOLIBS} ${RSBLIBS})
#set(LIBS ${LIBS} ${PROTOLIBS} ${RSBLIBS})
set(LIBS ${LIBS} ${PROTOBUF_LIBRARY} ${Boost_LIBRARIES} ${RSBLIBS})
if (NOT DEFINED APPLE)
set(LIBS ${LIBS} uuid)
endif(NOT DEFINED APPLE)
if(WIN32) # Check if we are on Windows
if(MSVC) # Check if we are using the Visual Studio compiler
#set_target_properties(TestProject PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS")
#
# Setup section for Windows build (using precompiled rsb + deps)
#
# set BOOST_ROOT=%YOURREPODIR%\rsx\boost
# set PROTOBUF_INCLUDE_DIR=%YOURREPODIR%\rsx\protobuf\include
#
#
#find_package(Boost COMPONENTS date_time program_options system filesystem thread signals regex REQUIRED)
#link_directories(${Boost_LIBRARY_DIRS})
#include_directories(${Boost_INCLUDE_DIRS})
# overriding the determined libs to remove boost_thread (causes multiple-definition issues)
set(Boost_LIBRARIES boost_regex-vc100-mt-gd-1_54 boost_date_time-vc100-mt-gd-1_54 boost_program_options-vc100-mt-gd-1_54 boost_filesystem-vc100-mt-gd-1_54 boost_signals-vc100-mt-gd-1_54 boost_system-vc100-mt-gd-1_54)
include_directories( ${PROJECT_SOURCE_DIR}/../../../rsx/boost/include/boost-1_54 )
link_directories( ${PROJECT_SOURCE_DIR}/../../../rsx/boost/lib )
include_directories( ${PROJECT_SOURCE_DIR}/../../../rsx/RSC-0.11.0-win32/include/rsc0.11 )
include_directories( ${PROJECT_SOURCE_DIR}/../../../rsx/RSB-0.11.0-win32/include/rsb0.11 )
include_directories( ${PROJECT_SOURCE_DIR}/../../../rsx/protobuf/include )
link_directories( ${PROJECT_SOURCE_DIR}/../../../rsx/RSC-0.11.0-win32/lib )
link_directories( ${PROJECT_SOURCE_DIR}/../../../rsx/RSB-0.11.0-win32/lib )
link_directories( ${PROJECT_SOURCE_DIR}/../../../rsx/protobuf/bin )
set(RSBLIBS rsc0.11 rsb)
set(PROTOBUF_LIBRARY libprotobuf)
set(LIBS ${LIBS} rpcrt4)
# boost_regex-vc100-mt-gd-1_54.lib;boost_date_time-vc100-mt-gd-1_54.lib;boost_program_options-vc100-mt-gd-1_54.lib;boost_filesystem-vc100-mt-gd-1_54.lib;boost_signals-vc100-mt-gd-1_54.lib;boost_system-vc100-mt-gd-1_54.lib
# boost_regex-mt boost_date_time-mt boost_program_options-mt boost_thread-mt boost_filesystem-mt boost_signals-mt boost_system-mt
else()
message(SEND_ERROR "Unsupported compiler! Please build with MSVC (2010).")
endif()
else()
#
# Setup section for Linux or OS X (using 'rsb' soa project)
#
find_package(Boost COMPONENTS system filesystem thread regex REQUIRED)
link_directories(${Boost_LIBRARY_DIRS})
include_directories(${Boost_INCLUDE_DIRS})
#set(BOOSTLIBS boost_regex-mt boost_date_time-mt boost_program_options-mt boost_thread-mt boost_filesystem-mt boost_signals-mt boost_system-mt)
find_package(Protobuf REQUIRED)
link_directories(${PROTOBUF_LIBRARY_DIRS})
include_directories(${PROTOBUF_INCLUDE_DIRS})
# add for for each new rsb version
include_directories( ${PROJECT_SOURCE_DIR}/../../deps/include/rsc0.10 )
include_directories( ${PROJECT_SOURCE_DIR}/../../deps/include/rsb0.10 )
# change for each new rsb version
if (DEFINED APPLE)
set(RSBLIBS rsc0.10 rsb.0.10)
else(DEFINED APPLE)
set(RSBLIBS ${PROJECT_SOURCE_DIR}/../../deps/lib/librsc0.10.so ${PROJECT_SOURCE_DIR}/../../deps/lib/librsb.so.0.10 )
set(LIBS ${LIBS} uuid)
endif(DEFINED APPLE)
# enhance the default search paths (headers, libs ...)
set(CMAKE_PREFIX_PATH ${PROJECT_SOURCE_DIR}:/opt/local:${CMAKE_PREFIX_PATH})
# MacPorts compatibility
if (DEFINED APPLE)
message(STATUS "Adding extra options for building on Mac OS X")
set(CXX_DEFINES "${CXX_DEFINES} -D__MACOSX__")
link_directories( /opt/local/lib )
include_directories( /opt/local/include )
endif(DEFINED APPLE)
endif(WIN32)
# enhance the default search paths (headers, libs ...)
set(CMAKE_PREFIX_PATH ${PROJECT_SOURCE_DIR}:/opt/local:${CMAKE_PREFIX_PATH})
## Ace2 uses deprecated style (non-template friend functions and non-const char*s)
## We just hide the warnings here
#set(CXX_OLD_CODE_CONVENIENCE_FLAGS "-Wno-non-template-friend -Wno-write-strings")
set(LIBS ${LIBS} ${PROTOBUF_LIBRARY} ${Boost_LIBRARIES} ${RSBLIBS})
# Compiler defines copied from the old build system
set(CXX_DEFINES "-D_BSD_SOURCE -DUSE_AV -DMGC_USE_DOUBLE -DLEDA_PREFIX -D__NO_CAST_TO_LOCAL_TYPE__ -DDBGLVL=0")
if (DEFINED APPLE)
message(STATUS "Adding extra options for building on Mac OS X")
set(CXX_DEFINES "${CXX_DEFINES} -D__MACOSX__")
link_directories( /opt/local/lib )
include_directories( /opt/local/include )
endif(DEFINED APPLE)
# Combine the extra compiler flags
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX_OLD_CODE_CONVENIENCE_FLAGS} ${CXX_DEFINES}")
......
This diff is collapsed.
......@@ -31,7 +31,10 @@
*/
#include <ipaaca/ipaaca.h>
#ifndef WIN32
#include <getopt.h>
#endif
namespace ipaaca {
......@@ -114,6 +117,10 @@ void CommandLineParser::add_option(const std::string& optname, char shortoptn, b
CommandLineOptions::ptr CommandLineParser::parse(int argc, char* const* argv)
{
#ifdef WIN32
LOG_IPAACA_CONSOLE("IMPLEMENT ME: command line parsing for Windows. (req'd: getopt)")
throw NotImplementedError();
#else
int len = options.size();
struct option long_options[len+1];
int i=0;
......@@ -177,6 +184,7 @@ CommandLineOptions::ptr CommandLineParser::parse(int argc, char* const* argv)
}
ensure_defaults_in( clo );
return clo;
#endif
}
void CommandLineParser::ensure_defaults_in( CommandLineOptions::ptr clo )
......
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment