Skip to content
Snippets Groups Projects
Commit e021fcf5 authored by Pospelov, Gennady's avatar Pospelov, Gennady
Browse files

cmake fixes for libraries compilation under windows

parent 69b3259a
No related branches found
No related tags found
No related merge requests found
Showing
with 138 additions and 108 deletions
......@@ -8,7 +8,7 @@ project(BornAgain)
# --- General project settings ---
if(NOT BORNAGAIN_PYTHON)
set(BORNAGAIN_PYTHON ON)
# set(BORNAGAIN_PYTHON ON)
endif()
set(BORNAGAIN_APP OFF)
set(BORNAGAIN_GUI OFF)
......@@ -26,19 +26,16 @@ add_subdirectory(Core)
add_subdirectory(ThirdParty/gtest)
add_subdirectory(Tests/UnitTests/TestCore)
#if(NOT ROOT_FOUND)
add_subdirectory(ThirdParty/RootMinimizers)
#endif()
#add_subdirectory(ThirdParty/RootMathMore)
add_subdirectory(Fit)
# functional tests (cmake; make check)
add_subdirectory(Tests/FunctionalTests)
if(ROOT_FOUND AND BORNAGAIN_APP)
add_subdirectory(App)
endif()
#if(ROOT_FOUND AND BORNAGAIN_APP)
# add_subdirectory(App)
#endif()
# packaging
......
......@@ -3,7 +3,7 @@
############################################################################
set(library_name BornAgainCore)
# directories to include
# source and include files
set(include_dirs
${CMAKE_CURRENT_SOURCE_DIR}/Algorithms/inc
${CMAKE_CURRENT_SOURCE_DIR}/FormFactors/inc
......@@ -14,13 +14,12 @@ set(include_dirs
)
include_directories(${include_dirs})
# files to have in library
file(GLOB source_files
"Algorithms/src/*.cpp"
"FormFactors/src/*.cpp"
"Geometry/src/*.cpp"
"Samples/src/*.cpp"
"StandardSamples/*.cpp"
"StandardSamples/*.cpp"
"Tools/src/*.cpp"
)
......@@ -32,6 +31,10 @@ if(BORNAGAIN_PYTHON)
)
endif()
if(WIN32)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBA_CORE_BUILD_DLL")
endif()
# making library
add_library(
${library_name}
......@@ -41,6 +44,13 @@ add_library(
set_Target_properties(${library_name} PROPERTIES PREFIX ${libprefix} SUFFIX ${libsuffix})
set(${library_name}_LIBRARY_TYPE SHARED)
# external dependencies
include_directories(${Boost_INCLUDE_DIRS})
target_link_libraries(${library_name} ${Boost_LIBRARIES})
target_link_libraries(${library_name} ${FFTW_LIBRARY})
target_link_libraries(${library_name} ${GSL_LIBRARIES})
target_link_libraries(${library_name} ${PYTHON_LIBRARIES})
# copying library into lib directory for functional tests
execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/lib)
ADD_CUSTOM_COMMAND(
......@@ -51,12 +61,6 @@ ADD_CUSTOM_COMMAND(
${CMAKE_BINARY_DIR}/lib/
)
# dependencies
target_link_libraries(${library_name} ${FFTW_LIBRARY})
target_link_libraries(${library_name} ${Boost_LIBRARIES})
target_link_libraries(${library_name} ${GSL_LIBRARIES})
target_link_libraries(${library_name} ${PYTHON_LIBRARIES})
# exposing library name and list of include directories outside
set(${library_name}_INCLUDE_DIRS ${include_dirs} PARENT_SCOPE)
set(${library_name}_LIBRARY ${library_name} PARENT_SCOPE)
......
......@@ -16,6 +16,7 @@
#include "IParameterized.h"
#include "Utils.h"
#include <iostream>
IParameterized& IParameterized::operator=(const IParameterized& other)
{
......
......@@ -15,6 +15,7 @@
#include "Utils.h"
#include "Exceptions.h"
#include <iostream>
#include <iomanip>
#include <boost/regex.hpp>
#include <boost/algorithm/string/replace.hpp>
......
......@@ -16,8 +16,8 @@ execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/T
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/Tests/FunctionalTests/TestPyFit ${CMAKE_BINARY_DIR}/Tests/FunctionalTests/TestPyFit)
add_subdirectory(TestCore)
add_subdirectory(TestPyCore)
add_subdirectory(TestPyFit)
add_subdirectory(TestFit)
#add_subdirectory(TestPyCore)
#add_subdirectory(TestFit)
#add_subdirectory(TestPyFit)
......@@ -19,8 +19,15 @@ set(list_of_tests
# "MesoCrystal1"
)
include_directories(${Boost_INCLUDE_DIRS})
#link_directories(${CMAKE_BINARY_DIR}/lib)
foreach(_test ${list_of_tests})
BORNAGAIN_EXECUTABLE(${_test} LOCATIONS ${_test} EXCLUDE_FROM_ALL LIBRARIES ${BornAgainCore_LIBRARY})
# to have executable in lib directory
#set_property(TARGET ${_test} PROPERTY RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
#BORNAGAIN_ADD_TEST(${CMAKE_BINARY_DIR}/lib/${_test} INPUT_DIR ${CMAKE_BINARY_DIR}/Tests/ReferenceData/BornAgain/)
set_property(TARGET ${_test} PROPERTY INSTALL_RPATH_USE_LINK_PATH TRUE)
BORNAGAIN_ADD_TEST(${_test} INPUT_DIR ${CMAKE_BINARY_DIR}/Tests/ReferenceData/BornAgain/)
endforeach()
......@@ -9,7 +9,13 @@ set(list_of_tests
"TestFit02"
)
include_directories(${Boost_INCLUDE_DIRS})
foreach(_test ${list_of_tests})
BORNAGAIN_EXECUTABLE(${_test} LOCATIONS ${_test} EXCLUDE_FROM_ALL LIBRARIES ${BornAgainCore_LIBRARY} ${BornAgainFit_LIBRARY} ${RootMathMore_LIBRARY})
BORNAGAIN_ADD_TEST(${_test})
BORNAGAIN_EXECUTABLE(${_test} LOCATIONS ${_test} EXCLUDE_FROM_ALL LIBRARIES ${BornAgainCore_LIBRARY} ${BornAgainFit_LIBRARY})
# to have executable in lib directory
set_property(TARGET ${_test} PROPERTY RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
BORNAGAIN_ADD_TEST(${CMAKE_BINARY_DIR}/lib/${_test})
endforeach()
#set_property(TARGET *binary* PROPERTY INSTALL_RPATH_USE_LINK_PATH TRUE)
\ No newline at end of file
# -*- mode: python -*-
# Include file for program lssrc.
# Returns user-written source files.
import glob, re
def source_files(root):
fnames = []
# get all files with right extension from pwd
fnames += sorted( glob.glob( root+"*.h" ) )
fnames += sorted( glob.glob( root+"*.cpp" ) )
# remove files known to be machine generated
out = list(fnames)
for f in fnames:
if re.search( r'\.pypp\.', f ):
out.remove( f )
return out
......@@ -8,9 +8,19 @@ add_executable( TestCore main.cpp )
# dependencies
include_directories(${gtest_SOURCE_DIR}/include ${gtest_SOURCE_DIR})
target_link_libraries(TestCore gtest)
include_directories(${BornAgainCore_INCLUDE_DIRS})
target_link_libraries(TestCore ${BornAgainCore_LIBRARY})
target_link_libraries(TestCore gtest)
include_directories(${Boost_INCLUDE_DIRS})
target_link_libraries(TestCore ${Boost_LIBRARIES})
# to pick up just compiled shared dll's
#link_directories(${CMAKE_BINARY_DIR}/lib) # doesn't work
# to build executable right in lib directory to not to have problems with finding libBornAgainCore.dll under Windows
set_property(TARGET TestCore PROPERTY RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
add_test( TestCore TestCore) # TestName ExeName
......
############################################################################
# CMakeLists.txt file for building ROOT math/minuit2 package
# CMakeLists.txt file for building libRootMinimizers package
############################################################################
set(library_name RootMinimizers)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DMATH_NO_PLUGIN_MANAGER -DHAS_MINUIT2 -DR__HAS_MATHMORE")
# directories to include
# source and include files
set(include_dirs
${CMAKE_CURRENT_SOURCE_DIR}/inc
)
include_directories(${include_dirs})
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../RootMathMore/inc)
# files to have in library
file(GLOB source_files
"src/Minuit2/*.cxx"
"src/Math/*.cxx"
"src/Fit/*.cxx"
)
include_directories(${RootMathMore_INCLUDE_DIRS})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DMATH_NO_PLUGIN_MANAGER -DHAS_MINUIT2 -DR__HAS_MATHMORE")
# making library
add_library(
......@@ -31,6 +27,10 @@ add_library(
set_Target_properties(${library_name} PROPERTIES PREFIX ${libprefix} SUFFIX ${libsuffix})
set(${library_name}_LIBRARY_TYPE SHARED)
# external dependencies
include_directories(${GSL_INCLUDE_DIRS})
target_link_libraries(${library_name} ${GSL_LIBRARIES})
# copying library into lib directory for functional tests
ADD_CUSTOM_COMMAND(
TARGET ${library_name}
......@@ -44,9 +44,6 @@ ADD_CUSTOM_COMMAND(
set(${library_name}_INCLUDE_DIRS ${include_dirs} PARENT_SCOPE)
set(${library_name}_LIBRARY ${library_name} PARENT_SCOPE)
# dependencies
target_link_libraries(${library_name} ${GSL_LIBRARIES})
# -----------------------------------------------
# installation
# -----------------------------------------------
......
......@@ -11,25 +11,41 @@ if(FFTW_LIBRARY AND FFTW_INCLUDE_DIR)
set(FFTW_FIND_QUIETLY TRUE)
endif()
find_path(FFTW_INCLUDE_DIR fftw3.h
$ENV{FFTW_DIR}/include
$ENV{FFTW3} $ENV{FFTW3}/include $ENV{FFTW3}/api
/usr/local/include
/usr/include
/opt/fftw3/include
/opt/local/include
DOC "Specify the directory containing fftw3.h"
)
find_library(FFTW_LIBRARY NAMES fftw3 fftw3-3 PATHS
$ENV{FFTW_DIR}/lib
$ENV{FFTW3} $ENV{FFTW3}/lib $ENV{FFTW3}/.libs
/usr/local/lib
/usr/lib
/opt/fftw3/lib
HINTS /opt/local/lib
DOC "Specify the fttw3 library here."
)
if(NOT WIN32)
find_path(FFTW_INCLUDE_DIR fftw3.h
$ENV{FFTW_DIR}/include
$ENV{FFTW3} $ENV{FFTW3}/include $ENV{FFTW3}/api
/usr/local/include
/usr/include
/opt/fftw3/include
/opt/local/include
DOC "Specify the directory containing fftw3.h"
)
find_library(FFTW_LIBRARY NAMES fftw3 fftw3-3 PATHS
$ENV{FFTW_DIR}/lib
$ENV{FFTW3} $ENV{FFTW3}/lib $ENV{FFTW3}/.libs
/usr/local/lib
/usr/lib
/opt/fftw3/lib
HINTS /opt/local/lib
DOC "Specify the fttw3 library here."
)
else()
find_path(FFTW_INCLUDE_DIR fftw3.h
$ENV{FFTW_DIR}/include
"C:/Program Files (x86)/Libraries/fftw-3.3.3-dll32/include"
)
find_library(FFTW_LIBRARY NAMES fftw3 fftw3-3
# $ENV{FFTW_DIR}/lib
# $ENV{FFTW3} $ENV{FFTW3}/lib $ENV{FFTW3}/.libs
HINTS "C:/Program Files (x86)/Libraries/fftw-3.3.3-dll32/lib"
)
endif()
if(FFTW_INCLUDE_DIR AND FFTW_LIBRARY)
set(FFTW_FOUND 1 )
......
......@@ -25,13 +25,13 @@ if( WIN32 AND NOT CYGWIN AND NOT MSYS )
# look for headers
find_path( GSL_INCLUDE_DIR
NAMES gsl/gsl_cdf.h gsl/gsl_randist.h
PATHS $ENV{GSL_DIR}/include
PATHS $ENV{GSL_DIR}/include "C:/Program Files (x86)/GnuWin32/include"
)
if( GSL_INCLUDE_DIR )
# look for gsl library
find_library( GSL_LIBRARY
NAMES gsl
PATHS $ENV{GSL_DIR}/lib
PATHS $ENV{GSL_DIR}/lib "C:/Program Files (x86)/GnuWin32/lib"
)
if( GSL_LIBRARY )
set( GSL_INCLUDE_DIRS ${GSL_INCLUDE_DIR} )
......
......@@ -8,11 +8,12 @@ if (NUMPY_INCLUDE_DIR)
set (Numpy_FIND_QUIETLY TRUE)
endif (NUMPY_INCLUDE_DIR)
if(NOT Numpy_FIND_QUIETLY)
EXEC_PROGRAM ("${PYTHON_EXECUTABLE}"
ARGS "-c 'import numpy; print numpy.get_include()'"
ARGS "-c \"import numpy; print numpy.get_include()\""
OUTPUT_VARIABLE NUMPY_INCLUDE_DIR
RETURN_VALUE NUMPY_NOT_FOUND)
endif()
if (NUMPY_INCLUDE_DIR MATCHES "Traceback")
# Did not successfully include numpy
......
......@@ -20,6 +20,8 @@ if(BORNAGAIN_PYTHON)
list(APPEND boost_libraries_required python)
endif()
find_package(Boost 1.48.0 COMPONENTS ${boost_libraries_required} REQUIRED)
#message(STATUS "XXX ${Boost_INCLUDE_DIRS}")
#message(STATUS "XXX ${Boost_LIBRARY_DIRS}")
# --- GSL ---
if(NOT BUILTIN_GSL)
......
set(BORNAGAIN_ARCHITECTURE win32)
set(ROOT_PLATFORM win32)
math(EXPR VC_MAJOR "${MSVC_VERSION} / 100")
math(EXPR VC_MINOR "${MSVC_VERSION} % 100")
#math(EXPR VC_MAJOR "${MSVC_VERSION} / 100")
#math(EXPR VC_MINOR "${MSVC_VERSION} % 100")
set(SOEXT dll)
set(EXEEXT exe)
#set(SOEXT dll)
#set(EXEEXT exe)
set(SYSLIBS advapi32.lib)
set(XLIBS)
set(CILIBS)
set(CRYPTLIBS)
#set(SYSLIBS advapi32.lib)
#set(XLIBS)
#set(CILIBS)
#set(CRYPTLIBS)
#---Select compiler flags----------------------------------------------------------------
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -Z7")
set(CMAKE_CXX_FLAGS_RELEASE "-O2")
set(CMAKE_CXX_FLAGS_DEBUG "-Od -Z7")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -Z7")
set(CMAKE_C_FLAGS_RELEASE "-O2")
set(CMAKE_C_FLAGS_DEBUG "-Od -Z7")
if(winrtdebug)
set(BLDCXXFLAGS "-MDd -GR")
set(BLDCFLAGS "-MDd")
else()
set(BLDCXXFLAGS "-MD -GR")
set(BLDCFLAGS "-MD")
endif()
if(CMAKE_PROJECT_NAME STREQUAL ROOT)
set(CMAKE_CXX_FLAGS "-nologo -I${CMAKE_SOURCE_DIR}/build/win -FIw32pragma.h -FIsehmap.h ${BLDCXXFLAGS} -EHsc- -W3 -wd4244 -D_WIN32")
set(CMAKE_C_FLAGS "-nologo -I${CMAKE_SOURCE_DIR}/build/win -FIw32pragma.h -FIsehmap.h ${BLDCFLAGS} -EHsc- -W3 -D_WIN32")
install(FILES ${CMAKE_SOURCE_DIR}/build/win/w32pragma.h DESTINATION include COMPONENT headers)
install(FILES ${CMAKE_SOURCE_DIR}/build/win/sehmap.h DESTINATION include COMPONENT headers)
else()
set(CMAKE_CXX_FLAGS "-nologo -FIw32pragma.h -FIsehmap.h ${BLDCXXFLAGS} -EHsc- -W3 -wd4244 -D_WIN32")
set(CMAKE_C_FLAGS "-nologo -FIw32pragma.h -FIsehmap.h ${BLDCFLAGS} -EHsc- -W3 -D_WIN32")
endif()
#set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -Z7")
#set(CMAKE_CXX_FLAGS_RELEASE "-O2")
#set(CMAKE_CXX_FLAGS_DEBUG "-Od -Z7")
#set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -Z7")
#set(CMAKE_C_FLAGS_RELEASE "-O2")
#set(CMAKE_C_FLAGS_DEBUG "-Od -Z7")
#if(winrtdebug)
# set(BLDCXXFLAGS "-MDd -GR")
# set(BLDCFLAGS "-MDd")
#else()
# set(BLDCXXFLAGS "-MD -GR")
# set(BLDCFLAGS "-MD")
#endif()
#if(CMAKE_PROJECT_NAME STREQUAL ROOT)
# set(CMAKE_CXX_FLAGS "-nologo -I${CMAKE_SOURCE_DIR}/build/win -FIw32pragma.h -FIsehmap.h ${BLDCXXFLAGS} -EHsc- -W3 -wd4244 -D_WIN32")
# set(CMAKE_C_FLAGS "-nologo -I${CMAKE_SOURCE_DIR}/build/win -FIw32pragma.h -FIsehmap.h ${BLDCFLAGS} -EHsc- -W3 -D_WIN32")
# install(FILES ${CMAKE_SOURCE_DIR}/build/win/w32pragma.h DESTINATION include COMPONENT headers)
# install(FILES ${CMAKE_SOURCE_DIR}/build/win/sehmap.h DESTINATION include COMPONENT headers)
#else()
# set(CMAKE_CXX_FLAGS "-nologo -FIw32pragma.h -FIsehmap.h ${BLDCXXFLAGS} -EHsc- -W3 -wd4244 -D_WIN32")
# set(CMAKE_C_FLAGS "-nologo -FIw32pragma.h -FIsehmap.h ${BLDCFLAGS} -EHsc- -W3 -D_WIN32")
#endif()
#set(CMAKE_CXX_FLAGS "-D_WIN32")
#set(CMAKE_C_FLAGS "-nologo -FIw32pragma.h -FIsehmap.h ${BLDCFLAGS} -EHsc- -W3 -D_WIN32")
#---Set Linker flags----------------------------------------------------------------------
#set(CMAKE_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS})
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -ignore:4049,4206,4217,4221 -incremental:no")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -ignore:4049,4206,4217,4221 -incremental:no")
#set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -ignore:4049,4206,4217,4221 -incremental:no")
#set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -ignore:4049,4206,4217,4221 -incremental:no")
#set(CMAKE_C_OUTPUT_EXTENSION ".o")
#SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Dmincoming-stack-boundary=2 -DWno-unused-local-typedefs -DWno-attributes")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mincoming-stack-boundary=2 -Wno-unused-local-typedefs -Wno-attributes")
......@@ -307,7 +307,7 @@ CONFIG(BORNAGAIN_PYTHON) {
#message(pythonvers : $$pythonvers)
#message(pythoninc : $$pythonsysincdir)
#message(pythonlib : $$pythonsyslibdir)
#message(pythonnumpy: $$pythonnumpy)
message(pythonnumpy: $$pythonnumpy)
lessThan(pythonvers, 2.6): error("BornAgain requires python 2.6 or greater")
INCLUDEPATH += $$pythonsysincdir
......
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