Commit 35041ae1 authored by peastman's avatar peastman
Browse files

Preliminary support for Chrome portable native client

parent c0194484
...@@ -128,11 +128,11 @@ IF (APPLE) ...@@ -128,11 +128,11 @@ IF (APPLE)
SET (CMAKE_INSTALL_NAME_DIR "@rpath") SET (CMAKE_INSTALL_NAME_DIR "@rpath")
SET(EXTRA_COMPILE_FLAGS "-msse2 -stdlib=libc++") SET(EXTRA_COMPILE_FLAGS "-msse2 -stdlib=libc++")
ELSE (APPLE) ELSE (APPLE)
IF (MSVC OR ANDROID) IF (MSVC OR ANDROID OR PNACL)
SET(EXTRA_COMPILE_FLAGS) SET(EXTRA_COMPILE_FLAGS)
ELSE (MSVC OR ANDROID) ELSE (MSVC OR ANDROID OR PNACL)
SET(EXTRA_COMPILE_FLAGS "-msse2") SET(EXTRA_COMPILE_FLAGS "-msse2")
ENDIF (MSVC OR ANDROID) ENDIF (MSVC OR ANDROID OR PNACL)
ENDIF (APPLE) ENDIF (APPLE)
IF(UNIX AND NOT CMAKE_BUILD_TYPE) IF(UNIX AND NOT CMAKE_BUILD_TYPE)
...@@ -264,11 +264,11 @@ FOREACH(subdir ${OPENMM_SOURCE_SUBDIRS}) ...@@ -264,11 +264,11 @@ FOREACH(subdir ${OPENMM_SOURCE_SUBDIRS})
## OpenMM was previously installed there. ## OpenMM was previously installed there.
INCLUDE_DIRECTORIES(BEFORE ${CMAKE_CURRENT_SOURCE_DIR}/${subdir}/include) INCLUDE_DIRECTORIES(BEFORE ${CMAKE_CURRENT_SOURCE_DIR}/${subdir}/include)
ENDFOREACH(subdir) ENDFOREACH(subdir)
IF (ANDROID) IF (ANDROID OR PNACL)
SET_SOURCE_FILES_PROPERTIES(${CMAKE_SOURCE_DIR}/libraries/sfmt/src/SFMT.cpp PROPERTIES COMPILE_FLAGS "-UHAVE_SSE2") SET_SOURCE_FILES_PROPERTIES(${CMAKE_SOURCE_DIR}/libraries/sfmt/src/SFMT.cpp PROPERTIES COMPILE_FLAGS "-UHAVE_SSE2")
ELSE (ANDROID) ELSE (ANDROID OR PNACL)
SET_SOURCE_FILES_PROPERTIES(${CMAKE_SOURCE_DIR}/libraries/sfmt/src/SFMT.cpp PROPERTIES COMPILE_FLAGS "-DHAVE_SSE2=1") SET_SOURCE_FILES_PROPERTIES(${CMAKE_SOURCE_DIR}/libraries/sfmt/src/SFMT.cpp PROPERTIES COMPILE_FLAGS "-DHAVE_SSE2=1")
ENDIF(ANDROID) ENDIF(ANDROID OR PNACL)
# If API wrappers are being generated, and add them to the build. # If API wrappers are being generated, and add them to the build.
SET(OPENMM_BUILD_C_AND_FORTRAN_WRAPPERS ON CACHE BOOL "Build wrappers for C and Fortran") SET(OPENMM_BUILD_C_AND_FORTRAN_WRAPPERS ON CACHE BOOL "Build wrappers for C and Fortran")
...@@ -280,11 +280,15 @@ ENDIF(OPENMM_BUILD_C_AND_FORTRAN_WRAPPERS) ...@@ -280,11 +280,15 @@ ENDIF(OPENMM_BUILD_C_AND_FORTRAN_WRAPPERS)
INCLUDE_DIRECTORIES(BEFORE ${CMAKE_CURRENT_SOURCE_DIR}/src) INCLUDE_DIRECTORIES(BEFORE ${CMAKE_CURRENT_SOURCE_DIR}/src)
ADD_LIBRARY(${SHARED_TARGET} SHARED ${SOURCE_FILES} ${SOURCE_INCLUDE_FILES} ${API_ABS_INCLUDE_FILES}) SET(OPENMM_BUILD_SHARED_LIB ON CACHE BOOL "Whether to build shared OpenMM libraries")
SET_TARGET_PROPERTIES(${SHARED_TARGET} PROPERTIES LINK_FLAGS "${EXTRA_COMPILE_FLAGS}" COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} -DOPENMM_BUILDING_SHARED_LIBRARY -DLEPTON_BUILDING_SHARED_LIBRARY -DOPENMM_VALIDATE_BUILDING_SHARED_LIBRARY")
IF(WIN32) IF(OPENMM_BUILD_SHARED_LIB)
ADD_DEPENDENCIES(${SHARED_TARGET} PthreadsLibraries) ADD_LIBRARY(${SHARED_TARGET} SHARED ${SOURCE_FILES} ${SOURCE_INCLUDE_FILES} ${API_ABS_INCLUDE_FILES})
ENDIF(WIN32) SET_TARGET_PROPERTIES(${SHARED_TARGET} PROPERTIES LINK_FLAGS "${EXTRA_COMPILE_FLAGS}" COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} -DOPENMM_BUILDING_SHARED_LIBRARY -DLEPTON_BUILDING_SHARED_LIBRARY -DOPENMM_VALIDATE_BUILDING_SHARED_LIBRARY")
IF(WIN32)
ADD_DEPENDENCIES(${SHARED_TARGET} PthreadsLibraries)
ENDIF(WIN32)
ENDIF(OPENMM_BUILD_SHARED_LIB)
SET(OPENMM_BUILD_STATIC_LIB OFF CACHE BOOL "Whether to build static OpenMM libraries") SET(OPENMM_BUILD_STATIC_LIB OFF CACHE BOOL "Whether to build static OpenMM libraries")
IF(OPENMM_BUILD_STATIC_LIB) IF(OPENMM_BUILD_STATIC_LIB)
...@@ -309,11 +313,13 @@ IF(DL_LIBRARY) ...@@ -309,11 +313,13 @@ IF(DL_LIBRARY)
ENDIF(OPENMM_BUILD_STATIC_LIB) ENDIF(OPENMM_BUILD_STATIC_LIB)
MARK_AS_ADVANCED(DL_LIBRARY) MARK_AS_ADVANCED(DL_LIBRARY)
ELSE(DL_LIBRARY) ELSE(DL_LIBRARY)
IF (ANDROID) IF(OPENMM_BUILD_SHARED_LIB)
TARGET_LINK_LIBRARIES(${SHARED_TARGET} ${PTHREADS_LIB} cpufeatures) IF (ANDROID)
ELSE (ANDROID) TARGET_LINK_LIBRARIES(${SHARED_TARGET} ${PTHREADS_LIB} cpufeatures)
TARGET_LINK_LIBRARIES(${SHARED_TARGET} ${PTHREADS_LIB}) ELSE (ANDROID)
ENDIF (ANDROID) TARGET_LINK_LIBRARIES(${SHARED_TARGET} ${PTHREADS_LIB})
ENDIF (ANDROID)
ENDIF(OPENMM_BUILD_SHARED_LIB)
ENDIF(DL_LIBRARY) ENDIF(DL_LIBRARY)
ADD_SUBDIRECTORY(platforms/reference/tests) ADD_SUBDIRECTORY(platforms/reference/tests)
...@@ -434,7 +440,9 @@ IF(OPENMM_BUILD_PME_PLUGIN) ...@@ -434,7 +440,9 @@ IF(OPENMM_BUILD_PME_PLUGIN)
ADD_SUBDIRECTORY(plugins/cpupme) ADD_SUBDIRECTORY(plugins/cpupme)
ENDIF(OPENMM_BUILD_PME_PLUGIN) ENDIF(OPENMM_BUILD_PME_PLUGIN)
INSTALL_TARGETS(/lib RUNTIME_DIRECTORY /lib ${SHARED_TARGET}) IF(OPENMM_BUILD_SHARED_LIB)
INSTALL_TARGETS(/lib RUNTIME_DIRECTORY /lib ${SHARED_TARGET})
ENDIF(OPENMM_BUILD_SHARED_LIB)
IF(OPENMM_BUILD_STATIC_LIB) IF(OPENMM_BUILD_STATIC_LIB)
INSTALL_TARGETS(/lib RUNTIME_DIRECTORY /lib ${STATIC_TARGET}) INSTALL_TARGETS(/lib RUNTIME_DIRECTORY /lib ${STATIC_TARGET})
ENDIF(OPENMM_BUILD_STATIC_LIB) ENDIF(OPENMM_BUILD_STATIC_LIB)
......
...@@ -21,14 +21,8 @@ SET(CPP_EXAMPLES HelloArgon HelloSodiumChloride HelloEthane HelloWaterBox) ...@@ -21,14 +21,8 @@ SET(CPP_EXAMPLES HelloArgon HelloSodiumChloride HelloEthane HelloWaterBox)
SET(C_EXAMPLES HelloArgonInC HelloSodiumChlorideInC) SET(C_EXAMPLES HelloArgonInC HelloSodiumChlorideInC)
SET(F_EXAMPLES HelloArgonInFortran HelloSodiumChlorideInFortran) SET(F_EXAMPLES HelloArgonInFortran HelloSodiumChlorideInFortran)
SET(BUILD_TESTING_SHARED 1)
SET(BUILD_TESTING_STATIC OFF)
IF(OPENMM_BUILD_STATIC_LIB)
SET(BUILD_TESTING_STATIC ON)
ENDIF(OPENMM_BUILD_STATIC_LIB)
FOREACH(EX_ROOT ${CPP_EXAMPLES}) FOREACH(EX_ROOT ${CPP_EXAMPLES})
IF (BUILD_TESTING_SHARED) IF (OPENMM_BUILD_SHARED_LIB)
# Link with shared library # Link with shared library
ADD_EXECUTABLE(${EX_ROOT} ${EX_ROOT}.cpp) ADD_EXECUTABLE(${EX_ROOT} ${EX_ROOT}.cpp)
SET_TARGET_PROPERTIES(${EX_ROOT} SET_TARGET_PROPERTIES(${EX_ROOT}
...@@ -37,9 +31,9 @@ FOREACH(EX_ROOT ${CPP_EXAMPLES}) ...@@ -37,9 +31,9 @@ FOREACH(EX_ROOT ${CPP_EXAMPLES})
LINK_FLAGS "${EXTRA_COMPILE_FLAGS}" LINK_FLAGS "${EXTRA_COMPILE_FLAGS}"
COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS}") COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS}")
TARGET_LINK_LIBRARIES(${EX_ROOT} ${SHARED_TARGET}) TARGET_LINK_LIBRARIES(${EX_ROOT} ${SHARED_TARGET})
ENDIF (BUILD_TESTING_SHARED) ENDIF (OPENMM_BUILD_SHARED_LIB)
IF (BUILD_TESTING_STATIC) IF (OPENMM_BUILD_STATIC_LIB)
# Link with static library # Link with static library
SET(EX_STATIC ${EX_ROOT}Static) SET(EX_STATIC ${EX_ROOT}Static)
ADD_EXECUTABLE(${EX_STATIC} ${EX_ROOT}.cpp) ADD_EXECUTABLE(${EX_STATIC} ${EX_ROOT}.cpp)
...@@ -49,7 +43,7 @@ FOREACH(EX_ROOT ${CPP_EXAMPLES}) ...@@ -49,7 +43,7 @@ FOREACH(EX_ROOT ${CPP_EXAMPLES})
LINK_FLAGS "${EXTRA_COMPILE_FLAGS}" LINK_FLAGS "${EXTRA_COMPILE_FLAGS}"
COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} -DOPENMM_USE_STATIC_LIBRARIES") COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} -DOPENMM_USE_STATIC_LIBRARIES")
TARGET_LINK_LIBRARIES(${EX_STATIC} ${STATIC_TARGET}) TARGET_LINK_LIBRARIES(${EX_STATIC} ${STATIC_TARGET})
ENDIF (BUILD_TESTING_STATIC) ENDIF (OPENMM_BUILD_STATIC_LIB)
INSTALL(FILES ${EX_ROOT}.cpp DESTINATION examples) INSTALL(FILES ${EX_ROOT}.cpp DESTINATION examples)
...@@ -60,7 +54,7 @@ IF(OPENMM_BUILD_C_AND_FORTRAN_WRAPPERS) ...@@ -60,7 +54,7 @@ IF(OPENMM_BUILD_C_AND_FORTRAN_WRAPPERS)
INCLUDE_DIRECTORIES(BEFORE ${PROJECT_BINARY_DIR}/wrappers) INCLUDE_DIRECTORIES(BEFORE ${PROJECT_BINARY_DIR}/wrappers)
FOREACH(EX_ROOT ${C_EXAMPLES}) FOREACH(EX_ROOT ${C_EXAMPLES})
IF (BUILD_TESTING_SHARED) IF (OPENMM_BUILD_SHARED_LIB)
# Link with shared library # Link with shared library
# We need at least one .cpp here to get CMake to include # We need at least one .cpp here to get CMake to include
# C++ libraries on the link line. # C++ libraries on the link line.
...@@ -72,9 +66,9 @@ IF(OPENMM_BUILD_C_AND_FORTRAN_WRAPPERS) ...@@ -72,9 +66,9 @@ IF(OPENMM_BUILD_C_AND_FORTRAN_WRAPPERS)
COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS}") COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS}")
TARGET_LINK_LIBRARIES(${EX_ROOT} ${SHARED_TARGET}) TARGET_LINK_LIBRARIES(${EX_ROOT} ${SHARED_TARGET})
ADD_DEPENDENCIES(${EX_ROOT} ApiWrappers) ADD_DEPENDENCIES(${EX_ROOT} ApiWrappers)
ENDIF (BUILD_TESTING_SHARED) ENDIF (OPENMM_BUILD_SHARED_LIB)
IF (BUILD_TESTING_STATIC) IF (OPENMM_BUILD_STATIC_LIB)
# Link with static library # Link with static library
SET(EX_STATIC ${EX_ROOT}Static) SET(EX_STATIC ${EX_ROOT}Static)
# We need at least one .cpp here to get CMake to include # We need at least one .cpp here to get CMake to include
...@@ -87,7 +81,7 @@ IF(OPENMM_BUILD_C_AND_FORTRAN_WRAPPERS) ...@@ -87,7 +81,7 @@ IF(OPENMM_BUILD_C_AND_FORTRAN_WRAPPERS)
COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} -DOPENMM_USE_STATIC_LIBRARIES") COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} -DOPENMM_USE_STATIC_LIBRARIES")
TARGET_LINK_LIBRARIES(${EX_STATIC} ${STATIC_TARGET}) TARGET_LINK_LIBRARIES(${EX_STATIC} ${STATIC_TARGET})
ADD_DEPENDENCIES(${EX_STATIC} ApiWrappers) ADD_DEPENDENCIES(${EX_STATIC} ApiWrappers)
ENDIF (BUILD_TESTING_STATIC) ENDIF (OPENMM_BUILD_STATIC_LIB)
ENDFOREACH(EX_ROOT ${C_EXAMPLES}) ENDFOREACH(EX_ROOT ${C_EXAMPLES})
ENDIF(OPENMM_BUILD_C_AND_FORTRAN_WRAPPERS) ENDIF(OPENMM_BUILD_C_AND_FORTRAN_WRAPPERS)
......
...@@ -116,7 +116,6 @@ ...@@ -116,7 +116,6 @@
#endif #endif
#endif #endif
#include <memory.h>
#include <limits.h> #include <limits.h>
#ifdef SHA1_UTILITY_FUNCTIONS #ifdef SHA1_UTILITY_FUNCTIONS
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
/* $Id: arithmetic_ansi.h 65 2010-01-29 12:19:16Z naoaki $ */ /* $Id: arithmetic_ansi.h 65 2010-01-29 12:19:16Z naoaki $ */
#include <stdlib.h> #include <stdlib.h>
#include <memory.h> #include <string.h>
#if LBFGS_FLOAT == 32 && LBFGS_IEEE_FLOAT #if LBFGS_FLOAT == 32 && LBFGS_IEEE_FLOAT
#define fsigndiff(x, y) (((*(uint32_t*)(x)) ^ (*(uint32_t*)(y))) & 0x80000000U) #define fsigndiff(x, y) (((*(uint32_t*)(x)) ^ (*(uint32_t*)(y))) & 0x80000000U)
......
...@@ -38,7 +38,9 @@ ...@@ -38,7 +38,9 @@
#include <windows.h> #include <windows.h>
#include <sstream> #include <sstream>
#else #else
#include <dlfcn.h> #ifndef __PNACL__
#include <dlfcn.h>
#endif
#include <dirent.h> #include <dirent.h>
#include <cstdlib> #include <cstdlib>
#endif #endif
...@@ -187,13 +189,18 @@ static void initializePlugins(vector<HMODULE>& plugins) { ...@@ -187,13 +189,18 @@ static void initializePlugins(vector<HMODULE>& plugins) {
} }
#else #else
static void* loadOneLibrary(const string& file) { static void* loadOneLibrary(const string& file) {
#ifdef __PNACL__
throw OpenMMException("Loading dynamic libraries is not supported on PNaCl");
#else
void *handle = dlopen(file.c_str(), RTLD_LAZY | RTLD_GLOBAL); void *handle = dlopen(file.c_str(), RTLD_LAZY | RTLD_GLOBAL);
if (handle == NULL) if (handle == NULL)
throw OpenMMException("Error loading library "+file+": "+dlerror()); throw OpenMMException("Error loading library "+file+": "+dlerror());
return handle; return handle;
#endif
} }
static void initializePlugins(vector<void*>& plugins) { static void initializePlugins(vector<void*>& plugins) {
#ifndef __PNACL__
for (int i = 0; i < (int) plugins.size(); i++) { for (int i = 0; i < (int) plugins.size(); i++) {
void (*init)(); void (*init)();
*(void **)(&init) = dlsym(plugins[i], "registerPlatforms"); *(void **)(&init) = dlsym(plugins[i], "registerPlatforms");
...@@ -206,6 +213,7 @@ static void initializePlugins(vector<void*>& plugins) { ...@@ -206,6 +213,7 @@ static void initializePlugins(vector<void*>& plugins) {
if (init != NULL) if (init != NULL)
(*init)(); (*init)();
} }
#endif
} }
#endif #endif
......
...@@ -50,7 +50,6 @@ ...@@ -50,7 +50,6 @@
#ifdef __ANDROID__ #ifdef __ANDROID__
#include <cpu-features.h> #include <cpu-features.h>
#else #else
#include <dlfcn.h>
#include <unistd.h> #include <unistd.h>
#endif #endif
#endif #endif
...@@ -93,7 +92,7 @@ static int getNumProcessors() { ...@@ -93,7 +92,7 @@ static int getNumProcessors() {
#ifdef _WIN32 #ifdef _WIN32
#define cpuid __cpuid #define cpuid __cpuid
#else #else
#ifndef __ANDROID__ #if !defined(__ANDROID__) && !defined(__PNACL__)
static void cpuid(int cpuInfo[4], int infoType){ static void cpuid(int cpuInfo[4], int infoType){
#ifdef __LP64__ #ifdef __LP64__
__asm__ __volatile__ ( __asm__ __volatile__ (
......
...@@ -9,9 +9,12 @@ FILE(GLOB TEST_PROGS "*Test*.cpp") ...@@ -9,9 +9,12 @@ FILE(GLOB TEST_PROGS "*Test*.cpp")
FOREACH(TEST_PROG ${TEST_PROGS}) FOREACH(TEST_PROG ${TEST_PROGS})
GET_FILENAME_COMPONENT(TEST_ROOT ${TEST_PROG} NAME_WE) GET_FILENAME_COMPONENT(TEST_ROOT ${TEST_PROG} NAME_WE)
# All tests use shared libraries
ADD_EXECUTABLE(${TEST_ROOT} ${TEST_PROG}) ADD_EXECUTABLE(${TEST_ROOT} ${TEST_PROG})
TARGET_LINK_LIBRARIES(${TEST_ROOT} ${SHARED_TARGET}) IF (OPENMM_BUILD_SHARED_LIB)
TARGET_LINK_LIBRARIES(${TEST_ROOT} ${SHARED_TARGET})
ELSE (OPENMM_BUILD_SHARED_LIB)
TARGET_LINK_LIBRARIES(${TEST_ROOT} ${STATIC_TARGET})
ENDIF (OPENMM_BUILD_SHARED_LIB)
SET_TARGET_PROPERTIES(${TEST_ROOT} PROPERTIES LINK_FLAGS "${EXTRA_COMPILE_FLAGS}" COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS}") SET_TARGET_PROPERTIES(${TEST_ROOT} PROPERTIES LINK_FLAGS "${EXTRA_COMPILE_FLAGS}" COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS}")
ADD_TEST(${TEST_ROOT} ${EXECUTABLE_OUTPUT_PATH}/${TEST_ROOT}) ADD_TEST(${TEST_ROOT} ${EXECUTABLE_OUTPUT_PATH}/${TEST_ROOT})
......
...@@ -79,8 +79,8 @@ void testMasslessParticle() { ...@@ -79,8 +79,8 @@ void testMasslessParticle() {
for (int i = 0; i < 1000; ++i) { for (int i = 0; i < 1000; ++i) {
State state = context.getState(State::Positions | State::Velocities | State::Forces); State state = context.getState(State::Positions | State::Velocities | State::Forces);
double time = state.getTime(); double time = state.getTime();
ASSERT_EQUAL_VEC(Vec3(), state.getPositions()[0], 0.0); ASSERT_EQUAL_VEC(Vec3(0, 0, 0), state.getPositions()[0], 0.0);
ASSERT_EQUAL_VEC(Vec3(), state.getVelocities()[0], 0.0); ASSERT_EQUAL_VEC(Vec3(0, 0, 0), state.getVelocities()[0], 0.0);
ASSERT_EQUAL_VEC(Vec3(cos(time), sin(time), 0), state.getPositions()[1], 0.01); ASSERT_EQUAL_VEC(Vec3(cos(time), sin(time), 0), state.getPositions()[1], 0.01);
ASSERT_EQUAL_VEC(Vec3(-sin(time), cos(time), 0), state.getVelocities()[1], 0.01); ASSERT_EQUAL_VEC(Vec3(-sin(time), cos(time), 0), state.getVelocities()[1], 0.01);
integrator.step(1); integrator.step(1);
......
...@@ -9,9 +9,12 @@ FILE(GLOB TEST_PROGS "*Test*.cpp") ...@@ -9,9 +9,12 @@ FILE(GLOB TEST_PROGS "*Test*.cpp")
FOREACH(TEST_PROG ${TEST_PROGS}) FOREACH(TEST_PROG ${TEST_PROGS})
GET_FILENAME_COMPONENT(TEST_ROOT ${TEST_PROG} NAME_WE) GET_FILENAME_COMPONENT(TEST_ROOT ${TEST_PROG} NAME_WE)
# All tests use shared libraries
ADD_EXECUTABLE(${TEST_ROOT} ${TEST_PROG}) ADD_EXECUTABLE(${TEST_ROOT} ${TEST_PROG})
TARGET_LINK_LIBRARIES(${TEST_ROOT} ${SHARED_TARGET}) IF (OPENMM_BUILD_SHARED_LIB)
TARGET_LINK_LIBRARIES(${TEST_ROOT} ${SHARED_TARGET})
ELSE (OPENMM_BUILD_SHARED_LIB)
TARGET_LINK_LIBRARIES(${TEST_ROOT} ${STATIC_TARGET})
ENDIF (OPENMM_BUILD_SHARED_LIB)
SET_TARGET_PROPERTIES(${TEST_ROOT} PROPERTIES LINK_FLAGS "${EXTRA_COMPILE_FLAGS}" COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS}") SET_TARGET_PROPERTIES(${TEST_ROOT} PROPERTIES LINK_FLAGS "${EXTRA_COMPILE_FLAGS}" COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS}")
ADD_TEST(${TEST_ROOT} ${EXECUTABLE_OUTPUT_PATH}/${TEST_ROOT}) ADD_TEST(${TEST_ROOT} ${EXECUTABLE_OUTPUT_PATH}/${TEST_ROOT})
......
...@@ -84,7 +84,7 @@ void testSerialization() { ...@@ -84,7 +84,7 @@ void testSerialization() {
ASSERT_EQUAL(c2, c2); ASSERT_EQUAL(c2, c2);
ASSERT_EQUAL(d2, d2); ASSERT_EQUAL(d2, d2);
ASSERT_EQUAL(params1.size(), params2.size()); ASSERT_EQUAL(params1.size(), params2.size());
for (int j = 0; j < params1.size(); j++) for (int j = 0; j < (int) params1.size(); j++)
ASSERT_EQUAL(params1[j], params2[j]); ASSERT_EQUAL(params1[j], params2[j]);
} }
} }
......
...@@ -151,16 +151,16 @@ void testSerializeCustomIntegrator() { ...@@ -151,16 +151,16 @@ void testSerializeCustomIntegrator() {
XmlSerializer::serialize<Integrator>(intg, "CustomIntegrator", ss); XmlSerializer::serialize<Integrator>(intg, "CustomIntegrator", ss);
CustomIntegrator *intg2 = dynamic_cast<CustomIntegrator*>(XmlSerializer::deserialize<Integrator>(ss)); CustomIntegrator *intg2 = dynamic_cast<CustomIntegrator*>(XmlSerializer::deserialize<Integrator>(ss));
ASSERT_EQUAL(intg->getNumGlobalVariables(), intg->getNumGlobalVariables()); ASSERT_EQUAL(intg->getNumGlobalVariables(), intg->getNumGlobalVariables());
for(int i=0; i < intg->getNumGlobalVariables(); i++) { for (int i = 0; i < intg->getNumGlobalVariables(); i++) {
ASSERT_EQUAL(intg->getGlobalVariable(i), intg2->getGlobalVariable(i)); ASSERT_EQUAL(intg->getGlobalVariable(i), intg2->getGlobalVariable(i));
ASSERT_EQUAL(intg->getGlobalVariableName(i), intg2->getGlobalVariableName(i)); ASSERT_EQUAL(intg->getGlobalVariableName(i), intg2->getGlobalVariableName(i));
} }
ASSERT_EQUAL(intg->getNumPerDofVariables(), intg2->getNumPerDofVariables()); ASSERT_EQUAL(intg->getNumPerDofVariables(), intg2->getNumPerDofVariables());
for(int i=0; i<intg->getNumPerDofVariables(); i++) { for(int i = 0; i < intg->getNumPerDofVariables(); i++) {
vector<Vec3> vars1; intg->getPerDofVariable(i, vars1); vector<Vec3> vars1; intg->getPerDofVariable(i, vars1);
vector<Vec3> vars2; intg2->getPerDofVariable(i, vars2); vector<Vec3> vars2; intg2->getPerDofVariable(i, vars2);
ASSERT_EQUAL(vars1.size(),vars2.size()); ASSERT_EQUAL(vars1.size(),vars2.size());
for(int j=0; j<vars1.size(); j++) { for (int j = 0; j < (int) vars1.size(); j++) {
ASSERT_EQUAL(vars1[j][0], vars2[j][0]); ASSERT_EQUAL(vars1[j][0], vars2[j][0]);
ASSERT_EQUAL(vars1[j][1], vars2[j][1]); ASSERT_EQUAL(vars1[j][1], vars2[j][1]);
ASSERT_EQUAL(vars1[j][2], vars2[j][2]); ASSERT_EQUAL(vars1[j][2], vars2[j][2]);
......
...@@ -71,11 +71,11 @@ void testSerialization() { ...@@ -71,11 +71,11 @@ void testSerialization() {
// Set positions, velocities, forces // Set positions, velocities, forces
vector<Vec3> positions; vector<Vec3> positions;
for(int i=0;i<numParticles;i++) { for (int i = 0; i < numParticles; i++) {
positions.push_back(Vec3( ((float) rand()/(float) RAND_MAX)*6.2, ((float) rand()/(float) RAND_MAX)*6.2, ((float) rand()/(float) RAND_MAX)*6.2)); positions.push_back(Vec3( ((float) rand()/(float) RAND_MAX)*6.2, ((float) rand()/(float) RAND_MAX)*6.2, ((float) rand()/(float) RAND_MAX)*6.2));
} }
vector<Vec3> velocities; vector<Vec3> velocities;
for(int i=0;i<numParticles;i++) { for (int i = 0; i < numParticles; i++) {
velocities.push_back(Vec3( ((float) rand()/(float) RAND_MAX)*6.2, ((float) rand()/(float) RAND_MAX)*6.2, ((float) rand()/(float) RAND_MAX)*6.2)); velocities.push_back(Vec3( ((float) rand()/(float) RAND_MAX)*6.2, ((float) rand()/(float) RAND_MAX)*6.2, ((float) rand()/(float) RAND_MAX)*6.2));
} }
...@@ -95,19 +95,19 @@ void testSerialization() { ...@@ -95,19 +95,19 @@ void testSerialization() {
vector<Vec3> pos2 = s2.getPositions(); vector<Vec3> pos2 = s2.getPositions();
ASSERT_EQUAL(pos1.size(), pos2.size()); ASSERT_EQUAL(pos1.size(), pos2.size());
ASSERT_EQUAL(pos1.size(), positions.size()); ASSERT_EQUAL(pos1.size(), positions.size());
for(int i=0; i<pos1.size(); i++) { for (int i = 0; i < (int) pos1.size(); i++) {
ASSERT_EQUAL_VEC(pos1[i],pos2[i],0); ASSERT_EQUAL_VEC(pos1[i],pos2[i],0);
} }
vector<Vec3> vel1 = s1.getVelocities(); vector<Vec3> vel1 = s1.getVelocities();
vector<Vec3> vel2 = s2.getVelocities(); vector<Vec3> vel2 = s2.getVelocities();
ASSERT_EQUAL(vel1.size(), vel2.size()); ASSERT_EQUAL(vel1.size(), vel2.size());
for(int i=0; i<pos1.size(); i++) { for (int i = 0; i < (int) pos1.size(); i++) {
ASSERT_EQUAL_VEC(vel1[i],vel2[i],0); ASSERT_EQUAL_VEC(vel1[i],vel2[i],0);
} }
vector<Vec3> forces1 = s1.getForces(); vector<Vec3> forces1 = s1.getForces();
vector<Vec3> forces2 = s2.getForces(); vector<Vec3> forces2 = s2.getForces();
ASSERT_EQUAL(forces1.size(), forces2.size()); ASSERT_EQUAL(forces1.size(), forces2.size());
for(int i=0; i<pos1.size(); i++) { for (int i = 0; i < (int) pos1.size(); i++) {
ASSERT_EQUAL_VEC(forces1[i],forces2[i],0); ASSERT_EQUAL_VEC(forces1[i],forces2[i],0);
} }
Vec3 a1,a2,a3,b1,b2,b3; Vec3 a1,a2,a3,b1,b2,b3;
...@@ -128,7 +128,7 @@ void testSerialization() { ...@@ -128,7 +128,7 @@ void testSerialization() {
map<string, double>::const_iterator it1=p1.begin(); map<string, double>::const_iterator it1=p1.begin();
map<string, double>::const_iterator it2=p2.begin(); map<string, double>::const_iterator it2=p2.begin();
//maps are ordered, so iterators should be in the same order. //maps are ordered, so iterators should be in the same order.
for(it1=p1.begin(); it1!=p1.end(); it1++, it2++) { for (it1 = p1.begin(); it1 != p1.end(); it1++, it2++) {
assert((it1->first).compare(it2->first) == 0); assert((it1->first).compare(it2->first) == 0);
ASSERT_EQUAL(it1->second, it2->second); ASSERT_EQUAL(it1->second, it2->second);
} }
......
...@@ -8,9 +8,12 @@ ENABLE_TESTING() ...@@ -8,9 +8,12 @@ ENABLE_TESTING()
FILE(GLOB TEST_PROGS "*Test*.cpp") FILE(GLOB TEST_PROGS "*Test*.cpp")
FOREACH(TEST_PROG ${TEST_PROGS}) FOREACH(TEST_PROG ${TEST_PROGS})
GET_FILENAME_COMPONENT(TEST_ROOT ${TEST_PROG} NAME_WE) GET_FILENAME_COMPONENT(TEST_ROOT ${TEST_PROG} NAME_WE)
# All tests use shared library only
ADD_EXECUTABLE(${TEST_ROOT} ${TEST_PROG}) ADD_EXECUTABLE(${TEST_ROOT} ${TEST_PROG})
TARGET_LINK_LIBRARIES(${TEST_ROOT} ${SHARED_TARGET}) IF (OPENMM_BUILD_SHARED_LIB)
TARGET_LINK_LIBRARIES(${TEST_ROOT} ${SHARED_TARGET})
ELSE (OPENMM_BUILD_SHARED_LIB)
TARGET_LINK_LIBRARIES(${TEST_ROOT} ${STATIC_TARGET})
ENDIF (OPENMM_BUILD_SHARED_LIB)
SET_TARGET_PROPERTIES(${TEST_ROOT} PROPERTIES LINK_FLAGS "${EXTRA_COMPILE_FLAGS}" COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS}") SET_TARGET_PROPERTIES(${TEST_ROOT} PROPERTIES LINK_FLAGS "${EXTRA_COMPILE_FLAGS}" COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS}")
ADD_TEST(${TEST_ROOT} ${EXECUTABLE_OUTPUT_PATH}/${TEST_ROOT}) ADD_TEST(${TEST_ROOT} ${EXECUTABLE_OUTPUT_PATH}/${TEST_ROOT})
ENDFOREACH(TEST_PROG ${TEST_PROGS}) ENDFOREACH(TEST_PROG ${TEST_PROGS})
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment