2009/7/10 William Siegrist <wsiegrist@apple.com>:
I wanted to report on recent work done to make SmartCardServices buildable outside of Apple. You can now build the Tokend and SmartCardServices projects that shipped with 10.5.6 and 10.5.7 using darwinbuild. We had to add a patch that adds includes that were needed to build with CFLite, but otherwise the source is unmodified. Darwinbuild helps by automatically putting roots in a chroot that have the private headers you need.
First, install darwinbuild ( http://darwinbuild.macosforge.org/ ), then:
# create a build environment $ mkdir ~/9J61 && cd ~/9J61 $ sudo darwinbuild -init 9J61
# build stuff $ sudo darwinbuild SmartCardServices
It worked fine until the C++ compiler is used. I have X Code 3.0 installed in my Leopard 10.5.7 system and g++-3.3 is not available. Only g++-4.0 is provided. In the BuildRoot only g++-4.0 and g++-4.2 are provided. [...] Mkdir /private/var/tmp/SmartCardServices/SmartCardServices-34733.obj/SmartCardServices.build/PCSC.build/Objects-normal/i386 /bin/mkdir -p /private/var/tmp/SmartCardServices/SmartCardServices-34733.obj/SmartCardServices.build/PCSC.build/Objects-normal/i386 CompileCplusplus /private/var/tmp/SmartCardServices/SmartCardServices-34733.obj/SmartCardServices.build/PCSC.build/Objects-normal/i386/readerstate.o src/PCSC/readerstate.cpp /usr/bin/g++-3.3 -c -Wp,-header-mapfile,/private/var/tmp/SmartCardServices/SmartCardServices-34733.obj/SmartCardServices.build/PCSC.build/PCSC.hmap -F/private/var/tmp/SmartCardServices/SmartCardServices-34733.sym/BuiltProducts -F/usr/local/SecurityPieces/Frameworks -I/private/var/tmp/SmartCardServices/SmartCardServices-34733.sym/BuiltProducts/include -I/private/var/tmp/SmartCardServices/SmartCardServices-34733.root//System/Library/Frameworks/include -I/private/var/tmp/SmartCardServices/SmartCardServices-34733.sym/BuiltProducts/include -Isrc/PCSC -arch i386 -fno-common -fpascal-strings -Os -Wmost -Wno-four-char-constants -Wno-unknown-pragmas -pipe "-fmessage-length=0" -g -pipe -no-cpp-precomp -I/private/var/tmp/SmartCardServices/SmartCardServices-34733.obj/SmartCardServices.build/PCSC.build/DerivedSources -I/private/var/tmp/SmartCardServices/SmartCardServices-34733.obj/SmartCardServices.build/PCSC.build/DerivedSources "-DNDEBUG" "-Os" "-finline-functions" "-DPCSC_DEBUG=1" "-DUSE_SYSLOG=1" "-DUSE_DAEMON=1" src/PCSC/readerstate.cpp -o /private/var/tmp/SmartCardServices/SmartCardServices-34733.obj/SmartCardServices.build/PCSC.build/Objects-normal/i386/readerstate.o BuildPhase <CopyResources>PCSC.framework /bin/sh: line 1: /usr/bin/g++-3.3: No such file or directory BuildPhase "<CopyResources>PCSC.framework" "<PCSC>PCSC.framework" echo Completed phase "<CopyResources>" for "<CopyResources>PCSC.framework" ...failed CompileCplusplus /private/var/tmp/SmartCardServices/SmartCardServices-34733.obj/SmartCardServices.build/PCSC.build/Objects-normal/i386/readerstate.o ... ** BUILD FAILED ** ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ I then tried to symlink g++-3.3 to g++-4.2 but compilation fails: CompileCplusplus /private/var/tmp/SmartCardServices/SmartCardServices-34733.obj/SmartCardServices.build/PCSC.build/Objects-normal/ppc/readerstate.o i686-apple-darwin9-g++-4.2.1: unrecognized option '-no-cpp-precomp' cc1plus: error: unrecognized command line option "-header-mapfile" ** BUILD FAILED ** ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ How am I supposed to solve this problem? Port the code/Makefiles to g++ 4.x or write a g++-3.3 wrapper that removes unsupported options? Regards, -- Dr. Ludovic Rousseau