Commit 15c96aba authored by fasiondog's avatar fasiondog
Browse files

update xmake for macosx

parent 63e033cb
Showing with 139 additions and 73 deletions
+139 -73
......@@ -25,3 +25,5 @@ hikyuu.code-workspace
/build
*~
.DS_Store
hikyuu_cpp/hikyuu/version.h
......@@ -4,8 +4,8 @@ os:
- linux
compiler:
- gcc
- clang
- g++
- clang++
before_install:
- sudo apt-get install -y libhdf5-dev libhdf5-serial-dev
......
......@@ -3,7 +3,9 @@ target("hikyuu")
-- set version for release
set_config_header("version.h", {prefix = "HKU"})
add_deps("hikyuu_utils")
if is_plat("windows") then
add_cxflags("-wd4819")
add_cxflags("-wd4251") --template dll export warning
......@@ -15,26 +17,35 @@ target("hikyuu")
add_rpathdirs("$ORIGIN")
add_cxflags("-Wno-sign-compare")
end
add_deps("hikyuu_utils")
if is_plat("windows") then
add_defines("SQLITE_API=__declspec(dllimport)")
add_defines("HKU_API=__declspec(dllexport)")
add_defines("PY_VERSION_HEX=0x03000000")
end
if is_plat("windows") then
add_deps("sqlite3")
add_packages("hdf5")
add_packages("mysql")
else
if is_arch("x86_64") then
end
if is_plat("linux") then
add_includedirs("/usr/include/hdf5")
add_includedirs("/usr/include/hdf5/serial")
if is_arch("x86_64") then
add_linkdirs("/usr/lib/x86_64-linux-gnu")
add_linkdirs("/usr/lib/x86_64-linux-gnu/hdf5/serial")
end
add_includedirs("/usr/include/hdf5")
add_includedirs("/usr/include/hdf5/serial")
end
if is_plat("macosx") then
add_linkdirs("/usr/local/opt/iconv/lib")
add_links("iconv")
add_includedirs("/usr/local/opt/hdf5/include")
add_linkdirs("/usr/local/opt/hdf5/lib")
add_includedirs("/usr/local/opt/mysql-client/include")
add_linkdirs("/usr/local/opt/mysql-client/lib")
end
if is_plat("linuxe") or is_plat("macosx") then
add_links("sqlite3")
add_links("hdf5")
add_links("hdf5_hl")
......
......@@ -25,13 +25,8 @@
#include <iconv.h>
#endif
#if defined(BOOST_MSVC)
#include <hdf5.h>
#include <hdf5_hl.h>
#else
#include <hdf5/serial/hdf5.h>
#include <hdf5/serial/hdf5_hl.h>
#endif
#include "sqlite3callback.h"
#include "importdata.h"
......
......@@ -16,11 +16,10 @@
#if defined(BOOST_MSVC)
#pragma warning(disable:4251)
#include <H5Cpp.h>
#else
#include <hdf5/serial/H5Cpp.h>
#endif
#include <H5Cpp.h>
#if !(defined(WIN32) && defined(_WIN32))
#include <sys/time.h>
#endif
......
......@@ -20,8 +20,18 @@ target("importdata")
add_linkdirs("/usr/lib/x86_64-linux-gnu")
add_linkdirs("/usr/lib/x86_64-linux-gnu/hdf5/serial")
end
add_includedirs("/usr/include/hdf5")
add_includedirs("/usr/include/hdf5/serial")
add_includedirs("/usr/include/hdf5") -- for ubuntu 14.04
add_includedirs("/usr/include/hdf5/serial") -- for ubuntu 16.04
end
if is_plat("macosx") then
add_includedirs("/usr/local/opt/hdf5/include")
add_linkdirs("/usr/local/opt/hdf5/lib")
add_linkdirs("/usr/local/opt/iconv/lib")
add_links("iconv")
end
if is_plat("linux") or is_plat("macosx") then
add_links("sqlite3")
add_links("hdf5")
add_links("hdf5_hl")
......
......@@ -31,7 +31,7 @@ target("unit-test")
add_deps("hikyuu")
if is_plat("linux") then
if is_plat("linux") or is_plat("macosx") then
add_links("boost_unit_test_framework")
--add_links("boost_system")
add_shflags("-Wl,-rpath=$ORIGIN", "-Wl,-rpath=$ORIGIN/../lib")
......
......@@ -25,10 +25,13 @@ target("_hikyuu")
add_deps("hikyuu")
if is_plat("windows") then
set_filename("_hikyuu.pyd")
else
end
if is_plat("linux") then
set_filename("_hikyuu.so")
end
if is_plat("macosx") then
set_filename("_hikyuu.dylib")
end
add_files("./*.cpp")
target("_indicator")
......@@ -36,9 +39,13 @@ target("_indicator")
add_deps("hikyuu")
if is_plat("windows") then
set_filename("_indicator.pyd")
else
end
if is_plat("linux") then
set_filename("_indicator.so")
end
if is_plat("macosx") then
set_filename("_indicator.dylib")
end
add_files("./indicator/*.cpp")
target("_trade_manage")
......@@ -46,8 +53,12 @@ target("_trade_manage")
add_deps("hikyuu")
if is_plat("windows") then
set_filename("_trade_manage.pyd")
else
set_filename("_trade_manage.so")
end
if is_plat("linux") then
set_filename("_trade_manage.os")
end
if is_plat("macosx") then
set_filename("_trade_manage.dylib")
end
add_files("./trade_manage/*.cpp")
......@@ -56,8 +67,12 @@ target("_trade_sys")
add_deps("hikyuu")
if is_plat("windows") then
set_filename("_trade_sys.pyd")
else
end
if is_plat("linux") then
set_filename("_trade_sys.so")
end
if is_plat("macosx") then
set_filename("_trade_sys.dylib")
end
add_files("./trade_sys/*.cpp")
......@@ -66,8 +81,12 @@ target("_trade_instance")
add_deps("hikyuu")
if is_plat("windows") then
set_filename("_trade_instance.pyd")
else
end
if is_plat("linux") then
set_filename("_trade_instance.so")
end
if is_plat("macosx") then
set_filename("_trade_instance.dylib")
end
add_files("./trade_instance/*.cpp")
......@@ -76,8 +95,12 @@ target("_data_driver")
add_deps("hikyuu")
if is_plat("windows") then
set_filename("_data_driver.pyd")
else
end
if is_plat("linux") then
set_filename("_data_driver.so")
end
if is_plat("macosx") then
set_filename("_data_driver.dylib")
end
add_files("./data_driver/*.cpp")
......@@ -5,28 +5,34 @@ function main(target)
pydir = path.directory(pydir)
target:add("includedirs", pydir .. "/include")
target:add("linkdirs", pydir .. "/libs")
else
target:add("rpathdirs", "$ORIGIN", "$ORIGIN/lib", "$ORIGIN/../lib")
return
end
if is_plat("macosx") then
local ldflag = os.iorun("python3-config --ldflag")
local libs = os.iorun("python3-config --libs")
target:add("shflags", ldflag, libs)
end
target:add("rpathdirs", "$ORIGIN", "$ORIGIN/lib", "$ORIGIN/../lib")
-- get python include directory.
local pydir = os.iorun("python3-config --includes")
local lcPos = string.find(pydir,"\n")
pydir = (string.sub(pydir,1,lcPos-1))
target:add("cxflags", pydir)
-- get python include directory.
local pydir = os.iorun("python3-config --includes")
local lcPos = string.find(pydir,"\n")
pydir = (string.sub(pydir,1,lcPos-1))
target:add("cxflags", pydir)
-- get suffix configure for link libboost_pythonX.so
local suffix = get_config("boost_python_suffix")
if suffix == nil then
raise("You need to config --boost_python_suffix specify libboost_python suffix")
end
-- get suffix configure for link libboost_pythonX.so
local suffix = get_config("boost_python_suffix")
if suffix == nil then
raise("You need to config --boost_python_suffix specify libboost_python suffix")
end
suffix = string.upper(suffix)
if suffix == "3X" then
local ver = os.iorun("python3 --version")
local boost_python_lib = "boost_python"..string.sub(ver,8,8)..string.sub(ver,10,10)
target:add("links", boost_python_lib)
else
target:add("links", "boost_python"..suffix)
end
suffix = string.upper(suffix)
if suffix == "3X" then
local ver = os.iorun("python3 --version")
local boost_python_lib = "boost_python"..string.sub(ver,8,8)..string.sub(ver,10,10)
target:add("links", boost_python_lib)
else
target:add("links", "boost_python"..suffix)
end
end
......@@ -15,7 +15,11 @@ function main(target)
if is_plat("windows") then
os.exec("xcopy /S /Q /Y /I hikyuu_python " .. installdir)
else
end
if is_plat("linux") then
os.exec("cp -f -r -T hikyuu_python " .. installdir)
end
if is_plat("macosx") then
os.exec("cp -f -r hikyuu_python " .. installdir)
end
end
\ No newline at end of file
......@@ -27,23 +27,30 @@ function main(target)
if is_plat("windows") then
os.cp("$(env BOOST_LIB)/boost_date_time*.dll", "$(buildir)/$(mode)/$(plat)/$(arch)/lib/")
os.cp("$(env BOOST_LIB)/boost_filesystem*.dll", "$(buildir)/$(mode)/$(plat)/$(arch)/lib/")
--os.cp("$(env BOOST_LIB)/boost_python3*.dll", "$(buildir)/$(mode)/$(plat)/$(arch)/lib/")
os.cp("$(env BOOST_LIB)/boost_serialization*.dll", "$(buildir)/$(mode)/$(plat)/$(arch)/lib/")
os.cp("$(env BOOST_LIB)/boost_system*.dll", "$(buildir)/$(mode)/$(plat)/$(arch)/lib/")
os.cp("$(env BOOST_LIB)/boost_unit_test_framework*.dll", "$(buildir)/$(mode)/$(plat)/$(arch)/lib/")
os.cp("$(projectdir)/hikyuu_extern_libs/pkg/hdf5.pkg/lib/release/$(plat)/$(arch)/*.dll","$(buildir)/$(mode)/$(plat)/$(arch)/lib/")
os.cp("$(projectdir)/hikyuu_extern_libs/pkg/mysql.pkg/lib/release/$(plat)/$(arch)/*.dll", "$(buildir)/$(mode)/$(plat)/$(arch)/lib/")
else
local boostlib = val("env BOOST_LIB")
if boostlib ~= "" then
os.cp("$(env BOOST_LIB)/libboost_date_time*.so.*", "$(buildir)/$(mode)/$(plat)/$(arch)/lib/")
os.cp("$(env BOOST_LIB)/libboost_filesystem*.so.*", "$(buildir)/$(mode)/$(plat)/$(arch)/lib/")
--os.cp("$(env BOOST_LIB)/libboost_python3*.so.*", "$(buildir)/$(mode)/$(plat)/$(arch)/lib/")
os.cp("$(env BOOST_LIB)/libboost_serialization*.so.*", "$(buildir)/$(mode)/$(plat)/$(arch)/lib/")
os.cp("$(env BOOST_LIB)/libboost_system*.so.*", "$(buildir)/$(mode)/$(plat)/$(arch)/lib/")
os.cp("$(env BOOST_LIB)/libboost_unit_test_framework*.so.*", "$(buildir)/$(mode)/$(plat)/$(arch)/lib/")
end
end
if is_plat("linux") then
os.cp("$(env BOOST_LIB)/libboost_date_time*.so.*", "$(buildir)/$(mode)/$(plat)/$(arch)/lib/")
os.cp("$(env BOOST_LIB)/libboost_filesystem*.so.*", "$(buildir)/$(mode)/$(plat)/$(arch)/lib/")
os.cp("$(env BOOST_LIB)/libboost_serialization*.so.*", "$(buildir)/$(mode)/$(plat)/$(arch)/lib/")
os.cp("$(env BOOST_LIB)/libboost_system*.so.*", "$(buildir)/$(mode)/$(plat)/$(arch)/lib/")
os.cp("$(env BOOST_LIB)/libboost_unit_test_framework*.so.*", "$(buildir)/$(mode)/$(plat)/$(arch)/lib/")
end
if is_plat("macosx") then
os.cp("$(env BOOST_LIB)/libboost_date_time*.dylib", "$(buildir)/$(mode)/$(plat)/$(arch)/lib/")
os.cp("$(env BOOST_LIB)/libboost_filesystem*.dylib", "$(buildir)/$(mode)/$(plat)/$(arch)/lib/")
os.cp("$(env BOOST_LIB)/libboost_serialization*.dylib", "$(buildir)/$(mode)/$(plat)/$(arch)/lib/")
os.cp("$(env BOOST_LIB)/libboost_system*.dylib", "$(buildir)/$(mode)/$(plat)/$(arch)/lib/")
os.cp("$(env BOOST_LIB)/libboost_unit_test_framework*.dylib", "$(buildir)/$(mode)/$(plat)/$(arch)/lib/")
-- macOSX下unit_test_framework依赖于timer和chrono
os.cp("$(env BOOST_LIB)/libboost_timer*.dylib", "$(buildir)/$(mode)/$(plat)/$(arch)/lib/")
os.cp("$(env BOOST_LIB)/libboost_chrono*.dylib", "$(buildir)/$(mode)/$(plat)/$(arch)/lib/")
end
end
\ No newline at end of file
......@@ -49,16 +49,25 @@ function main(target)
os.cp("$(env BOOST_LIB)/boost_system*.dll", installdir .. "/")
os.cp("$(projectdir)/hikyuu_extern_libs/pkg/hdf5.pkg/lib/release/$(plat)/$(arch)/*.dll", installdir .. "/")
os.cp("$(projectdir)/hikyuu_extern_libs/pkg/mysql.pkg/lib/release/$(plat)/$(arch)/*.dll", installdir .. "/")
return
end
if is_plat("linux") then
os.cp("$(env BOOST_LIB)/libboost_date_time*.so.*", installdir .. "/")
os.cp("$(env BOOST_LIB)/libboost_filesystem*.so.*", installdir .. "/")
os.cp("$(env BOOST_LIB)/libboost_python3*.so.*", installdir .. "/")
os.cp("$(env BOOST_LIB)/libboost_serialization*.so.*", installdir .. "/")
os.cp("$(env BOOST_LIB)/libboost_system*.so.*", installdir .. "/")
return
end
else
local boostlib = val("env BOOST_LIB")
if boostlib ~= "" then
os.cp("$(env BOOST_LIB)/libboost_date_time*.so.*", installdir .. "/")
os.cp("$(env BOOST_LIB)/libboost_filesystem*.so.*", installdir .. "/")
os.cp("$(env BOOST_LIB)/libboost_python3*.so.*", installdir .. "/")
os.cp("$(env BOOST_LIB)/libboost_serialization*.so.*", installdir .. "/")
os.cp("$(env BOOST_LIB)/libboost_system*.so.*", installdir .. "/")
end
if is_plat("macosx") then
os.cp("$(env BOOST_LIB)/libboost_date_time*.dylib", installdir .. "/")
os.cp("$(env BOOST_LIB)/libboost_filesystem*.dylib", installdir .. "/")
os.cp("$(env BOOST_LIB)/libboost_python3*.dylib", installdir .. "/")
os.cp("$(env BOOST_LIB)/libboost_serialization*.dylib", installdir .. "/")
os.cp("$(env BOOST_LIB)/libboost_system*.dylib", installdir .. "/")
return
end
end
end
Supports Markdown
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