From bdfe7ec28928994b9758a5b8c52965c08338da60 Mon Sep 17 00:00:00 2001 From: Michael Tryby Date: Tue, 28 Aug 2018 11:23:30 -0400 Subject: [PATCH 1/3] Fixing build for python wrapper --- CMakeLists.txt | 3 +-- include/epanet2.h | 6 +++--- run/CMakeLists.txt | 1 - win_build/WinSDK/Makefile.bat | 8 ++++---- 4 files changed, 8 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 466e964..d0fbce6 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -75,12 +75,11 @@ source_group("Library" FILES ${EPANET_LIB_ALL}) # the shared library -add_library(epanet SHARED ${EPANET_SOURCES}) #${EPANET_API_HEADER}) +add_library(epanet SHARED ${EPANET_SOURCES}) target_include_directories(epanet PUBLIC ${PROJECT_SOURCE_DIR}/include) # create export lib so we can link against dll using Visual Studio -add_definitions(-D WITH_GENX) include(GenerateExportHeader) GENERATE_EXPORT_HEADER(epanet BASE_NAME epanet diff --git a/include/epanet2.h b/include/epanet2.h index e6d91c6..3acbc75 100644 --- a/include/epanet2.h +++ b/include/epanet2.h @@ -30,9 +30,7 @@ #define EN_API_FLOAT_TYPE float #endif -#ifdef WITH_GENX - #include "epanet_export.h" -#else +#ifdef NO_GENX // --- define WINDOWS #undef WINDOWS #ifdef _WIN32 @@ -62,6 +60,8 @@ #define DLLEXPORT #endif #endif +#else + #include "epanet_export.h" #endif diff --git a/run/CMakeLists.txt b/run/CMakeLists.txt index 53e792b..4822e95 100644 --- a/run/CMakeLists.txt +++ b/run/CMakeLists.txt @@ -19,7 +19,6 @@ source_group("CLI" FILES ${EPANET_CLI_SOURCES}) # Creates the EPANET command line executable -add_definitions(-D WITH_GENX) add_executable(runepanet ${EPANET_CLI_SOURCES}) if(NOT WIN32) target_link_libraries(runepanet LINK_PUBLIC epanet m) diff --git a/win_build/WinSDK/Makefile.bat b/win_build/WinSDK/Makefile.bat index 91ffc95..e5188c2 100644 --- a/win_build/WinSDK/Makefile.bat +++ b/win_build/WinSDK/Makefile.bat @@ -21,9 +21,9 @@ Find /i "x86" < checkOS.tmp > StringCheck.tmp If %ERRORLEVEL% == 1 ( CALL "%SDK_PATH%bin\"SetEnv.cmd /x64 /release rem : create EPANET2.DLL - cl -o epanet2.dll epanet.c util\errormanager.c hash.c hydraul.c hydcoeffs.c hydstatus.c hydsolver.c inpfile.c input1.c input2.c input3.c mempool.c output.c quality.c report.c rules.c smatrix.c genmmd.c /I ..\include /I ..\run /link /DLL + cl -o epanet2.dll /D NO_GENX epanet.c util\errormanager.c hash.c hydraul.c hydcoeffs.c hydstatus.c hydsolver.c inpfile.c input1.c input2.c input3.c mempool.c output.c quality.c report.c rules.c smatrix.c genmmd.c /I ..\include /I ..\run /link /DLL rem : create EPANET2.EXE - cl -o epanet2.exe epanet.c util\errormanager.c ..\run\main.c hash.c hydraul.c hydcoeffs.c hydstatus.c hydsolver.c inpfile.c input1.c input2.c input3.c mempool.c output.c quality.c report.c rules.c smatrix.c genmmd.c /I ..\include /I ..\run /I ..\src /link + cl -o epanet2.exe /D NO_GENX epanet.c util\errormanager.c ..\run\main.c hash.c hydraul.c hydcoeffs.c hydstatus.c hydsolver.c inpfile.c input1.c input2.c input3.c mempool.c output.c quality.c report.c rules.c smatrix.c genmmd.c /I ..\include /I ..\run /I ..\src /link md "%Build_PATH%"\64bit move /y "%SRC_PATH%"\*.dll "%Build_PATH%"\64bit move /y "%SRC_PATH%"\*.exe "%Build_PATH%"\64bit @@ -35,9 +35,9 @@ rem : 32 bit with DEF CALL "%SDK_PATH%bin\"SetEnv.cmd /x86 /release echo "32 bit with epanet2.def mapping" rem : create EPANET2.DLL -cl -o epanet2.dll epanet.c util\errormanager.c hash.c hydraul.c hydcoeffs.c hydstatus.c hydsolver.c inpfile.c input1.c input2.c input3.c mempool.c output.c quality.c report.c rules.c smatrix.c genmmd.c /I ..\include /I ..\run /link /DLL /def:..\win_build\WinSDK\epanet2.def /MAP +cl -o epanet2.dll /D NO_GENX epanet.c util\errormanager.c hash.c hydraul.c hydcoeffs.c hydstatus.c hydsolver.c inpfile.c input1.c input2.c input3.c mempool.c output.c quality.c report.c rules.c smatrix.c genmmd.c /I ..\include /I ..\run /link /DLL /def:..\win_build\WinSDK\epanet2.def /MAP rem : create EPANET2.EXE -cl -o epanet2.exe epanet.c util\errormanager.c ..\run\main.c hash.c hydraul.c hydcoeffs.c hydstatus.c hydsolver.c inpfile.c input1.c input2.c input3.c mempool.c output.c quality.c report.c rules.c smatrix.c genmmd.c /I ..\include /I ..\run /I ..\src /link +cl -o epanet2.exe /D NO_GENX epanet.c util\errormanager.c ..\run\main.c hash.c hydraul.c hydcoeffs.c hydstatus.c hydsolver.c inpfile.c input1.c input2.c input3.c mempool.c output.c quality.c report.c rules.c smatrix.c genmmd.c /I ..\include /I ..\run /I ..\src /link md "%Build_PATH%"\32bit move /y "%SRC_PATH%"\*.dll "%Build_PATH%"\32bit move /y "%SRC_PATH%"\*.exe "%Build_PATH%"\32bit From 0188b8e976b2025d068f04091e1cb66c7c9f9014 Mon Sep 17 00:00:00 2001 From: Michael Tryby Date: Tue, 28 Aug 2018 12:18:27 -0400 Subject: [PATCH 2/3] Fixing compiler warning on Travis build --- src/epanet.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/epanet.c b/src/epanet.c index 6463c08..de468cf 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -132,7 +132,7 @@ execute function x and set the error code equal to its return value. // This single global variable is used only when the library is called // in "legacy mode" with the 2.1-style API. -EN_Project *_defaultModel; +void *_defaultModel; // Local functions @@ -167,9 +167,11 @@ int DLLEXPORT ENepanet(const char *f1, const char *f2, const char *f3, void (*pv ERRCODE(EN_createproject(&_defaultModel)); ERRCODE(EN_open(_defaultModel, f1, f2, f3)); - _defaultModel->viewprog = pviewprog; - if (_defaultModel->out_files.Hydflag != USE) { + EN_Project *p = (EN_Project*)(_defaultModel); + p->viewprog = pviewprog; + + if (p->out_files.Hydflag != USE) { ERRCODE(EN_solveH(_defaultModel)); } From bb047c972f1b72bb7620580dd36d58bcd98c4a55 Mon Sep 17 00:00:00 2001 From: Michael Tryby Date: Tue, 28 Aug 2018 13:58:47 -0400 Subject: [PATCH 3/3] Fixing build error on Visual Studio 2010 --- src/epanet.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/epanet.c b/src/epanet.c index de468cf..95d99c9 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -164,11 +164,12 @@ void errorLookup(int errcode, char *errmsg, int len); int DLLEXPORT ENepanet(const char *f1, const char *f2, const char *f3, void (*pviewprog)(char *)) { int errcode = 0; + EN_Project *p = NULL; ERRCODE(EN_createproject(&_defaultModel)); ERRCODE(EN_open(_defaultModel, f1, f2, f3)); - EN_Project *p = (EN_Project*)(_defaultModel); + p = (EN_Project*)(_defaultModel); p->viewprog = pviewprog; if (p->out_files.Hydflag != USE) {