1 vcpkg_fail_port_install(ON_TARGET "Linux" "OSX" "UWP" ON_ARCH "arm" "arm64")
3 vcpkg_check_linkage(ONLY_DYNAMIC_LIBRARY)
5 # ngspice produces self-contained DLLs
6 set(VCPKG_CRT_LINKAGE static)
8 vcpkg_from_sourceforge(
9 OUT_SOURCE_PATH SOURCE_PATH
10 REPO ngspice/ng-spice-rework
12 FILENAME "ngspice-34.tar.gz"
13 SHA512 5e90727f3f6b8675b83f71e1961d33cd498081a7f3bea5d081521f12ecb3979775159f083f84a5856233529505262c399f75d305758af51894a1245603476cf8
15 use-winbison-sharedspice.patch
16 use-winbison-vngspice.patch
19 vcpkg_find_acquire_program(BISON)
21 get_filename_component(BISON_DIR "${BISON}" DIRECTORY)
22 vcpkg_add_to_path(PREPEND "${BISON_DIR}")
24 # Sadly, vcpkg globs .libs inside install_msbuild and whines that the 47 year old SPICE format isn't a MSVC lib ;)
25 # We need to kill them off first before the source tree is copied to a tmp location by install_msbuild
27 file(REMOVE_RECURSE ${SOURCE_PATH}/contrib)
28 file(REMOVE_RECURSE ${SOURCE_PATH}/examples)
29 file(REMOVE_RECURSE ${SOURCE_PATH}/man)
30 file(REMOVE_RECURSE ${SOURCE_PATH}/tests)
32 # this builds the main dll
33 vcpkg_install_msbuild(
34 SOURCE_PATH ${SOURCE_PATH}
35 INCLUDES_SUBPATH /src/include
36 LICENSE_SUBPATH COPYING
37 # install_msbuild swaps x86 for win32(bad) if we dont force our own setting
38 PLATFORM ${TRIPLET_SYSTEM_ARCH}
39 PROJECT_SUBPATH visualc/sharedspice.sln
43 if("codemodels" IN_LIST FEATURES)
44 # vngspice generates "codemodels" to enhance simulation capabilities
45 # we cannot use install_msbuild as they output with ".cm" extensions on purpose
46 set(BUILDTREE_PATH ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET})
47 file(REMOVE_RECURSE ${BUILDTREE_PATH})
48 file(COPY ${SOURCE_PATH}/ DESTINATION ${BUILDTREE_PATH})
51 PROJECT_PATH ${BUILDTREE_PATH}/visualc/vngspice.sln
52 INCLUDES_SUBPATH /src/include
53 LICENSE_SUBPATH COPYING
54 # build_msbuild swaps x86 for win32(bad) if we dont force our own setting
55 PLATFORM ${TRIPLET_SYSTEM_ARCH}
59 # ngspice oddly has solution configs of x64 and x86 but
60 # output folders of x64 and win32
61 if(VCPKG_TARGET_ARCHITECTURE STREQUAL x64)
63 elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL x86)
66 message(FATAL_ERROR "Unsupported target architecture")
69 #put the code models in the intended location
70 file(GLOB NGSPICE_CODEMODELS_DEBUG
71 ${BUILDTREE_PATH}/visualc/codemodels/${OUT_ARCH}/Debug/*.cm
73 file(COPY ${NGSPICE_CODEMODELS_DEBUG} DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib/ngspice)
75 file(GLOB NGSPICE_CODEMODELS_RELEASE
76 ${BUILDTREE_PATH}/visualc/codemodels/${OUT_ARCH}/Release/*.cm
78 file(COPY ${NGSPICE_CODEMODELS_RELEASE} DESTINATION ${CURRENT_PACKAGES_DIR}/lib/ngspice)
81 # copy over spinit (spice init)
82 file(RENAME ${BUILDTREE_PATH}/visualc/spinit_all ${BUILDTREE_PATH}/visualc/spinit)
83 file(COPY ${BUILDTREE_PATH}/visualc/spinit DESTINATION ${CURRENT_PACKAGES_DIR}/share/ngspice)
88 # Unforunately install_msbuild isn't able to dual include directories that effectively layer
89 file(GLOB NGSPICE_INCLUDES ${SOURCE_PATH}/visualc/src/include/ngspice/*)
90 file(COPY ${NGSPICE_INCLUDES} DESTINATION ${CURRENT_PACKAGES_DIR}/include/ngspice)
92 # This gets copied by install_msbuild but should not be shared
93 file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/include/cppduals)